2016-02-25 2 views
0

Ainsi, après un certain temps de déconner avec l'appareil photo, je l'ai finalement obtenu l'orientation de la caméra réelle travailler avec ceci:barre d'état reste en mode paysage lorsque vous utilisez l'appareil photo Android

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); 
} 

Cependant, la barre d'état (la chose au sommet avec le temps et l'information de réseau) est toujours dans le paysage. Je l'ai déjà inclus ceci:

android:screenOrientation="portrait" 

dans mon AndroidManifest.xml Toutes les idées sur la façon de résoudre ce problème?

+0

S'il vous plaît afficher l'activité complète ** ** tag de votre application manifeste –

Répondre

0

Si vous savez ce que vous voulez définir votre orientation que vous pouvez utiliser dans votre setRequestedOrientation(int requestedOrientation)Activity

+0

Cela provoque mon écran pour revenir en arrière et le journal pour sortir "L'application peut faire trop de travail sur son thread principal." – nerras

+0

J'ai peut-être mal compris votre question. Je ne crois pas que vous pouvez avoir la barre d'état en mode portrait si votre caméra est en mode paysage, puisque vous définissez l'orientation avec 'camera.setDisplayOrientation (résultat);' pourquoi ne pas avoir un aperçu de la caméra en plein écran Ne vous inquiétez pas pour la barre d'état. En ce qui concerne votre journal vous donnant cette sortie, vous devez supprimer tous les longs processus du thread 'UI' – Pztar