안녕하세요, 저는 새로운 활동을 시작하는 버튼이 포함 된 간단한 활동이있는 Android 애플리케이션을 개발 중입니다. 새로운 액티비티에는 비디오를 보여주는 표면 뷰가 포함됩니다. 준비 스레드가 주 스레드에서 작동하므로 prepareAsync를 사용합니다. 그래서 내 문제는 이것 같다. 새로운 활동을 시작하는 활동 상태 버튼을 클릭하고 비디오를로드하기 시작합니다. 동영상 시작 전에 미디어 플레이어 시작()을 클릭하면 이전 활동으로 돌아갑니다. 그러나 해당 활동의 UI는 얼마 동안 활성화되지 않습니다. 즉, 몇 시간 동안 시작 버튼을 클릭 할 수 없다는 뜻입니다. 잠시 후 다시 활성화됩니다. 같은 문제에 직면 해있는 사람이 있습니까? 내 코드는 다음과 같습니다.안드로이드는 미디어 플레이어가 UI 차단을 준비하도록 준비했습니다.
@Override
public void surfaceCreated(SurfaceHolder arg0) {
// TODO Auto-generated method stub
Log.i("FFFFFFFFFFFFFFFFFFF ", "FFFFFFFFFFFFFFFFFFF ");
mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC);
mediaPlayer.setDisplay(surfaceHolder);
try {
mediaPlayer.setDataSource(getApplicationContext(), targetUri);
mediaPlayer.prepareAsync();
//mediaPlayer.prepare();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalStateException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
mediaPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
// TODO Auto-generated method stub
mediaPlayer.start();
}
});
}
이 상황을 방지하려면 어떻게해야합니까? 나는 어떤 일을 잘못하고있다. 도움이 필요하다. 고맙습니다.
onBackPressed에서 mediaPlayer.release()를 호출 해 보았습니까? – Niko
그래, onDestroy 안에 mediaPlayer.release()를하고있다. 또한 mediaPlayer = null입니다.하지만 여전히 같은 결과입니다. – nilkash
가능한 중복 http://stackoverflow.com/questions/7445145/mediaplayer-prepare-problem? – palsch