2017-08-16 200 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