JavascriptProva

lunedì 2 aprile 2018

Realizzare una sveglia con AlarmManager RTC

Obiettivo: realizzare una sveglia con il pulsante per accenderla e quello per spegnerla.

Cerchiamo di studiare la sveglia.
Innanzitutto abbiamo un pulsante per l'attivazione e per la disattivazione.
Per il momento creo un pulsante per l'attivazione e uno diverso per la disattivazione.

Il codice è questo:
public class MainActivity extends AppCompatActivity {

    AlarmManager alarmManager;
    Intent intent;
    PendingIntent pendingIntent;
    Button button;
    Button button2;
    Calendar calendar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        button=(Button)findViewById(R.id.button);
        button2=(Button)findViewById(R.id.button2);

        intent=new Intent(getApplicationContext(),MyService.class);
        pendingIntent=PendingIntent.getService(getApplicationContext(),0,intent,0);
        alarmManager=(AlarmManager)getSystemService(ALARM_SERVICE);

        calendar=Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY,23);
        calendar.set(Calendar.MINUTE,0);
        calendar.set(Calendar.SECOND,0);

        button.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                alarmManager.set(AlarmManager.RTC_WAKEUP,calendar.getTimeInMillis(),pendingIntent);
            }
        });

        button2.setOnClickListener(new View.OnClickListener(){

            @Override
            public void onClick(View view) {
                if(alarmManager!=null){
                    alarmManager.cancel(pendingIntent);
                    if(pendingIntent!=null)pendingIntent.cancel();
                }
            }
        });
e funziona per una volta, non ripetibile.
La normale sveglia funziona per una volta, ma si presenta con un pulsante che consente l'opzione di rinviare o di spegnere del tutto la sveglia. Per spegnerla bisogna zittire la suoneria e disattivare alarmManager, due cose che penso di poter fare.
Per rinviare, si dovrebbe programmare a breve scadenza con un AlarmManager di tipo ELAPSED il riattacco della suoneria.

Nessun commento:

Posta un commento