Android MediaPlayer - 如何在 STREAM_ALARM 中播放?

标签 android stream media-player android-audiomanager

我已经尝试使用以下代码在我的应用程序中设置媒体播放器的音频流,但是当我这样做时,我在模拟器中听不到任何声音。如果我没有为播放器设置流,则音频播放正常。我确定我用错了但无法锻炼,有什么帮助吗?

MediaPlayer player = MediaPlayer.create(getApplicationContext(), R.raw.test_audio);

AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
audioManager.getStreamVolume(AudioManager.STREAM_ALARM);
audioManager.setStreamVolume(AudioManager.STREAM_ALARM, audioManager.getStreamMaxVolume(AudioManager.STREAM_ALARM), AudioManager.FLAG_REMOVE_SOUND_AND_VIBRATE);
player.setAudioStreamType(AudioManager.STREAM_ALARM);
player.start();

注意:我已将 MODIFY_AUDIO_SETTINGS 权限添加到我的 list 中。

谢谢!

最佳答案

我不知道为什么会发生这种情况,但下面的代码有效。您应该使用 setDataSource() 而不是 create() 设置数据源。

此代码有效:

MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.setDataSource(this,Uri.parse("android.resource://PACKAGE_NAME/"+R.raw.soundfile));
mp.prepare();
mp.start();

此代码有效:

MediaPlayer mp = MediaPlayer.create(this, R.raw.soundfile);
mp.setAudioStreamType(AudioManager.STREAM_ALARM);
mp.prepare();
mp.start();

关于Android MediaPlayer - 如何在 STREAM_ALARM 中播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7057115/

相关文章:

java - 安卓 5 : No more Garbage Collection message?

android - 如何限制安卓播放器同时播放多个媒体文件?

javascript - 管道流到变量!?或者 ....?

java - java IO 中的缓冲区如何工作?

c# - 如何使用 DotNetZip 即时提取 ZIP 文件?

Android Studio Gradle androidTest 与 instrumentTest

android - Google API 对来自 GoogleAuthUtil.getToken 的一次性授权代码的授予无效

android - 'play'按钮外观

android - mediaplayer 在 android 中播放实时流音频的问题

android - 如何在我的 ListView 中从 SD 卡上的特殊文件夹加载歌曲并播放?