2017-01-23 142 views
0
E/MediaPlayer: EventHandler handleMessage thread id is 1 
E/MediaPlayer: EventHandler handleMessage thread id is 1 
E/MediaPlayer: currentThread is 1, handleMessage mTimeProvider hashcode is 1112571032, mTimeProvider is [email protected], msg is { when=-19ms what=7 target=android.media.MediaPlayer$EventHandler } 

我试图播放音频时出现上述错误,为什么我得到这个错误,相同的代码在某些地方工作,我从一个片段调用静态函数?Android MediaPlayer错误

     Global.playAudio("sounds/add_comment.mp3",context); 
public static void playAudio(String aud, Context context) { 
final MediaPlayer mp; 

try { 
    AssetFileDescriptor fileDescriptor = 
      context.getAssets().openFd(aud); 
    mp = new MediaPlayer(); 
    mp.setDataSource(fileDescriptor.getFileDescriptor(), 
      fileDescriptor.getStartOffset(), 
      fileDescriptor.getLength()); 
    fileDescriptor.close(); 
    mp.prepare(); 
    mp.start(); 
} catch (IllegalArgumentException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IllegalStateException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} catch (IOException e) { 
    // TODO Auto-generated catch block 
    e.printStackTrace(); 
} 

}

回答

0

让我知道这是否有助于 -

public class MainActivity extends AppCompatActivity implements MediaPlayer.OnPreparedListener,AudioManager.OnAudioFocusChangeListener{ 
MediaPlayer mp; 
AudioManager mAudioManager ; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    mAudioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
    int result = mAudioManager.requestAudioFocus(this, AudioManager.STREAM_MUSIC, 
      AudioManager.AUDIOFOCUS_GAIN); 
    if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { 
     //got audio focus 
     playAudio("bell.mp3",this); 
    } 

} 

private void playAudio(String aud, Context context) { 
    try { 
     AssetFileDescriptor fileDescriptor = 
       context.getAssets().openFd(aud); 
     mp = new MediaPlayer(); 
     mp.setDataSource(fileDescriptor.getFileDescriptor(), 
       fileDescriptor.getStartOffset(), 
       fileDescriptor.getLength()); 
     fileDescriptor.close(); 
     mp.prepareAsync(); 
     mp.setOnPreparedListener(this); 
    } catch (IllegalArgumentException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IllegalStateException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 
} 


@Override 
public void onPrepared(MediaPlayer mediaPlayer) { 
    mp.start(); 
} 

@Override 
public void onAudioFocusChange(int i) { 

} 
} 

在这里,我第一次尝试获取音频焦点,然后让媒体播放器异步执行任务。

+0

我把这个标记为答案cuze你花了一些时间写它,它的工作正常,,我的问题是在电话里我正在测试它我重新启动它并把音量放在最大值每个事情工作感谢您的时间我的坏 –