2012-02-18 4 views
0

내 기본 활동이 있으며, 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 클래스 내에서 다시 수행되면 충돌이 발생한 후 비디오가 제대로 작동합니다.

왜 이런 일이 발생합니까? 아무도 내가해야 할 일을 이해하지 못하니?

+0

launchCutScene 메서드가 내 게임 주 스레드 내에서 호출 될 때이 오류가 발생할 수 있음을 알았습니다 (이것은 drawview에서 발생합니다). 솔루션으로 도움이되는지 확신 할 수 없으면 현재 스레드를 중지하고 cutscene을 호출 한 다음 cutscene 활동이 닫히고 나면 다시 스레드를 시작합니다. – tantonj

답변

0

좋아, 정교하게 오류를 해결했습니다!

내가 할 일은 내 스레드를 부울 값으로 false로 설정 한 다음 작업을 호출하는 것입니다. 활동이 닫히면 내 프로그램이 스레드를 다시 시작하고 모든 것이 현재 hunkydorry로 작동합니다 !!!! ... 따라서 비디오 뷰를 사용하여이 비디오 버그를 얻는다면 백그라운드에서 스레드를 실행하고있을 가능성이 큽니다!

관련 문제