Android 音频在安卓系统中显然不起作用
我尝试根据用户选择从原始文件夹播放音频文件,但如果用户选择或更改两个或多个文件,则音频工作不正常,但在更改选项后,它会将选定文件和以前选定的文件流式传输。我是android新手…我已经在下面发布了我的代码,有人帮我解决这个问题吗Android 音频在安卓系统中显然不起作用,android,audio,media-player,audio-streaming,Android,Audio,Media Player,Audio Streaming,我尝试根据用户选择从原始文件夹播放音频文件,但如果用户选择或更改两个或多个文件,则音频工作不正常,但在更改选项后,它会将选定文件和以前选定的文件流式传输。我是android新手…我已经在下面发布了我的代码,有人帮我解决这个问题吗 switch (Global.id) { case R.id.radioButton1: mMediaPlayer = MediaPlayer.create(context, R.raw.kalimba); mMediaPlayer.setAudioSt
switch (Global.id)
{
case R.id.radioButton1:
mMediaPlayer = MediaPlayer.create(context, R.raw.kalimba);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
case R.id.radioButton2:
mMediaPlayer = MediaPlayer.create(context, R.raw.maid);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
case R.id.radioButton3:
mMediaPlayer = MediaPlayer.create(context, R.raw.sleep_away);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
}
这里有一个onDestroy方法
private void destroy()
{
mMediaPlayer.release();
mMediaPlayer.reset();
mMediaPlayer.stop();
}
这样试试看
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
mMediaPlayer.stop();
}
在开关箱中添加上述条件
switch (Global.id)
{
case R.id.radioButton1:
mMediaPlayer = MediaPlayer.create(context, R.raw.kalimba);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
mMediaPlayer.stop();
}
mMediaPlayer.start();
break;
case R.id.radioButton2:
mMediaPlayer = MediaPlayer.create(context, R.raw.maid);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
mMediaPlayer.stop();
}
mMediaPlayer.start();
break;
case R.id.radioButton3:
mMediaPlayer = MediaPlayer.create(context, R.raw.sleep_away);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
mMediaPlayer.stop();
}
mMediaPlayer.start();
break;
}
你需要重置你的播放器。这样做:
//global
mMediaPlayer = new MediaPlayer();
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
//switch statement somewhere else
switch (Global.id)
{
case R.id.radioButton1:
otherSong(R.raw.kalimba);
break;
case R.id.radioButton2:
otherSong(R.raw.maid);
break;
case R.id.radioButton3:
otherSong(R.raw.sleep_away);
break;
}
//method for changing song
private void otherSong(int song) {
if(mMediaPlayer.isPlaying()) {
mMediaPlayer.stop();
}
mMediaPlayer.reset();
mMediaPlayer.setDataSource(song);
mMediaPlayer.prepare();
mMediaPlayer.start();
}
提醒:调用reset()将使媒体播放器处于空闲状态,因此无需调用stop
编辑:所以应该是这样的
switch (Global.id)
{
case R.id.radioButton1:
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
// mMediaPlayer.stop();
}
mMediaPlayer = MediaPlayer.create(context, R.raw.kalimba);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
case R.id.radioButton2:
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
// mMediaPlayer.stop();
}
mMediaPlayer = MediaPlayer.create(context, R.raw.maid);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
case R.id.radioButton3:
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
// mMediaPlayer.stop();
}
mMediaPlayer = MediaPlayer.create(context, R.raw.sleep_away);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
}
不需要打电话给prepare至少根据我的经验,我打电话给prepare后遇到了一些麻烦
编辑:我建议您在创建图层之前检查它是否播放。@Somasundaram好的,我正在等待。
switch (Global.id)
{
case R.id.radioButton1:
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
// mMediaPlayer.stop();
}
mMediaPlayer = MediaPlayer.create(context, R.raw.kalimba);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
case R.id.radioButton2:
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
// mMediaPlayer.stop();
}
mMediaPlayer = MediaPlayer.create(context, R.raw.maid);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
case R.id.radioButton3:
if ( mMediaPlayer.isPlaying() ) // Checking if already playing any song
{
mMediaPlayer.reset();
// mMediaPlayer.stop();
}
mMediaPlayer = MediaPlayer.create(context, R.raw.sleep_away);
mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mMediaPlayer.setLooping(true);
mMediaPlayer.start();
break;
}