2016-02-25 3 views
0

Так через некоторое время возиться с камерой, я, наконец, получил фактическую ориентацию камеры, работая с этим:Строка состояния остается в ландшафтном режиме при использовании камеры андроида

private void setCameraDisplayOrientation(Activity activity, 
             int cameraId, android.hardware.Camera camera) { 
    android.hardware.Camera.CameraInfo info = 
      new android.hardware.Camera.CameraInfo(); 
    android.hardware.Camera.getCameraInfo(cameraId, info); 
    int rotation = activity.getWindowManager().getDefaultDisplay() 
      .getRotation(); 
    int degrees = 0; 
    switch (rotation) { 
     case Surface.ROTATION_0: degrees = 0; break; 
     case Surface.ROTATION_90: degrees = 90; break; 
     case Surface.ROTATION_180: degrees = 180; break; 
     case Surface.ROTATION_270: degrees = 270; break; 
    } 

    int result; 
    if (info.facing == Camera.CameraInfo.CAMERA_FACING_FRONT) { 
     result = (info.orientation + degrees) % 360; 
     result = (360 - result) % 360; // compensate the mirror 
    } else { // back-facing 
     result = (info.orientation - degrees + 360) % 360; 
    } 
    camera.setDisplayOrientation(result); 
} 

Однако, в строке состояния (вещь наверху со временем и информация о сети) по-прежнему в ландшафте. Я уже включил это:

android:screenOrientation="portrait" 

в моей AndroidManifest.xml Любые идеи о том, как это исправить?

+0

Пожалуйста, пост полного ** активности ** тег манифеста приложения –

ответ

0

Если вы знаете, что вы хотите, чтобы установить ориентацию, как вы можете использовать setRequestedOrientation(int requestedOrientation) в вашем Activity

+0

Это приводит мой экран, чтобы вернуться и журнал для вывода «Приложение может делать слишком много работы над своим основным потоком». – nerras

+0

Возможно, я неправильно понял ваш вопрос. Я не думаю, что вы можете иметь статусную строку на портрете, если ваша камера находится в пейзаже, так как вы настраиваете ориентацию с помощью 'camera.setDisplayOrientation (result);' почему не просто просмотр в полноэкранном режиме, Не нужно беспокоиться о строке состояния. Что касается вашего журнала, дающего вам этот вывод, вы должны переместить любые длинные процессы из потока 'UI' – Pztar