2017-01-10 1 views
1

Est-il possible que lorsque je règle une minuterie, elle fonctionne encore même si je redémarre le téléphone? Comme le réveil, il est toujours là quand je redémarre le téléphone. Si c'est possible, puis-je obtenir le code? J'en ai vraiment besoin.Application de minuterie Android

+0

L'alarme fonctionne parce que ce ajouter un CalendarEvent, pour ce que vous voulez atteindre, vous devez calculer lorsque la minuterie doit se poursuit selon le moment où il a commencé et ajouter un événement, consultez [ici] (https: //developer.android.com/training/scheduling/alarms.html) –

Répondre

2

Oui, vous pouvez le faire, mais actuellement je n'ai pas le code. Je peux vous donner des pas pour créer le vôtre.

étapes

1- Créer CountDownTimer dans votre activité

  // 10 minutes Timer And 1 Second Delay 
      new CountDownTimer(10*30*1000, 1000) { 

       public void onTick(long millisUntilFinished) { 
        // save `millisUntilFinished` to sharedpreferences 
       } 

       public void onFinish() { 

        // clear sharedPreferences when it finished 
        //and do whatever you want after finishing the timer here 
       } 
      }.start(); 

2- Créer un BroadCastReceiver avec BOOT_COMPLETED action recommencer à zéro la minuterie avec votre dernière valeur enregistrée de Sharedpreferences

@Override 
public void onReceive(Context context, Intent intent) { 

    //again Start your timer from here 

    // Get millisUntilFinished from SharedPreference 
    millisUntilFinished = Long.parseLong(getLastSavedValueFromSharedPreferences()); 

    new CountDownTimer(millisUntilFinished, 1000) { 

     public void onTick(long millisUntilFinished) { 
      // save `millisUntilFinished` to sharedpreferences 
     } 

     public void onFinish() { 

      // clear sharedPreferences when it finished 
      // and do whatever you want after finishing the timer here 
     } 
    }.start(); 
} 

Voilà.

EDIT

Étape 1 Créer une TestActivity.java classe

public class TestActivity extends AppCompatActivity { 

    SharedPreferences sharedPreferences; 
    SharedPreferences.Editor editor; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.test_work); 

     sharedPreferences = getSharedPreferences("MySharedPref", MODE_PRIVATE); 
     editor = sharedPreferences.edit(); 

     startTimer(); 

    } 

    private void startTimer() { 

     // 10 min Timer 
     new CountDownTimer(10*60*1000, 1000) 
     { 
      @Override 
      public void onTick(long millisUntilFinished) { 

       editor.putLong("millisUntilFinished", millisUntilFinished); 
       editor.commit(); 
      } 

      @Override 
      public void onFinish() { 

       editor.clear(); 
       // Do your work Here 
      } 
     }.start(); 
    } 
} 

Étape 2 Créer BootReceiver.java classe

public class BootReceiver extends BroadcastReceiver { 

    SharedPreferences sharedPreferences; 
    SharedPreferences.Editor editor; 

    @Override 
    public void onReceive(final Context context, final Intent intent) { 

     sharedPreferences = context.getSharedPreferences("MySharedPref", context.MODE_PRIVATE); 
     editor = sharedPreferences.edit(); 

     startTimer(); 
    } 

    private void startTimer() { 

     // get remaining time from sharedPreferences 
     long millisUntilFinished = sharedPreferences.getLong("millisUntilFinished", 0); 

     // 10 min Timer 
     new CountDownTimer(millisUntilFinished, 1000) 
     { 
      @Override 
      public void onTick(long millisUntilFinished) { 

       editor.putLong("millisUntilFinished", millisUntilFinished); 
       editor.commit(); 
      } 

      @Override 
      public void onFinish() { 

       editor.clear(); 
       // Do your work Here 
      } 
     }.start(); 
    } 
} 

Étape 3 Enregistrez votre récepteur dans AndroidManifest.xml fichier

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

<!--Register your BootReceiver here--> 
    <receiver android:name=".receiver.BootReceiver"> 
     <intent-filter > 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
     </intent-filter> 
    </receiver> 

Voici le code complet. Vous avez juste besoin de suivre les étapes.

+0

Le minuteur continuera-t-il à fonctionner même si je redémarre le téléphone? Comme par exemple j'ai 10 minutes en minuterie alors qu'il ne me reste plus que 5 minutes puis je redémarre le téléphone. Le chronomètre sera-t-il toujours à 5 minutes? –

+0

Et pouvez-vous élaborer sur la partie sharedPreferences? C'est la seule chose que je n'ai pas comprise du code. –

+0

@GlennMichaelTorregosa Oui, lorsque vous redémarrez le téléphone, votre récepteur de diffusion appelle et votre minuterie redémarre. Et sharedPreferences est le système de stockage de données. cela vous permet de stocker et d'accéder à vos données. –