La camera è errata a less che la tastiera non sia aperta
Ho 2 androidi qui.
In entrambi, quando accendo la mia applicazione, la camera si presenta terribilmente sbagliata (ruotata di 90 gradi lateralmente e allungata di solito …)
In uno dei telefoni c'è una tastiera e quando apro la tastiera, l'applicazione funziona correttamente … Poiché la tastiera forzava l'orientamento, ho capito che il problema è che i telefoni si aspettano sempre lo stesso orientamento, ma l'SDK non è d'accordo.
Come faccio a informare la telecamera quale orientamento si suppone di utilizzare per tutto il tempo?
One Solution collect form web for “La camera è errata a less che la tastiera non sia aperta”
Se la tua applicazione viene eseguita su v2.2 o superiore puoi ruotare l'orientamento della camera in ritratto utilizzando camera.setDisplayOrientation (90).
Prima di v2.2, la camera viene visualizzata solo nell'orientamento orizzontale, per cui è necessario costringere l'attività all'orientamento orizzontale.
Per supportre i dispositivi prima di v2.2 (livello API 8) e dopo, una soluzione è quella di predefinire l'orientamento dell'attività verso il paesaggio in AndroidManifest.xml. Quindi, al controllo di runtime, controllare il livello API e, se froyo o superiore, modificare l'orientamento di attività in ritratto e ruotare la visualizzazione della camera.
//in activity onCreate method if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.FROYO) setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); //After opening camera - call via reflection Method rotateMethod = android.hardware.Camera.class.getMethod("setDisplayOrientation", int.class); rotateMethod.invoke(mCamera, 90);
Questa è la soluzione più semplice, e speriamo che i nuovi dispositivi vengano usciti da v2.1 e in basso abbasseranno il radar.