Alarm Manager Example

前端 未结 10 1421
情话喂你
情话喂你 2020-11-21 05:12

I want to implement a schedule function in my project. So I Googled for an Alarm manager program but I can`t find any examples.

Can anyone help me with a basic alar

10条回答
  •  不思量自难忘°
    2020-11-21 05:49

    This is working code. It wakes CPU every 10 minutes until the phone turns off.

    Add to Manifest.xml:

    ...
    
    ...
    
    ...
    

    Code in your class:

    package yourPackage;
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    import android.os.PowerManager;
    import android.widget.Toast;
    
    public class Alarm extends BroadcastReceiver 
    {    
        @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, "Alarm !!!!!!!!!!", Toast.LENGTH_LONG).show(); // For example
    
            wl.release();
        }
    
        public void setAlarm(Context context)
        {
            AlarmManager am =( AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
            Intent i = new Intent(context, Alarm.class);
            PendingIntent pi = PendingIntent.getBroadcast(context, 0, i, 0);
            am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 1000 * 60 * 10, pi); // Millisec * Second * Minute
        }
    
        public void cancelAlarm(Context context)
        {
            Intent intent = new Intent(context, Alarm.class);
            PendingIntent sender = PendingIntent.getBroadcast(context, 0, intent, 0);
            AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
            alarmManager.cancel(sender);
        }
    }
    

    Set Alarm from Service:

    package yourPackage;
    
    import android.app.Service;
    import android.content.Context;
    import android.content.Intent;
    import android.os.IBinder;
    
    public class YourService extends Service
    {
        Alarm alarm = new Alarm();
        public void onCreate()
        {
            super.onCreate();       
        }
    
        @Override
        public int onStartCommand(Intent intent, int flags, int startId) 
        {
            alarm.setAlarm(this);
            return START_STICKY;
        }
    
       @Override        
       public void onStart(Intent intent, int startId)
        {
            alarm.setAlarm(this);
        }
    
        @Override
        public IBinder onBind(Intent intent) 
        {
            return null;
        }
    }
    

    If you want to set alarm repeating at phone boot time:

    Add permission and the service to Manifest.xml:

    
    ...
    
        
            
        
    
    ...
    
    
    

    And create a new class:

    package yourPackage;
    
    import android.content.BroadcastReceiver;
    import android.content.Context;
    import android.content.Intent;
    
    public class AutoStart extends BroadcastReceiver
    {   
        Alarm alarm = new Alarm();
        @Override
        public void onReceive(Context context, Intent intent)
        {   
            if (intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
            {
                alarm.setAlarm(context);
            }
        }
    }
    

提交回复
热议问题