android - 即使应用程序关闭,也每 5 分钟播放一次提醒歌曲
问题描述
我尝试每 5 分钟显示一次敬酒并播放一首警报歌曲,但它不起作用,没有任何反应。
显现:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
..
<receiver android:name=".AlarmReceiver"
android:enabled="false">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"></action>
</intent-filter>
</receiver>
主要活动:
alarmMgr = (AlarmManager)MainActivity.this.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
alarmIntent = PendingIntent.getBroadcast(MainActivity.this, 0, intent, 0);
// Set the alarm to start at 8:30 a.m.
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
calendar.set(Calendar.HOUR_OF_DAY, 8);
calendar.set(Calendar.MINUTE, 30);
// setRepeating() lets you specify a precise custom interval--in this case,
// 5 minutes.
alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
1000 * 60 * 5, alarmIntent);
报警接收器:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
Toast.makeText(context, "OnReceive alarm test", Toast.LENGTH_SHORT).show();
}
}
如果缺少某些东西或有什么问题,有什么想法吗?
解决方案
setRepeating
在功能上已弃用(从 api 19 开始),支持setInexactRepeating
它的最小间隔为 15 分钟,并且在批处理多个警报时可能会增加额外的延迟。
如果您想要如此激进的警报,则需要使用一次性setExact
警报并重新安排下一个警报onReceive
。
推荐阅读
- python - 在Python中分离输入并放入动态数组
- c# - powershell在c#中返回机器的每个驱动器空间
- gcc - 无法编译:部分文本中无法识别的重定位 0x2a
- javascript - 动画 Bootstrap 4 下拉菜单
- image-processing - ImageMagick:检测完全透明的空白图像
- r - 如何从 qdap::mgsub() 平滑切换到 textclean::mgsub()?
- c++ - 微控制器中的静态 C++ 成员
- php - 如何使用 php 函数检查许可证密钥是否在 mySQL 数据库中,如果是,那么它将下载一些东西
- android - 如何使对话框的按钮居中?(科特林,Android 工作室)
- nsis - 如何使用 NSIS 使用 Visual Studio 生成的文件生成安装程序