zoukankan      html  css  js  c++  java
  • 假期学习记录15(Android定时提醒的实现)


    首先新建一个广播接收器

     
       //闹铃时间到了会进入这个广播,这个时候可以做一些该做的业务。 
        public class AlarmReceiver extends BroadcastReceiver {  
              
            @Override  
            public void onReceive(Context context, Intent intent) {  
            Toast.makeText(context, "闹铃响了", Toast.LENGTH_LONG).show();  
            }  
          
        }  

    然后我们要在AndroidManifest注册这个接收器

    <receiver android:name="com.example.alarmmanagerdemo.AlarmReceiver" android:process=":remote">  

    最后activity代码


    package com.example.lastgps;
    
    import android.app.AlarmManager;
    import android.app.PendingIntent;
    import android.content.Intent;
    
    import android.os.SystemClock;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.widget.Toast;
    
    import com.example.lastgps.myclass.AlarmReceiver;
    
    import java.util.Calendar;
    import java.util.TimeZone;
    
    public class AlarmTest extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_alarm_test);
            Intent intent = new Intent(AlarmTest.this, AlarmReceiver.class);
            PendingIntent sender = PendingIntent.getBroadcast(AlarmTest.this, 0, intent, 0);
    
            long firstTime = SystemClock.elapsedRealtime(); // 开机之后到现在的运行时间(包括睡眠时间)
            long systemTime = System.currentTimeMillis();
    
            Calendar calendar = Calendar.getInstance();
            calendar.setTimeInMillis(System.currentTimeMillis());
            // 这里时区需要设置一下,不然会有8个小时的时间差
            calendar.setTimeZone(TimeZone.getTimeZone("GMT+8"));
            //设置闹钟,时分秒毫秒
            calendar.set(Calendar.MINUTE, 46);
            calendar.set(Calendar.HOUR_OF_DAY, 9);
            calendar.set(Calendar.SECOND, 0);
            calendar.set(Calendar.MILLISECOND, 0);
            // 选择的定时时间
            long selectTime = calendar.getTimeInMillis();
            // 如果当前时间大于设置的时间,那么就从第二天的设定时间开始
            if(systemTime > selectTime) {
                Toast.makeText(AlarmTest.this,"设置的时间小于当前时间", Toast.LENGTH_SHORT).show();
                calendar.add(Calendar.DAY_OF_MONTH, 1);
                selectTime = calendar.getTimeInMillis();
            }
            // 计算现在时间到设定时间的时间差
            long time = selectTime - systemTime;
            firstTime += time;
            // 进行闹铃注册
            AlarmManager manager = (AlarmManager)getSystemService(ALARM_SERVICE);
            manager.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP,
                    firstTime, AlarmManager.INTERVAL_DAY, sender);
            Log.i("AlarmTest","time ==== " + time +", selectTime ===== "
                    + selectTime + ", systemTime ==== " + systemTime +", firstTime === " + firstTime);
            Toast.makeText(AlarmTest.this,"设置重复闹铃成功! ", Toast.LENGTH_LONG).show();
        }
    }
      


    这样子就可以了

  • 相关阅读:
    Generate Parentheses (Java)
    leetcode15
    MD5
    leetcode409
    Vue第一个简单的例子
    SpringBoot和Ajax通信
    如何使用安装光盘为本机创建yum repository
    Less known Solaris features: svccfg editprop (ZT)
    Rename Oracle Managed File (OMF) datafiles in ASM(ZT)
    跨数据文件删除flashback database
  • 原文地址:https://www.cnblogs.com/837634902why/p/12319347.html
Copyright © 2011-2022 走看看