android - 媒体播放器继续播放

标签 android audio path media-player

我有一个媒体播放器,每次调用此 Activity 时,如果有媒体播放器在播放,我希望它停止,新的媒体播放器开始播放...这是我的音频播放器方法

private void playAudio(String url) throws Exception{

mediaplayer.release();
mediaplayer.setDataSource(url);
mediaplayer.prepare();
mediaplayer.start();

我在类(class)开始时初始化媒体播放器

private MediaPlayer mediaplayer = new MediaPlayer();
private Handler handler = new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {

    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.songplaying);

    // Getting Our Extras From Intent
     Bundle names = getIntent().getExtras();

    // Getting Specific Data

     path = names.getString("pathkeyword");


     //Start Player
     try {
        playAudio(path);

    } catch (Exception e) {
       e.printStackTrace();

}

每次创建这个类时,它都会创建一个新的媒体播放器,不会停止另一个媒体播放器,而是同时播放两个媒体播放器。

最佳答案

您可能希望查看 onPause 然后关闭媒体播放器。问题是,一旦媒体播放器被第二次创建,就没有对它的引用。结果,你开始你的 Activity ,播放音乐,但是当你退出时(例如按下主页按钮)媒体播放器没有被告知停止(它作为一个单独的线程运行)。当您重新打开它时,它将在新线程上启动一个新的媒体播放器,并产生两种声音。

要解决此问题,请在退出时正确终止媒体播放器。当您退出 Activity 时,这将正确地终止媒体播放器:

@Override
protected void onPause(){
    super.onPause();
    if(mediaplayer.isPlaying()){
        try{
            mediaplayer.stop();
        }
        catch(IllegalStateException){
            Log.d("mediaplayer","Media player was stopped in an illegal state.");
        }
    }
}

如果您希望在 Activity 不在前台时继续播放音乐,您需要使用 Service

关于android - 媒体播放器继续播放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8263472/

相关文章:

image - 设置文件路径 drupal imce

android - 从 Activity onStart() 调用 Google Play 服务 GoogleApiClient.connect() 导致间歇性 OpenGL 崩溃(NvRmChannelSubmit 错误等)

android - 从 Android 设备连接到嵌入式蓝牙设备

android - Media Player 流 url,然后播放下一个 url

javascript - 我想在用户等待时播放警报中的响铃声音

bash - $PATH 中的波浪号字符 ('~' )? (例如 : PATH ='~/bin' :/usr/bin:/bin)

android - 更新到 buildTools 27.0.3 后的错误消息

android 绑定(bind)到 AccessibilityService

iPhone:如何播放忽略音量和铃声开关设置的声音?

algorithm - 在矩阵中寻找到 X 的路径