Aula 29/05 (AlarmManager)

41
PROGRAMAÇÃO PARA DISPOSITIVOS MÓVEIS AlarmManager

Transcript of Aula 29/05 (AlarmManager)

Page 1: Aula 29/05 (AlarmManager)

PROGRAMAÇÃO PARADISPOSITIVOS MÓVEIS

AlarmManager

Page 2: Aula 29/05 (AlarmManager)

Objetivos da aula AlarmManager

Page 3: Aula 29/05 (AlarmManager)

Qual a maneira mais correta para disparar uma intent as 15:00:30 de cada dia?

Page 4: Aula 29/05 (AlarmManager)

Android nos facilita com AlarmManager...

Page 5: Aula 29/05 (AlarmManager)
Page 6: Aula 29/05 (AlarmManager)
Page 7: Aula 29/05 (AlarmManager)

Podemos predizer o futuro...

Page 8: Aula 29/05 (AlarmManager)

Podemos disparar uma Intent na data e hora desejada.

Page 9: Aula 29/05 (AlarmManager)

Depois que ativamos o alarme, podemos até esquecê-lo.

Page 10: Aula 29/05 (AlarmManager)

O alarme só será cancelado por nós ou caso o device seja reiniciado.

Page 11: Aula 29/05 (AlarmManager)
Page 12: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

}

Page 13: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { }

}

Page 14: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); }

}

Page 15: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0); }

}

Page 16: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); }

}

Page 17: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis(); }

}

Page 18: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); }

}

Page 19: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, agendamentoEmMilis, pendingIntent); }

}

Page 20: Aula 29/05 (AlarmManager)

O AlarmManager irá disparar a Intent “ALARME_TESTE” após 10 segundos. Neste período nosso aplicativo pode ter sido finalizado. Justamente por isso,

precisaremos de um BroadcastReceiver...

Page 21: Aula 29/05 (AlarmManager)

public class ReceberAlarme extends BroadcastReceiver {

@Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Alarme recebido!", Toast.LENGTH_LONG).show(); }

}

Page 22: Aula 29/05 (AlarmManager)

public class ReceberAlarme extends BroadcastReceiver {

@Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Alarme recebido!", Toast.LENGTH_LONG).show(); }

}

Page 23: Aula 29/05 (AlarmManager)

public class ReceberAlarme extends BroadcastReceiver {

@Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "Alarme recebido!", Toast.LENGTH_LONG).show(); }

}

Page 24: Aula 29/05 (AlarmManager)

Registramos o BroadcastReceiver aonde?

Page 25: Aula 29/05 (AlarmManager)

<?xml version="1.0" encoding="UTF-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.senai.alarmmanager“ android:versionCode="1“>

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >

<activity android:name=".ExemploAlarme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ReceberAlarme"> <intent-filter> <action android:name="ALARME_TESTE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application>

</manifest>

Page 26: Aula 29/05 (AlarmManager)

<?xml version="1.0" encoding="UTF-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.senai.alarmmanager“ android:versionCode="1“>

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >

<activity android:name=".ExemploAlarme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ReceberAlarme"> <intent-filter> <action android:name="ALARME_TESTE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application>

</manifest>

Page 27: Aula 29/05 (AlarmManager)

<?xml version="1.0" encoding="UTF-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.senai.alarmmanager“ android:versionCode="1“>

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >

<activity android:name=".ExemploAlarme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ReceberAlarme"> <intent-filter> <action android:name="ALARME_TESTE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application>

</manifest>

Page 28: Aula 29/05 (AlarmManager)

<?xml version="1.0" encoding="UTF-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="br.senai.alarmmanager“ android:versionCode="1“>

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="19" />

<application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" >

<activity android:name=".ExemploAlarme"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <receiver android:name=".ReceberAlarme"> <intent-filter> <action android:name="ALARME_TESTE" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> </application>

</manifest>

Page 29: Aula 29/05 (AlarmManager)

Como cancelar um alarme?

Page 30: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, agendamentoEmMilis, pendingIntent); }

protected void onDestroy() { super.onDestroy(); }

}

Page 31: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, agendamentoEmMilis, pendingIntent); }

protected void onDestroy() { super.onDestroy();

Intent it = new Intent("ALARME_TESTE"); }

}

Page 32: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, agendamentoEmMilis, pendingIntent); }

protected void onDestroy() { super.onDestroy();

Intent it = new Intent("ALARME_TESTE"); PendingIntent pi = PendingIntent.getBroadcast(this, 0, it, 0); }

}

Page 33: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, agendamentoEmMilis, pendingIntent); }

protected void onDestroy() { super.onDestroy();

Intent it = new Intent("ALARME_TESTE"); PendingIntent pi = PendingIntent.getBroadcast(this, 0, it, 0); AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE); }

}

Page 34: Aula 29/05 (AlarmManager)

public class ExemploAlarme extends Activity {

public void onCreate(Bundle savedInstanceState) { ... agendarPara10Segundos(); }

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long agendamentoEmMilis = calendario.getTimeInMillis();

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmManager.set(AlarmManager.RTC_WAKEUP, agendamentoEmMilis, pendingIntent); }

protected void onDestroy() { super.onDestroy();

Intent it = new Intent("ALARME_TESTE"); PendingIntent pi = PendingIntent.getBroadcast(this, 0, it, 0); AlarmManager manager = (AlarmManager) getSystemService(ALARM_SERVICE); manager.cancel(pi); }

}

Page 35: Aula 29/05 (AlarmManager)

E para repetir o alarme a cada 30 segundos?

Page 36: Aula 29/05 (AlarmManager)

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pi = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long emMilis = calendario.getTimeInMillis();

int trintaSegundos = 30 * 1000;

AlarmManager alarmmanager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmmanager.set(AlarmManager.RTC_WAKEUP, emMilis, pi);}

Page 37: Aula 29/05 (AlarmManager)

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pi = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long emMilis = calendario.getTimeInMillis();

int trintaSegundos = 30 * 1000;

AlarmManager alarmmanager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmmanager.setRepeating(AlarmManager.RTC_WAKEUP, emMilis, pi);}

Page 38: Aula 29/05 (AlarmManager)

private void agendarPara10Segundos() { Intent intencao = new Intent("ALARME_TESTE"); PendingIntent pi = PendingIntent.getBroadcast(this, 0, intencao, 0);

Calendar calendario = Calendar.getInstance(); calendario.setTimeInMillis(System.currentTimeMillis()); calendario.add(Calendar.SECOND, 10); long emMilis = calendario.getTimeInMillis();

int trintaSegundos = 30 * 1000;

AlarmManager alarmmanager = (AlarmManager) getSystemService(ALARM_SERVICE); alarmmanager.setRepeating(AlarmManager.RTC_WAKEUP, emMilis, trintaSegundos, pi);}

Page 39: Aula 29/05 (AlarmManager)

Não utilize AlarmManager para simplesmente fazer uma Thread dormir por um determinado momento. Para isso, utilize Handler.

Page 40: Aula 29/05 (AlarmManager)
Page 41: Aula 29/05 (AlarmManager)

Até a próxima!