내 기본 활동이 있으며, setContentView에 의해 설정된 DrawView라는 사용자 지정 SurfaceView로 시작됩니다. 나는 새로운 활동 컷씬로드 제대로 된 setContentView 후 직접이 메서드를 호출하면 주요 활동 (그리기)이현재 활동보기에서 인 텐트가 호출 될 때 VideoView 활동이 오작동합니다.
public void launchCutScene(int scene) {
Intent intent = new Intent(Draw.this, CutScene.class);
startActivityForResult(intent, 0);
}
내에서 다음과 같은 방법이있다. DrawView에서 나는 draw.launchCutScene (0) 다음 활동이 여전히 온다 호출하는 경우, 그러나
public class CutScene extends Activity implements OnCompletionListener, OnPreparedListener{
String pathToFile = "";
VideoView videoPlayer;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
pathToFile = "EM Math/" + "st.mp4";
setContentView(R.layout.main);
File root = Environment.getExternalStorageDirectory();
videoPlayer = (VideoView) findViewById(R.id.myvideoview);
videoPlayer.setOnPreparedListener(this);
videoPlayer.setOnCompletionListener(this);
videoPlayer.setKeepScreenOn(true);
videoPlayer.setVideoPath(root + "/" + pathToFile);
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
protected void onStop() {
super.onStop();
}
@Override
public void onPrepared(MediaPlayer vp) {
videoPlayer.start();
}
@Override
public void onCompletion(MediaPlayer mp) {
finish();
}
@Override
public boolean onTouchEvent (MotionEvent ev){
if(ev.getAction() == MotionEvent.ACTION_DOWN){
if(videoPlayer.isPlaying()){
videoPlayer.pause();
} else {
videoPlayer.start();
}
return true;
} else {
return false;
}
}
}
을 다음과 같이 컷씬이 있지만, 비디오 고장, 그것은 검은 화면으로 유지하거나 당신은에 다시 눌러야 활동을 중단 시키십시오.이 경우 첫 번째 활동이 시작됩니다. 또는 사운드는 재생되지만 여러 번 재생되고 동기화되지 않습니다. 어느 쪽이든 drawCutScene 호출이 DrawView 클래스 내에서 다시 수행되면 충돌이 발생한 후 비디오가 제대로 작동합니다.
왜 이런 일이 발생합니까? 아무도 내가해야 할 일을 이해하지 못하니?
launchCutScene 메서드가 내 게임 주 스레드 내에서 호출 될 때이 오류가 발생할 수 있음을 알았습니다 (이것은 drawview에서 발생합니다). 솔루션으로 도움이되는지 확신 할 수 없으면 현재 스레드를 중지하고 cutscene을 호출 한 다음 cutscene 활동이 닫히고 나면 다시 스레드를 시작합니다. – tantonj