[First App]我正在创建一种Alarm应用程序,允许用户从SD卡或应用提供的声音中选择闹钟声音。因为,应用程序基本上播放警报,我希望音量为设备的“警报音量”。我能够实现SD卡的声音。但是,我无法setAudioStreamType
获取原始资源声音。
我正在使用以下代码:
MediaPlayer m_player = new MediaPlayer();
m_player.setAudioStreamType(AudioManager.STREAM_ALARM);
switch (bin_name) { //bin_name = various user selectable music files
default:
m_player = MediaPlayer.create(context, R.raw.blu);
break;
}
m_player.setLooping(true);
m_player.start();
我的blu.mp3
仅在媒体卷播放。检查MediaPlayer.create(Context context, int resid)
AudioStreamType
后,我发现了这个:
请注意,由于在此方法中自动调用prepare(),因此无法更改音频流类型(请参阅setAudioStreamType(int)),音频会话ID(请参阅setAudioSessionId(int))或音频属性(请参阅setAudioAttributes(AudioAttributes))新的MediaPlayer。
我也尝试过为上述方法找到代码示例,但没有一个展示如何将AudioManager.STEAM_ALARM
设置为{{1}}。我会用其他方式接受答案,只需用无限循环播放声音。怎么做到这一点?
答案 0 :(得分:2)
正如您所指的文档所述,您必须自己创建并准备MediaPlayer。 Haven未尝试使用STREAM_ALARM,但我使用以下代码片段在STREAM_VOICE_CALL上播放
Uri uri = Uri.parse("android.resource://com.example.app/" + R.raw.hdsweep);
MediaPlayer mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_VOICE_CALL);
mMediaPlayer.setDataSource(context, uri);
mMediaPlayer.prepare();
mMediaPlayer.start()