2012-03-29 13 views
2

Ich arbeite an einer Android App, die eine Kameravorschau zeigt. Idealerweise möchte ich, dass die App im Hochformat arbeitet, was bedeutet, dass ich mit der Drehung des Vorschaubildes der Kamera umgehen muss.Android 2.2. Portrait Kamera Vorschau

Ich muss nur API Level 8 (Android Version 2.2) und höher unterstützen, also kann ich Camera.setDisplayOrientation verwenden, um die Ausrichtung festzulegen, und die API-Dokumentation für diese Methode enthält eine setDisplayOrientation-Funktion, die das tut, was ich will. Das einzige Problem ist, dass es die API Level 9 Camera.CameraInfo verwendet, um die Ausrichtung der Kamera in Bezug auf das Gerät zu erhalten (vermutlich, um Landscape vs Portrait-Geräte zu behandeln).

Also ist es sicher anzunehmen, dass ich setDisplayOrientation (90) für alle Level 8-Geräte tun kann und CameraInfo.orientation nur für neuere Geräte verwende?

Antwort

1

Als Follow-up für alle anderen, die dies finden - ich habe keine definitive Antwort zu diesem gefunden, also habe ich wie oben vorgeschlagen (setDisplayOrientation (90)) für 2.2 Geräte und veröffentlichte die App. Es hat ungefähr 70.000 Downloads und keine Berichte über das Kamera-Display, das falsch um 90 Grad gedreht wurde, so dass es scheint, dass dies eine vernünftige Lösung ist.

0

ich den Link zum Android-Entwickler bin Entsendung helfen in der Kamera Frage: http://developer.android.com/guide/topics/media/camera.html

Über Ihre Frage in bestimmten, ich habe einen Blick auf die API und ich denke, da die surfaceChanged Methode jedes Mal aufgerufen wird, Eine Änderung der Oberfläche ist gemacht und die Ausrüstung hat nur 2 Position, Sie haben wahrscheinlich Recht, da Sie die korrigierten Methoden in der SurfaceChanged-Methode implementieren. Versuchen Sie es zu implementieren und wenn Sie es nicht zur Arbeit bringen können, posten Sie das Problem und ich werde versuchen, mehr zu helfen.

+0

Meine Frage ist, ob dies ein sicherer Weg ist, es zu tun für ** alle ** v2 .2 Geräte. Es funktioniert gut auf meinem HTC Desire, ich weiß nur nicht, ob es eine Landschaft standardmäßig von V2.2-Geräten (zum Beispiel), dass dies möglicherweise nicht funktioniert. –

+0

Die API ist generisch. Wenn es bei Ihnen funktioniert, sollte es in jedem anderen 2.2-Modell funktionieren. und ja, meiner Meinung nach (6 Monate Programmierung) ist es ziemlich sicher, es so zu machen. – Tomax

2

Ich habe folgendes auf einem HTC Evo Shift-mit einem Projekt auf API8 versucht (arbeitete gut):

Configuration cfg = mContext.getResources().getConfiguration(); 
if (cfg.orientation == Configuration.ORIENTATION_PORTRAIT) { 
    mCamera.setDisplayOrientation(90); 
} 
Verwandte Themen