【发布时间】:2015-03-08 09:35:21
【问题描述】:
我正在尝试播放媒体类型为 STREAM_ALARM 的广播流,并使用硬件按钮更改其音量。
它必须是 STREAM_ALARM 因为它实际上是一个警报:即使插入耳机和/或手机设置为静音,它也应该通过扬声器播放。
我正在寻找一种始终有效的实现,无论用户处于什么活动中(因此它也应该在例如主屏幕中工作)。我知道我可以覆盖 onKeyUp/Down 但这只适用于我的活动)
这是我现在要做的(简化代码)
audioMgr.requestAudioFocus(
afChangeListener,
AudioManager.STREAM_ALARM,
AudioManager.AUDIOFOCUS_GAIN
);
if (mp!=null) { mp.release(); mp = null;}
mp = new MediaPlayer();
mp.setDataSource(streamUrl);
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setOnPreparedListener(onPreparedListener);
mp.prepareAsync();
然后当 onPreparedListener 触发时:
mp.start();
但是当我按下手机上的音量按钮时,它会改变媒体音量而不是闹钟(在 Android 4.4 和 5.0 上测试过)
Android 文档说明如下:
“默认情况下,按下音量控件会修改活动音频流的音量。”
来源:http://developer.android.com/training/managing-audio/volume-playback.html#HardwareVolumeKeys
所以我想问题是:我如何(正确)将 STREAM_ALARM 设置为活动音频流?
还是我做错了什么?
提前致谢!
更新:我已将其报告为 AOSP 错误跟踪器上的错误并已被接受.. 所以我想这实际上应该像我上面描述的那样工作,但它没有:S
链接:https://code.google.com/p/android/issues/detail?id=183843
【问题讨论】:
标签: android android-mediaplayer