Search code examples
androidvideosurfaceview

SurfaceView restart video whenever changing device orientation


I am playing video using SurfaceView in Android.

Whenever I rotate the device and the screen changes it's orientation, the video starts playing from the start.

I want the video to be resumed on screen rotation.

Please guide me.


Solution

  • Add this into your Manifest.xml file.

    android:configChanges="orientation"
    

    and you can use this to set height and width etc accordingly

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
       if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
            //Todo      
        } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
            // Todo
        }
    }
    

    Caution: Beginning with Android 3.2 (API level 13), the "screen size" also changes when the device switches between portrait and landscape orientation. Thus, if you want to prevent runtime restarts due to orientation change when developing for API level 13 or higher (as declared by the minSdkVersion and targetSdkVersion attributes), you must include the "screenSize" value in addition to the "orientation" value. That is, you must decalare android:configChanges="orientation|screenSize". However, if your application targets API level 12 or lower, then your activity always handles this configuration change itself (this configuration change does not restart your activity, even when running on an Android 3.2 or higher device).

    (copied from : nmr, citing docs)