Sziasztok!
Segítsetek nekem, mert nem értem mi zajlik..
Szeretném ha az appom újraindítaná a telefont minden nap adott óra perckor.
A reboot működik, meg van oldva, nem ez a kérdés, hanem az időzítés.
Azt olvastam, hogy erre AlarmManager a megoldás, meg is csináltam neki a reciever osztályt az egyik példa alapján ami konkrétan a google dokumentációban van.
Az időzítést beállítom (on boot reciever-ben), időben elkapja az Alarm reciever, újraindítja a telefonomat. Innentől kezdve a telefon a megadott 5 perc helyett (tesztelés miatt ennyi most az intervallum nem egy nap), kb 1 percenként rebootol, nem várja meg a kezdőidőponttól eltelő öt percet. Miért?
Itt a kód:
public class RebootReceiver extends BroadcastReceiver {
private AlarmManager alarmMgr;
private PendingIntent alarmIntent;
@Override
public void onReceive(Context context, Intent intent)
{
//PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
//PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
//wl.acquire();
// Put here YOUR code.
Toast.makeText(context, "REBOOTING 14", Toast.LENGTH_LONG).show(); // For example
CancelAlarm(context);
Log.e("TAG","AUTO REBOOT NOW!");
try {
Process proc = Runtime.getRuntime().exec(new String[] { "su", "-c", "reboot" });
proc.waitFor();
} catch (Exception ex) {
Log.e("TAG", "Could not reboot", ex);
}
}
public void SetTimer(Context context)
{
alarmMgr = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, RebootReceiver.class);
alarmIntent = PendingIntent.getBroadcast(context, 0, intent, 0);
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 15);
calendar.set(Calendar.MINUTE, 8);
CancelAlarm(context);
//alarmMgr.cancel(alarmIntent);
//AUTO REBOOT
//AlarmManager.INTERVAL_DAY
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),1000*60*5, alarmIntent);
Log.e("TAG","AUTO REBOOT BEÁLLÍTVA!");
}
public void CancelAlarm(Context context)
{
Intent intent = new Intent(context, RebootReceiver.class);
PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
alarmManager.cancel(sender);
}
}
Itt van beállítva az időzítés a bootrecieverben:
public class BootReciever extends BroadcastReceiver
{
RebootReceiver Reboot = new RebootReceiver();
@Override
public void onReceive(Context context, Intent intent) {
Log.i("TAG","BOOT Received");
String action = intent.getAction();
if(action.equalsIgnoreCase("android.intent.action.BOOT_COMPLETED"))
{
//Reboot időzítése
Reboot.SetTimer(context);
Intent myIntent=new Intent(context,com.example.thedoor.MainActivity.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(myIntent);
}
}
}
PH Konfigom: Gigabyte GA-H97M-D3H, i7 4790K,GTX 960, Seasonic SS-620GM