Android MediaPlayer 클래스를 사용 중이며 onCompletion 메서드가 호출되는지 확인하는 테스트 사례를 작성하려고합니다. 이전 트랙이 끝난 후 다음 트랙을 재생할 때 사용합니다.Android MediaPlayer OnCompletionListener가 JUnit Testcase (AndroidTestCase)에서 호출되지 않았습니다!
에뮬레이터 (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와 문제를 해결하는 데 도움이 되었습니까은 파괴되고? –
나는 미디어 파일의 실행이 끝났음을 나타내는 플래그를 설정할 때까지 onDestroy()를 오버로드했다. 아마도 가장 우아한 해결책은 아닙니다. 내가 작성한 앱은 간단한 개념 증명이었다. 처음부터 IntentService를 사용하는 대신 처음부터 서비스를 구축했을 수도 있습니다. – shammer64