2012-10-20 2 views
2

Я хочу обнаружить поворот экрана через native.Как определить поворот экрана на Android?

для примера, когда касание произошло событие, мы можем обнаружить с помощью/DEV/ввод/события * устройство события

это возможно?

Я имею в виду, не используя 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; 
} 
+0

Вы не можете получить доступ к файлам/dev/input из приложения, работающего на защищенном устройстве (т. Е. Потребительского устройства, которое не было внедрено). –

ответ

4

Если вы используете NativeActivity инфраструктуры (это не очевидно из вопроса), есть обратный вызов onConfigurationChanged в структуры ANativeActivityCallbacks, которая доступна для вас, как часть ANativeActivity объекта, на который указывает на по activity в структуре android_app, которая является параметром вашего android_main.

Просто сбросить функцию обратного вызова при запуске вашей функции:

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

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

Если вы действительно используете NativeActivity, пожалуйста, помечать вопрос с native-activity, а не только android-ndk. Существует достаточно разницы в окружении, чтобы гарантировать дополнительный тег.

Смежные вопросы