2015-03-02 54 views
1

我有一个视频播放器。并且想要启用横向和纵向定位。但问题是玩家每次下载文件的方向发生变化时都会下载文件。 我试过使用“onCofigurationChange”,但它仍然不起作用。 我该如何解决问题?视频播放器中的Android方向更改

P.S.我已经更改了我的AndroidManifest.xml文件并添加了

android:configChanges="orientation|screenSize|keyboardHidden" 

所以问题出在我的java文件中的某处。

这里是我的代码:

public class VideoViewActivity extends Activity { 

ProgressDialog pDialog; 
VideoView videoview; 

String VideoURL = "http://v.mover.uz/ep83Sfim_s.mp4"; 


public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.videoview_main); 

    if (Build.VERSION.SDK_INT < 16) { 
     getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
       WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    } 
    else 
    { 
     View decorView = getWindow().getDecorView(); 
    // Hide the status bar. 
     int uiOptions = View.SYSTEM_UI_FLAG_FULLSCREEN; 
     decorView.setSystemUiVisibility(uiOptions); 
    // Remember that you should never show the action bar if the status bar is hidden, so hide that too if necessary. 
     ActionBar actionBar = getActionBar(); 
     actionBar.hide(); 
    } 

    //  setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 


    setupActivity(); 

} 

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

    setupActivity(); 
} 

public void setupActivity() { 
    videoview = (VideoView) findViewById(R.id.VideoView); 
      // Create a progressbar 
    pDialog = new ProgressDialog(VideoViewActivity.this); 
    // Set progressbar message 
    pDialog.setMessage("Buffering..."); 
    pDialog.setIndeterminate(false); 
    pDialog.setCancelable(false); 
    // Show progressbar 
    pDialog.show(); 

    try { 
     // Start the MediaController 
     MediaController mediacontroller = new MediaController(
       VideoViewActivity.this); 
     mediacontroller.setAnchorView(videoview); 
     // Get the URL from String VideoURL 
     Uri video = Uri.parse(VideoURL); 
     videoview.setMediaController(mediacontroller); 
     videoview.setVideoURI(video); 

    } catch (Exception e) { 
     Log.e("Error", e.getMessage()); 
     e.printStackTrace(); 
    } 

    videoview.requestFocus(); 
    videoview.setOnPreparedListener(new OnPreparedListener() { 
     // Close the progress bar and play the video 
     public void onPrepared(MediaPlayer mp) { 
      pDialog.dismiss(); 
      videoview.start(); 
     } 
    }); 
    } 
} 
+0

我想你应该在你的活动的onDestroy中添加一些代码。因为每次屏幕方向改变,活动将首先被破坏 – 2015-03-02 10:01:27

+0

只需从onConfigurationChanged方法中删除你的代码,并在超级getWindow()后添加简单的setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);在that.it工作。 – 2015-03-02 10:06:47

+0

我试过了,但它不起作用(( – Ugadaykin 2015-03-02 11:30:08

回答

0

在你onConfigurationChanged应该是:

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    //if you need change layout then do: 
    switch(newConfig.orientation) { 
     case Configuration.ORIENTATION_LANDSCAPE: 
      setContentView(layout_landscape) 
      break; 
     case Configuration.ORIENTATION_PORTRAIT: 
      setContentView(layout_portrait); 
      break; 
    } 
} 

无需调用setContentView(R.layout.videoview_main) and setupActivity()一次。

还需要在AdroidManifest中添加<activity android:name="<Your_video_avtivity>" android:configChanges="orientation" />

+0

我希望它最终能够工作,但视频在方向改变时再次重新下载 – Ugadaykin 2015-03-02 11:45:33

+0

它不应该,因为使用' onConfigurationChanged' then activity does not destroy and restart。 – Xcihnegn 2015-03-02 11:49:03

+0

do you have'”android:configChanges =“orientation”/>'in the menifest?if not then add it – Xcihnegn 2015-03-02 12:13:37