android - 方向改变和Android VideoPlayer?到底是怎么回事?

标签 android orientation android-music-player

我有以下代码,用于在手机 SD 卡上的文本文件中搜索网络服务器上歌曲的 URL。

我可以通过转动手机改变方向来随机播放歌曲,但我不明白这个逻辑来自哪里。 这是视频播放器的默认行为吗?因为我在代码中没有看到任何会导致这种方式随机播放的内容。

是什么导致它像这样洗牌? 如果是这种情况,我应该注意什么才能关闭此功能?

我想保持水平和垂直方向,因此将其编码为保持在一个方向不是我所追求的。

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

最佳答案

方向更改通常会再次调用 onCreate(),并以新配置重新启动 Activity。

确保执行以下操作:

设置 Activity 的 list 以拦截方向更改事件

 android:configChanges="keyboardHidden|orientation"

覆盖onConfigurationChanged()

OrientationChange 事件现在将调用 onConfigurationChanged() 而不是 onCreate()

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

并阅读this ,这是一个关于更快地改变方向的很棒的文档。

关于android - 方向改变和Android VideoPlayer?到底是怎么回事?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9039833/

相关文章:

android - 如何从我的代码播放或恢复另一个音乐播放器的音乐

java - ActionBar 文本的背景颜色没有改变

ios - 在 View 中锁定纵向方向? IOS 7

android - 如何在你的android项目中加载另一个.so文件?

iphone - 固定 View Controller 的方向

iOS8 方向 : supportedInterfaceOrientations called but no orientation change

android - 如何在 Android 应用程序中重复播放歌曲?

java - Android抛出空指针异常

android - 从android中的手机内存中读取文本文件

android - 如何在构建期间将版本设置为 android list