2010-09-11 6 views
6

Ich versuche eine App zu entwickeln, die die Kamera verwendet. Bisher hat es gut funktioniert, außer dass ich die Orientierung nicht zum "Porträt" zwingen kann. Es scheint gut zu funktionieren, wenn ich alle Aktivitäten auf "Landschaft" setze, weil die Kameravorschau in die Landschaft zu passen scheint.Verwenden der Kamera im Hochformat Ausrichtung

Gibt es trotzdem eine Kamera im Hochformat?

+0

befindet sich auf einem G1-Gerät oder nicht g1 Gerät als G1S für Orientierungen –

+0

Hallo Fred eine Anzeige Kameravorschau Fehler hatte, ich bin mit einem Samsung Galaxy S ... – paperclip

Antwort

6

Android-Geräte v2.2 und höher enthalten und API zu drehen die Anzeige zum Hochformat. Geräte unter 2.2 sind nur im Querformat verfügbar. Am besten erkennen Sie, ob das Gerät 2,2 und um 90 Grad gedreht ist. Für Geräte unter 2.2 auf die Landschaft zurückgreifen. Die gute Nachricht ist, dass die meisten Android-Geräte auf 2.2 und höher sind.

überprüfen meine Antwort hier aus für weitere Informationen:

Camera is wrong unless keyboard is open

+0

gutes Wissen, ich könnte viele Leute sehen, die dieses Problem haben, ohne eine Lösung zu finden. –

+0

Möglicherweise möchten Sie eine Einstellung in Ihrer App hinzufügen, damit Nutzer Landschaft erzwingen können. Ich habe getestet und es scheint, dass es unmöglich ist, Portrait auf einigen Geräten zu erzwingen. Soweit ich weiß, können diese Geräte nicht auf Hochformat eingestellt werden, auch nicht mit Android 2.2+: "GT-S6102", "GT-S5360", "GT-S5660", "YP-G1", "YP-G70". Ich bin sicher, es gibt noch viel mehr: / –

0

bearbeiten: Ich war mitten in Adobe AIR für Android-Entwicklung, als ich diese Frage beantwortete, und im Rückblick merke ich, diese Frage galt nicht für Adobe AIR.

Adobe sagt:

Auf Geräten, die die Ausrichtung des Bildschirms, wie Mobiltelefone ändern können, ein Video-Objekt an der Kamera angebracht nur aufrecht Video in einer Landschaft-Aspekt Orientierung zeigen. Daher sollten mobile Apps beim Anzeigen von Videos eine Ausrichtung im Querformat verwenden und sollten nicht automatisch rotieren.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Camera.html

Wollen Sie wirklich die Kamera im Hochformat verwenden, ist mein Vorschlag, das Video-Objekt zu drehen.

Hier einiger Beispielcode, der in Grad (Quelle von anderswo auf Stackoverflow gezogen wurde), um das Videoobjekt (_video) um einen Winkel dreht:

 var matrix:Matrix = _video.transform.matrix; 
     var rect:Rectangle = _video.getBounds(this); 
     matrix.translate(- (rect.left + (rect.width/2)), - (rect.top + (rect.height/2))); 
     matrix.rotate((angle/180)*Math.PI); 
     matrix.translate(rect.left + (rect.width/2), rect.top + (rect.height/2)); 
     _video.transform.matrix = matrix; 
3
public void surfaceCreated(SurfaceHolder holder) 
{ 
// The Surface has been created, acquire the camera and tell it where to draw. 
mCamera = Camera.open(); 

Parameters params = mCamera.getParameters(); 

if (this.getResources().getConfiguration().orientation != Configuration.ORIENTATION_LANDSCAPE) 
{ 
params.set("orientation", "portrait"); 
mCamera.setDisplayOrientation(90); 
} 

try 
{ 
mCamera.setPreviewDisplay(holder); 
} 
catch (IOException exception) 
{ 
mCamera.release(); 
mCamera = null; 
} 

} 
Verwandte Themen