Alarm Manager Example

前端 未结 10 1395
情话喂你
情话喂你 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:51

    This code will help you to make a repeating alarm. The repeating time can set by you.

    activity_main.xml

    
         
    
        
    
        
    
    
            
        
    
        
    
        
    
        
    
       
    
    
        

    MainActivity.java

    public class MainActivity extends Activity {
        int hr = 0;
        int min = 0;
        int sec = 0;
        int result = 1;
    
        AlarmManager alarmManager;
        PendingIntent pendingIntent;
        BroadcastReceiver mReceiver;
    
        EditText ethr;
        EditText etmin;
        EditText etsec;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            ethr = (EditText) findViewById(R.id.ethr);
            etmin = (EditText) findViewById(R.id.etmin);
            etsec = (EditText) findViewById(R.id.etsec);
            RegisterAlarmBroadcast();
        } 
    
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.main, menu);
            return true;
        }
    
        @Override
        protected void onDestroy() {
            unregisterReceiver(mReceiver);
            super.onDestroy();
        }
    
        public void onClickSetAlarm(View v) {
            String shr = ethr.getText().toString();
            String smin = etmin.getText().toString();
            String ssec = etsec.getText().toString();
    
            if(shr.equals("")) 
                hr = 0;
            else {
                hr = Integer.parseInt(ethr.getText().toString());
                hr=hr*60*60*1000;
            }
    
            if(smin.equals(""))
                min = 0;
            else {
                min = Integer.parseInt(etmin.getText().toString());
                min = min*60*1000;
            }
    
            if(ssec.equals(""))
                sec = 0;
            else {
                 sec = Integer.parseInt(etsec.getText().toString());
                 sec = sec * 1000;
            }
            result = hr+min+sec;
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), result , pendingIntent); 
        }
    
        private void RegisterAlarmBroadcast() {
            mReceiver = new BroadcastReceiver() {
                // private static final String TAG = "Alarm Example Receiver";
                @Override
                public void onReceive(Context context, Intent intent) {
                    Toast.makeText(context, "Alarm time has been reached", Toast.LENGTH_LONG).show();
                }
            };
    
            registerReceiver(mReceiver, new IntentFilter("sample"));
            pendingIntent = PendingIntent.getBroadcast(this, 0, new Intent("sample"), 0);
            alarmManager = (AlarmManager)(this.getSystemService(Context.ALARM_SERVICE));
        }
    
        private void UnregisterAlarmBroadcast() {
            alarmManager.cancel(pendingIntent); 
            getBaseContext().unregisterReceiver(mReceiver);
        }
    }
    

    If you need alarm only for a single time then replace

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), result , pendingIntent);
    

    with

     alarmManager.set( AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + result , pendingIntent );
    

提交回复
热议问题