我正在创建一个提醒应用程序(它就像一个闹钟),您可以在其中设置任务。
接收先前设置的警报 Intent 的代码(使用setExactAndAllowWhileIdle):
@Override
public void onReceive(Context context, Intent intent) {
int alarmId = intent.getIntExtra(Constants.REMINDER_ALARM_ID, 0);
Intent goingOffIntent = new Intent(context, GoingOffActivity.class);
goingOffIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
goingOffIntent.putExtra(Constants.REMINDER_ALARM_ID, alarmId);
context.startActivity(goingOffIntent);
}
即使屏幕关闭(并且键盘保护打开),此功能也有效,GoingOffActivity 会显示两个选项:暂停、关闭。
GoingOffActivity 的 onCreate:
getWindow().setFlags(
flags: WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,
mask: WindowManager.LayoutParams.FLAG_FULLSCREEN |
WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD |
WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON |
WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
...
// Play ringtone
if (ringingEnabled) {
Uri uri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_ALARM);
ringtone = RingtoneManager.getRingtone(getApplicationContext(), uri);
ringtone.setAudioAttributes(new AudioAttributes.Builder()
.setUsage(AudioAttributes.USAGE_ALARM)
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.build());
ringtone.play();
//mediaPlayer = MediaPlayer.create(context, uri); //Settings.System.DEFAULT_RINGTONE_URI
//mediaPlayer.setLooping(true);
//mediaPlayer.start();
}
问题是,音乐(从铃声或媒体播放器开始)在手机打开时(在主屏幕或应用程序中)播放,但在手机从 sleep 状态唤醒时不播放。只有声音是问题,其他一切都很好。
我在互联网上做了一些研究,我想这与Doze模式有关(也许不是,因为我认为当 Activity 开始时手机不再处于Doze模式),尝试了一些解决方案但没有任何效果。
API 级别信息:
- 应用的最低 SDK 级别:23
- Lenovo P2 级别:24(测试设备)
- 三星 A40 级别:28(测试设备)
我应该用其他方式做什么?谢谢。
最佳答案
我知道问题出在哪里了。我在 onPause 中停止 MediaPlayer,并在 Activity 可见之前调用它(我不知道为什么)。
2019-10-19 02:38:00.365 LOG:onReceive
2019-10-19 02:38:00.428 LOG:onCreate
2019-10-19 02:38:00.529 LOG:onResume
2019-10-19 02:38:00.542 LOG:onPause
2019-10-19 02:38:00.592 LOG:onStop
2019-10-19 02:38:00.716 LOG:onResume
关于android - 屏幕关闭(手机锁定)时,MediaPlayer(或铃声)不会开始播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58402648/