2

我知道这个问题很糟糕,做了数千次;但说真的,我已经被困了 4 个小时试图解决这个问题。从 2009 年到今天,我进入了每个链接,所有链接都给出了相同的解决方案(**** 知道为什么)不适用于我的案例。

这是我清单中的活动:

<activity 
android:name="com.example.activities.CamerasActivity"
android:configChanges="orientation|screenSize">
</activity> 

我正在使用 SDK 4.0 或更高版本:

<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />

这是我的课:

public class CamerasActivity extends Activity {

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

        setContentView(R.layout.cameras_activity);

        VideoView videoView = (VideoView)findViewById(R.id.action_cameras);
        videoView.setVideoPath("/storage/sdcard/teste.mp4");
        videoView.start();
    }

    //Still not working
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);

        if(newConfig.orientation==Configuration.ORIENTATION_LANDSCAPE)
        {
            Log.d("System.out", "Welcome to Landscape Mode");
        }
        else if(newConfig.orientation==Configuration.ORIENTATION_PORTRAIT)
        {
            Log.d("System.out", "Welcome to portrait mode");
        }
    }
}

当我像这样运行我的应用程序时,我可以在纵向模式下看到,工作正常。如果我android:screenOrientation="landscape"在清单上使用,我可以看到在横向模式下强制。这意味着我的布局很好,但为什么我onConfigurationChanged在尝试旋转屏幕时没有被调用?我错过了什么?

编辑:

AVD 配置:

在此处输入图像描述

启用自动旋转: 在此处输入图像描述

视频原样: 在此处输入图像描述 我的 logcat 上没有输出。

4

1 回答 1

2

onConfigurationChanged方法在您物理旋转 Android 设备时调用。因此,您需要旋转您的设备才能看到该方法被调用。

注意:当您更改语言环境等时,也会调用 onConfigurationChanged。有关更多信息,请参见此处

另外,我会为android:configChanges指令设置这些值:

android:configChanges="orientation|screenSize|layoutDirection

此外,问题61671可能与本文中描述的屏幕方向问题有关。截至 2014 年 4 月,Google 尚未解决此缺陷/错误。

解决方法

如此 SO链接中所述,如果设备类型设置为通用 7" 平板电脑而不是Nexus 7 ,则屏幕方向可能会起作用。

于 2014-04-02T02:58:41.383 回答