Hirdetés

Új hozzászólás Aktív témák

  • pittbaba

    aktív tag

    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);
    }
    }
    }

Új hozzászólás Aktív témák