我正在使用Android MediaPlayer類,並試圖編寫一個驗證onCompletion方法被調用的testcase。 我用它在前一個完成後播放下一個音軌。未在JUnit Testcase(AndroidTestCase)中調用Android MediaPlayer OnCompletionListener!
當我使用模擬器(2.1或4.0)運行應用程序時,onCompletion方法被調用並且下一個軌道開始播放,但是在測試用例中它不是。 這裏是簡化的代碼:
public class MediaPlayerControllerTest extends AndroidTestCase implements OnCompletionListener {
public void testContinuePlayNextTrack() {
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setOnCompletionListener(this);
try {
mediaPlayer.setDataSource("/mnt/sdcard/5749/01.mp3");
mediaPlayer.prepare();
}
catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
mediaPlayer.start();
}
@Override
public void onCompletion(MediaPlayer mp) {
System.out.println("ON COMPLETION!!!!!");
}
}
上面的代碼通常是其在該應用和試驗中所用的一類MediPlayerController的一部分,所以它是相同的類。我將問題分解爲上面幾行代碼。
這花了我很多時間。我希望有人有解決方案!
非常感謝!
你是如何解決與IntentService您的問題被銷燬onCompletionListener叫過嗎? –
我重寫onDestroy()來延遲,直到我設置一個標誌指示我的媒體文件完成運行。也許不是最優雅的解決方案。我寫的應用程序是一個簡單的概念驗證。事後看來,我可能從頭開始構建了一個Service,而不是使用IntentService。 – shammer64