扣丁学堂——AlarmManager

来源:互联网 发布:网络接口都有哪些 编辑:程序博客网 时间:2024/04/19 11:30

一丶源码见本文

二丶课程讲解及代码






MainActivity

ublic class Main1217Activity extends AppCompatActivity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main1217);    }    public  void  startSet(View v){        //获取到了系统的闹钟服务        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);        //触发闹钟的时间        long triggerTime =  System.currentTimeMillis()+3000;        Intent intent  = new Intent(this,Main2Activity2.class);// 可以get 广播,服务,activity 类型        PendingIntent op = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT);        //只会执行一次的闹钟        am.set(AlarmManager.RTC, triggerTime, op); //op : 启动这个闹钟的操作,也就是干什么事.    }    public  void startAlarmClick(View v){        //获取到了系统的闹钟服务        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);        //触发闹钟的时间        long triggerTime =  System.currentTimeMillis()+3000;        Intent intent  = new Intent(this,MyReceiverR.class);// 可以get 广播,服务,activity 类型        PendingIntent op = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);        //只会执行一次的闹钟        am.set(AlarmManager.RTC,triggerTime,op); //op : 启动这个闹钟的操作,也就是干什么事.        //指定时间重复执行       // am.setRepeating(AlarmManager.RTC, triggerTime, 2000, op); //2000 : 间隔时间,多长时间重复一次        //am.cancel(op);//取消操作    }}

Activity2

public class Main2Activity2 extends AppCompatActivity {    MediaPlayer mp; //媒体播放对象    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //唤醒屏幕        Window win = getWindow();        win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD|                WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);        win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON|                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);        setContentView(R.layout.activity_main22);        mp = new MediaPlayer();        try {            mp.setDataSource(this, Uri.parse("/storage/extSdCard/qqmusic/song/a.mp3"));            mp.prepare(); //状态,预备状态        } catch (IOException e) {            e.printStackTrace();        }        mp.setLooping(true); //循环        mp.start();  //启动        alarmDialog();  //弹出对话框    }    @Override    protected void onDestroy() {        super.onDestroy();        if(mp !=null){            if(mp.isPlaying()){                mp.stop();            }            mp.release(); //释放资源        }    }    public  void alarmDialog(){        AlertDialog.Builder builder = new AlertDialog.Builder(this);        builder.setMessage("起床了"); //弹出框提示内容        //弹出框按钮        builder.setPositiveButton("再来一次", new DialogInterface.OnClickListener(){            @Override            public void onClick(DialogInterface dialog, int which) {                alarm();//由闹钟服务来自动 启动对话窗口                finish();//关闭窗口            }        });        builder.setNegativeButton("关闭了", new DialogInterface.OnClickListener() {            @Override            public void onClick(DialogInterface dialog, int which) {                finish();            }        });        builder.show();    }    private  void alarm(){        //获取到了系统的闹钟服务        AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);        //触发闹钟的时间        long triggerTime =  System.currentTimeMillis()+5000;        Intent intent  = new Intent(this,Main2Activity2.class);        PendingIntent op = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);        //只会执行一次的闹钟        am.set(AlarmManager.RTC, triggerTime, op); //op : 启动这个闹钟的操作,也就是干什么事.    }}

Receive

public class MyReceiverR extends BroadcastReceiver {    public MyReceiverR() {    }    @Override    public void onReceive(Context context, Intent intent) {        Toast.makeText(context, "闹钟", Toast.LENGTH_SHORT).show();    }}


0 0
原创粉丝点击