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
Répondre
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.
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? –
Et pouvez-vous élaborer sur la partie sharedPreferences? C'est la seule chose que je n'ai pas comprise du code. –
@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. –
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) –