• 假期学习记录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();
        }
    }
      


    这样子就可以了

  • 相关阅读:
    ejs
    appcan.slider.js探索
    js语法重点
    canvas动画
    canvas绘图
    Bootstrap 表单
    模态框
    Node.js EventEmitter(事件队列)
    Node.js 事件循环
    react native 页面跳转
  • 原文地址:https://www.cnblogs.com/837634902why/p/12319347.html
Copyright © 2020-2023  润新知