ループでmp4ビデオを再生しようとしていますが、2つのデバイスに問題があります(他のすべてのデバイスでは、コードは正常に機能します)MotorolaDefy2.2.1とMotorolaAtrix4G2.3。
問題は、1回実行した後、メディアがスタックし、次のエラーが発生することです。
08-12 17:04:15.031: W/MediaPlayer(4710): info/warning (1, 44)
08-12 17:04:15.031: I/MediaPlayer(4710): Info (1,44)
08-12 17:04:15.031: D/MediaPlayer(4710): getMetadata
08-12 17:04:30.742: W/AudioSystem(4710): AudioFlinger server died!
08-12 17:04:30.742: W/IMediaDeathNotifier(4710): media server died
08-12 17:04:30.742: E/MediaPlayer(4710): error (100, 0)
08-12 17:04:30.742: W/AudioSystem(4710): AudioPolicyService server died!
08-12 17:04:30.750: E/MediaPlayer(4710): Error (100,0)
08-12 17:04:30.750: D/VideoView(4710): Error: 100,0
08-12 17:04:30.750: E/MediaPlayer(4710): stop called in state 0
08-12 17:04:30.750: E/MediaPlayer(4710): error (-38, 0)
08-12 17:04:30.750: W/MediaPlayer(4710): mediaplayer went away with unhandled events
08-12 17:04:59.711: D/dalvikvm(4710): GC_FOR_MALLOC freed 9260 objects / 742128 bytes in 80ms
これは私のコードです:
protected void prepareVideoView(File video, String clipId) {
// final Activity currentView = this;
final VideoView vv = (VideoView) findViewById(R.id.video);
vv.setOnErrorListener(Library_callHandler.getErrorHandler(video));
vv.setVideoPath(video.getAbsolutePath());
vv.setVisibility(View.VISIBLE);
vv.setVerticalScrollBarEnabled(false);
vv.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
try {
int counter = 0;
while (vv.isPlaying() && counter++ < 3) {
try {
Thread.currentThread();
Thread.sleep(100);
} catch (InterruptedException ignore) {
}
}
if (vv.isPlaying()) {
com.vringo.shared.Log
.log(com.vringo.shared.Log.LEVEL_INFO,
"VmcRingerActivity onCompletion vv.isPlaying()--> finish()");
finishInstance();
return;
}
vv.start();
} catch (IllegalStateException e) {
// ResidentService.restoreRinger(currentView);
}
}
});
vv.start();
Library_callHandler.track_info("CLIP_RINGTONE", clipId);
// - tracker.trackEvent(VringoConstants.CAT_CLIPS,
// VringoConstants.ACT_PLAY_RINGER,
// String.valueOf(videoClip.getClipId()), 0);
// - tracker.dispatch();
// Library_callHandler.info("Ringer video playback started.");
}