我有一个应用程序,它使用文本到语音每10分钟通知用户10分钟已经过去了。它目前工作正常,但如果您睡眠手机(按下电源按钮),它不再播放声音。
即使手机处于休眠状态,我如何播放这些声音?
发布于 2011-01-17 23:19:03
通常,如果设备进入休眠状态,您的代码就不会运行。为了让你的代码运行,你需要从PowerManager获取WakeLock。但在您的情况下,您不需要一直获取WakeLock。你需要每10分钟唤醒你的应用程序。否则,你的应用程序将什么都不做,只会消耗电池。
为了定期唤醒你的应用程序,你需要使用一个特殊的安卓AlarmManager。
下面是一个示例:
Intent myIntent = new Intent(getApplicationContext(), YourActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 1, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime, interval, pendingIntent);您也可以发送将在您的服务中处理的广播(如果您不想使用Activity)。
编辑:除非您显式创建SCREEN_DIM_WAKE_LOCK,否则不会开始播放。请注意,PARTIAL_WAKE_LOCK将不能用于回放(现在不要解释原因,这可能是一个错误)。
PowerManager powerManager = (PowerManager)getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, "Music");
wakeLock.acquire();
...start playback...
wakeLock.release();编辑:新增60秒一次播放示例的工程(即使关屏、断开USB线)。它可以在这里找到:http://code.google.com/p/playevery60/
https://stackoverflow.com/questions/4714109
复制相似问题