2

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

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

1 回答 1

4

如果您使用的是 NativeActivity 基础结构(从问题中看不出来),那么onConfigurationChangedstruct 中有一个回调ANativeActivityCallbacks,它作为对象的一部分提供给您,该对象在结构内ANativeActivity指向,这是一个参数你的.activityandroid_appandroid_main

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

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

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

如果您确实在使用 NativeActivity,请用 标记问题native-activity,而不仅仅是android-ndk。有足够的环境差异来保证额外的标签。

于 2012-10-20T14:59:36.340 回答