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

时间:2012-10-20 08:36:41

标签: android android-ndk

我想通过原生检测屏幕旋转。

举个例子,当触摸事件发生时,我们可以通过/ 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;
}

1 个答案:

答案 0 :(得分:4)

如果您正在使用NativeActivity基础结构(问题并不明显),那么结构onConfigurationChanged中有一个回调ANativeActivityCallbacks,它作为{{1}的一部分提供给您对象,ANativeActivity结构中activity指向的对象,是android_app的参数。

只需将启动时的回调重置为您的功能:

android_main

如果您确实使用的是NativeActivity,请使用void OnConfig(ANativeActivity *ac) { //... } state->activity->callbacks->onConfigurationChanged = OnConfig; 标记问题,而不只是native-activity。有足够的环境差异来保证额外的标签。