Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 音频在安卓系统中显然不起作用_Android_Audio_Media Player_Audio Streaming - Fatal编程技术网

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

我尝试根据用户选择从原始文件夹播放音频文件,但如果用户选择或更改两个或多个文件,则音频工作不正常,但在更改选项后,它会将选定文件和以前选定的文件流式传输。我是android新手…我已经在下面发布了我的代码,有人帮我解决这个问题吗

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;
}