Изменение ориентации и Android VideoPlayer? Что здесь происходит? - PullRequest
2 голосов
/ 28 января 2012

У меня есть следующий код, который ищет текстовый файл на SD-карте моего телефона для поиска URL песни на веб-сервере.

Я могу перетасовать песню, поворачивая телефон, чтобы изменить ориентациюЯ не понимаю, откуда эта логика.Это поведение по умолчанию для Video Player, потому что я не вижу в своем коде ничего, что могло бы вызвать тасование таким образом.

Что заставляет его тасоваться, как это?Если это так, на что мне обратить внимание, чтобы отключить эту функцию?

Я хотел бы сохранить как горизонтальную, так и вертикальную ориентацию, поэтому кодирование его для сохранения в одной ориентации не то, что я после.

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
      }
}   
}

1 Ответ

4 голосов
/ 28 января 2012

Изменение ориентации обычно вызывает onCreate() снова и перезапускает действие с новой конфигурацией.

убедитесь, что вы делаете следующее:

Установите манифест действия на ориентацию перехватасобытия изменения

 android:configChanges="keyboardHidden|orientation"

Переопределение onConfigurationChanged()

Событие OrientationChange теперь будет вызывать onConfigurationChanged() вместо onCreate().

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

И прочитайте это , это отличный документ о более быстром изменении ориентации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...