首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:安卓AlarmManager能唤醒设备来执行预定的任务吗?

问安卓:安卓AlarmManager能唤醒设备来执行预定的任务吗?
EN

Stack Overflow用户
提问于 2013-07-09 08:45:50
回答 3查看 7.5K关注 0票数 0

我需要做一个应用程序来设定一周的日历,

基本上,用户将输入一周中每一天活动的开始时间和结束时间。

他只会做一次。

设置之后,应用程序(我将使用AlarmManager)将在设定时间和结束时间以及设定时间开始他的活动(连续播放视频):

每周的每一天;

永远,

没有人与人之间的互动(当然,手机/平板电脑必须打开并接通电源)。

我关心的问题如下:

alarmmanger是否能够在早上唤醒设备来启动活动(播放视频),而不需要用户的任何交互?

巧妙的使用建议

代码语言:javascript
复制
    WindowManager wm = Context.getSystemService(Context.WINDOW_SERVICE);
    Window window = getWindow();  
    window.addFlags(wm.LayoutParams.FLAG_DISMISS_KEYGUARD);

在Eclipse中给出了很多错误:

​

​

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-09 08:52:05

是的,我可以尝试一些类似的东西,但不是完全.我每天早上9点试着调用这个设备来下载我使用这段代码的内容

代码语言:javascript
复制
PowerManager pm = (PowerManager) context
            .getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(
            PowerManager.PARTIAL_WAKE_LOCK, "");
    wl.acquire();

    wl.release();

这是我的实现:用来设置Alaram

代码语言:javascript
复制
 AlarmManager am = (AlarmManager) context
            .getSystemService(Context.ALARM_SERVICE);
     Calendar calendar = Calendar.getInstance();
     calendar.setTimeInMillis(System.currentTimeMillis());
     calendar.add(Calendar.MINUTE, 10);
     calendar.add(Calendar.SECOND, 00);
     //alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
     am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000*60*1, pi);

BroadcastReciever:

代码语言:javascript
复制
Register BroadcastReciever:
PowerManager pm = (PowerManager) context
            .getSystemService(Context.POWER_SERVICE);
    PowerManager.WakeLock wl = pm.newWakeLock(
            PowerManager.PARTIAL_WAKE_LOCK, "");
    wl.acquire();
    // Put here YOUR code.

    Intent startAutoSyncService = new Intent(context,
            AppoinmentService.class);
    context.startService(startAutoSyncService);

    wl.release();
票数 6
EN

Stack Overflow用户

发布于 2013-07-09 09:05:54

是的,警报是通用的选择。如果设备被锁定,请使用密钥保护解除。

代码语言:javascript
复制
 Window win = getWindow();
        win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);

        win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);

在调用警报时&启动您想要的视频/音频活动或屏幕,然后调用

另外,在设备重新启动的上,您需要重置警报。

票数 2
EN

Stack Overflow用户

发布于 2013-07-09 08:50:59

是的,如果您使用ELAPSED_REALTIME_WAKEUP或RTC_WAKEUP作为警报类型,它会的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17543784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档