2012-01-27 4 views
2

웹 서버의 노래 URL에 대한 텍스트 파일을 휴대 전화의 SD 카드에서 검색하는 다음 코드가 있습니다.오리엔테이션 변경 및 Android VideoPlayer? 무슨 일 이니?

휴대 전화를 돌려 방향을 바꿔서 노래를 뒤섞을 수 있으며 그 논리가 어디에서 오는지 이해할 수 없습니다. 코드에서 이러한 방식으로 임의 재생을 유발하는 내용이 표시되지 않기 때문에 비디오 플레이어의 기본 동작입니까?

왜 이렇게 뒤섞일까요? 이 경우이 기능을 끄려면 어떻게해야합니까?

수평 및 수직 방향을 모두 유지하여 한 방향으로 유지되도록 코딩하는 것이 이후가 아닙니다.

import java.io.BufferedReader; 
import java.io.DataInputStream; 
import java.io.File; 
import java.io.FileInputStream; 
import java.io.InputStreamReader; 
import java.io.LineNumberReader; 
import java.util.Random; 
import android.app.Activity; 
import android.net.Uri; 
import android.os.Bundle; 
import android.os.Environment; 
import android.widget.MediaController; 
import android.widget.TextView; 
import android.widget.VideoView; 


public class MusicPlayerActivity extends Activity { 
    /** Called when the activity is first created. */ 
     @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     File sdcard = Environment.getExternalStorageDirectory(); 
     File file = new File(sdcard, "TestMus1.txt"); 

     TextView textView1 = (TextView)findViewById(R.id.textView1); 

     try { 
     BufferedReader br = new BufferedReader(new InputStreamReader(new DataInputStream(new FileInputStream(file)))); 
     LineNumberReader rdr = new LineNumberReader(br); 

      int min = 1; 
      int max = 1618; 
      Random r = new Random(); 
      int someRandomNo = r.nextInt(max - min + 1) + min; 
      textView1.setText(Integer.toString(someRandomNo)); 
      rdr.setLineNumber(someRandomNo); 
      int linenum = 0; 
      String theLine = ""; 
      while (linenum < someRandomNo) { 
       theLine = br.readLine(); 
       linenum++; 
      } 
      textView1.setText(theLine); 

       VideoView videoView = (VideoView) findViewById(R.id.VideoView);   
       MediaController mediaController = new MediaController(this); 
       mediaController.setAnchorView(videoView); 
     // Set Audio 
       Uri video = Uri.parse(theLine); 
       videoView.setMediaController(mediaController); 
       videoView.setVideoURI(video); 
       videoView.start();          
     } 
     catch (Exception e) { 
     //Error Handling 
     } 
} 
} 

답변

2

오리엔테이션 변경은 보통 onCreate()을 호출하고 새 구성에서 작업을 다시 시작합니다.

이 방향 변경 이벤트가

android:configChanges="keyboardHidden|orientation" 

재정

위해서 orientationchange 이벤트가 지금 대신 onCreate()를 호출 가로 채기 위해 활동의 매니페스트를 설정합니다

는 다음을 수행해야합니다 .

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 
    setContentView(R.layout.myLayout); 
} 

그리고 this을 읽으면 빠른 방향 변경에 대한 훌륭한 자료입니다.

+0

제공하신 링크가 깨졌습니다. ( –

관련 문제