繁体   English   中英

如何在Android上检测屏幕旋转?

[英]How do I detect screen rotation on android?

我想通过本机检测屏幕旋转。

例如,当发生触摸事件时,我们可以通过/ dev / input / event *事件设备进行检测

这可能吗 ?

我的意思是,不使用Java。 只需使用本机方法。

WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
Display disp = wm.getDefaultDisplay();

int rotation = disp.getRotation(); // Android 2.2
Log.i( "Rotation", "rotation : " + rotation );

switch ( rotation )
{
    case Surface.ROTATION_0: 
        Log.i( "Roation", "Portrait : 0" ); 
        break;

    case Surface.ROTATION_90:
        Log.i( "Roation", "Landscape : 90" );
        break;

    case Surface.ROTATION_180:
        Log.i( "Roation", "Portrait : 180" );
        break;

    case Surface.ROTATION_270:
        Log.i( "Roation", "Landscape : 270" );
        break;
}

如果您使用的是NativeActivity基础结构(从问题上来看并不明显),则在结构ANativeActivityCallbacks有一个onConfigurationChanged回调,该回调作为ANativeActivity对象的一部分提供给您,该对象由android_app结构中的activity指向,这是android_main的参数。

只需将启动时的回调重置为您的函数即可:

void OnConfig(ANativeActivity *ac)
{
    //...
}

state->activity->callbacks->onConfigurationChanged = OnConfig;

如果您确实在使用NativeActivity,请用native-activity标记问题,而不仅仅是android-ndk 环境之间存在足够的差异,因此需要额外的标签。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM