2017-08-16 141 views
-1

我只是试图通过媒体播放器播放音乐n秒。等待处理程序完成Android

我的第一个文件:

public void Play_Music() { 
    mTestUtils.ConnectDevice(); 
    mTestUtils.playMusic(MUSIC_PATH, STREAM_TIME); 
    mTestUtils.DisconnectDevice((); 
} 

我的第二个文件:

public void playMusic(String music_path, int stream_time) { 

    MediaPlayer mMediaPlayer = new MediaPlayer(); 

    try { 
     Log.i(TAG, "In Play mUsic"); 
     mMediaPlayer.setDataSource(music_path); 
     mMediaPlayer.prepare(); 
     mMediaPlayer.start(); 
     new Handler(Looper.getMainLooper()).postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Log.i(TAG, "In Handler"); 
       mMediaPlayer.stop(); 
       mMediaPlayer.release(); 
      } 
     }, stream_time); 

     Log.i(TAG, "Done Playing"); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    return; 
} 

这里我的问题是如何使处理器等待一定时间。 这里发生的是播放音乐被调用,它执行该函数并立即返回以执行第一个文件中的下一个语句。我想等待处理函数完成,然后我需要将控件传递给第一个文件。

在此先感谢。

+0

然后用单独的方法编写代码,并在释放媒体播放器后从处理程序中调用它 –

回答

1

我从你的问题中了解到,当你调用playMusic()方法时,它开始播放并立即停止你的音乐。因为代码从上到下运行。

  1. 首先要连接设备
  2. 第二你正在播放音乐
  3. 第三你断开设备

偏偏第二个步骤后,你在呼唤立即断开设备什么。我不知道那个功能是干什么的。如果您想在处理程序完成后断开函数,请致电,然后您需要使用回拨方法。 Handler会告诉(通过回调方法)何时调用断开方法。我希望我能回答这个问题。

有关如何回调接口现象在下面工作的指导是有用的链接。

https://stackoverflow.com/questions/3398363/how-to-define-callbacks-in-android 

https://stackoverflow.com/questions/18054720/what-is-callback-in-android