2012-09-22 5 views
3

많은 유용한 솔루션을 찾을 수있어서이 사이트가 매우 마음에 듭니다. 특히 안드로이드 프로그래밍의 초보자이며 이것이 내 첫 번째 질문이므로 찾기가 쉽습니다. 이 위대한 공동체를 돕고 있습니다.화면 방향을 바꿀 때 비디오가 동시에 재생되지 않음

문제 : seekTo() 및 getCurrentPosition()을 사용하여 비디오를 동일한 지점에서 재생을 다시 시작하려면 내 앱에서 비디오를 재생하여 가로 방향으로 전체 화면으로 재생합니다. 동영상이 동영상 재생 후 몇 초 동안 계속 재생된다는 문제는 동영상이 동일한 시점을 찾지 만 재생을 시작하면 수초가 걸린다는 것을 의미합니다.

내 코드 :

//initialise everything 
protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     v = (VideoView) findViewById(R.id.videoView1); 
       v.setVideoPath(dir + videoName + ".3gp"); 
       v.setMediaController(new MediaController(this)); 
       if (savedInstanceState == null){ 
        v.start(); 
       } 
       else { 
        playingTime = savedInstanceState.getInt("restartTime", 0); 
        v.seekTo(playingTime); 
       } 
     } 

@Override 
protected void onSaveInstanceState(Bundle outState) { 
    // TODO Auto-generated method stub 
    super.onSaveInstanceState(outState); 
    if (file.exists()){ 
     playingTime = v.getCurrentPosition(); 
     v.stopPlayback(); 
     outState.putInt("restartTime", playingTime); 
    } 
} 

나는 내 응용 프로그램을 테스트 갤럭시 넥서스를 사용하고 이와 How to keep playing video while changing to landscape mode android

로 많은 해결책을 시도해보십시오 .. 나는 어떤 힌트에 감사 할 것이다. 나쁜 영어로 죄송합니다. 대단히 감사합니다.

답변

5

귀하의 활동에서 모든 것을 정상적으로 유지하십시오. 그것은 활동이 재창조 될 때 위치를 저장하는 것으로 귀결됩니다. 여기에 한 가지 방법입니다 :

당신이 당신의`Activity``onSaveInstanceState (...)`방식에서 마지막`super.onSaveInstanceState (outState)`를 호출하지 않을까요
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //initialise everything 


    //finally 
    if(savedInstanceState!=null) { 
     int seekValue = savedInstanceState.getInt("where"); 
     //now seekTo(seekValue) 
    } 
} 
@Override 
    protected void onSaveInstanceState(Bundle outState) { 
     int seekValue; //set this to the current position; 
     outState.putInt("where", seekValue); 
     super.onSaveInstanceState(outState); 
    } 
} 
+0

? 즉, 'outState.PutInt (...)'를 호출 한 후. – Squonk

+0

@Squonk은 의미 론적 관점에서 의미가 있지만 실제로는 같은 'outState' 인스턴스에 데이터를 넣고'super' 구현체가'outState'의 최종 상태를 아직 가질 필요가 없기 때문에 중요하지 않습니다. 하지만 슈퍼 구현과 독립적이기 때문에 처음부터 넣는 것을 선호합니다. super가 당신이 그것을 넣을 수 있기 전에'outState'를 셋업 할 필요가 있다고 주장 할 수 있지만, super로 데이터를 저장하는 것이 더 안전 할 수도 있습니다. – zapl

+0

글쎄, 마지막에 super를 호출하여 "Activity 's"상태를 덮어 쓰는 것을 선호하지 않습니다. 그러나 나는 데모 용으로 이것을 썼다. 어쨌든 움직여. –

관련 문제