bear_9912
bear_9912
  • 发布:2016-04-14 11:37
  • 更新:2022-04-29 15:36
  • 阅读:6443

闹铃提醒

分类:Native.js

项目需要,做了一个闹铃提醒的例子。


<!DOCTYPE html>  
<html>  

    <head>  
        <meta charset="utf-8">  
        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  
        <title>TTimer</title>  
        <script src="js/mui.min.js"></script>  
        <link href="http://ask.dcloud.net.cn/css/mui.min.css" rel="stylesheet" />  
    </head>  

    <body style="padding: 40px;">  
        <button id="alarm"> 插入闹铃</button>  
    </body>  
    <script type="text/javascript" charset="utf-8">  
        mui.init();  
        mui.plusReady(function() {  
            //  
            mui("body").on('tap', 'button', function(event) {  
                var id = this.getAttribute('id');  
                if (id == "alarm") {  
                    addAlarm();  
                }  
            });  
            var main = plus.android.runtimeMainActivity();  
            // 广播接收  
            var ALARM_RECEIVER = "alarm_receiver";  
            var receiver = plus.android.implements('io.dcloud.android.content.BroadcastReceiver', {  
                onReceive: function(context, intent) { //实现onReceiver回调函数  
                    plus.android.importClass(intent); //通过intent实例引入intent类,方便以后的‘.’操作  
                    //console.log(intent.getAction()); //获取action  
                    var txt = "接收到消息"   intent.getAction()   ": "   getCurTime();  
                    mui.toast(txt);  
                    pushMsg(txt);  
                    main.unregisterReceiver(receiver); //取消监听  
                }  
            });  
            //  
            function addAlarm() {  
                // --- 注册监听 start ---  
                var IntentFilter = plus.android.importClass('android.content.IntentFilter');  
                var filter = new IntentFilter(ALARM_RECEIVER);  
                main.registerReceiver(receiver, filter);  
                // --- 注册监听 end ---  
                // --- 设置闹铃时间 start ---  
                var Calendar = plus.android.importClass('java.util.Calendar');  
                var calendar = Calendar.getInstance();  
                // 11点4分执行  
                //calendar.set(Calendar.HOUR_OF_DAY, 11);  
                //calendar.set(Calendar.MINUTE, 4);  
                //calendar.set(Calendar.SECOND, 0);  
                // 过5s 执行  
                calendar.setTimeInMillis(Date.parse(new Date()));  
                calendar.add(Calendar.SECOND, 5);  
                // --- 设置闹铃时间 end ---  
                // --- 设置闹铃 ---  
                var Intent = plus.android.importClass('android.content.Intent');  
                var intent = new Intent(ALARM_RECEIVER);  
                //  
                var PendingIntent = plus.android.importClass('android.app.PendingIntent');  
                var sender = PendingIntent.getBroadcast(main, 0, intent, 0);  
                //  
                var AlarmManager = plus.android.importClass("android.app.AlarmManager");  
                var Context = plus.android.importClass("android.content.Context");  
                var alarm = main.getSystemService(Context.ALARM_SERVICE);  
                // 一次    
                alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);  
                // 重复多次  
                //alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 5 * 1000, sender);  
                mui.toast("设置闹铃5秒后提醒: "   getCurTime());  
            };  
            //  
            function pushMsg(content) {  
                var options = {  
                    "title": "闹铃提醒",  
                };  
                plus.push.createMessage(content, "alarm", options);  
            };  
            //  
            function getCurTime() {  
                var d = new Date();  
                return d.getFullYear()   "-"   (d.getMonth()   1)   "-"   d.getDate()   " "   d.getHours()   ":"   d.getMinutes()   ":"   d.getSeconds();  
            };  
        });  
    </script>  

</html>  
6 关注 分享
素颜 BoredApe amourz 小云菜 菜鸡 5***@qq.com

要回复文章请先登录注册

深蓝的一片海

深蓝的一片海

这个闹铃怎么没响啊
2022-04-29 15:36
深蓝的一片海

深蓝的一片海

回复 Jie77 :
没有
2022-04-29 15:36
Jie77

Jie77

回复 it_dyh :
请问你的闹钟提醒响铃了吗?
2017-12-21 21:43
it_dyh

it_dyh

在此基础上添加持续定位的功能。
1.定位采用高德安卓sdk定位,手机黑屏后坐标点一直保持不变,请问一下知道原因吗?
2.闹铃提醒一直有效,程序一直在运行。
2017-10-18 11:39
美好时光

美好时光

请教一下 bear_9912:
若要app退出后也可以定时提醒,用官方的个推插件具体怎么实现,麻烦您说明一下,非常感谢!
2017-08-30 16:52
OnePein

OnePein

回复 bear_9912 :
APP退出后也能收到提醒要如何实现啊
2017-07-15 10:21
OnePein

OnePein

app退出后也能收到提醒如何实现?有代码分享吗
2017-07-14 16:48
2***@qq.com

2***@qq.com

闹钟到点没反应,怎么办啊?
2017-05-30 08:52
redzippo

redzippo

回复 bear_9912 :
好的 感谢您的回复 我按照您的思路试一下哈!
2016-08-12 14:16
bear_9912

bear_9912 (作者)

回复 redzippo :
应该是更新了,我今天测了一下,setRepeating不起作用了,不过android原生的还是正常的。查了一下android的API,API19(android4.4)后,AlarmManager.setRepeating()方法将不再保证你定义的工作能按时开始。
为了精确工作,可以设置一次提醒,然后在receiver中接收到后,再设置下一次提醒。

总是报错 alarm未定义:这个问题我这边没有碰到。不过Native.JS里面提到,用importClass导入类对象,虽然方便使用,但是消耗比较多的资源 。采用newObject,invoke方式,可以减少导入类,提高效率。

另外,android动态注册的广播,在APP退出后,也会自动注销掉,这时就接收不到提醒了。想要APP退出后也能收到提醒,可以使用官方的个推插件,或者自己进行原生开发进行集成。
2016-08-12 13:37