Autore Topic: android camera setDisplayOrientation(90) non funziona su Samsung Galaxy ACE  (Letto 996 volte)

Offline kap85

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Salve, sto sviluppando un'applicazione che utilizza la fotocamera in portrait mode. Ho un problema nel correggere la rotazione di 90° verso sinistra della SurfaceView per il modello Samsung Galaxy ACE (2.3.6). Sui modelli Samsung Galaxy W (2.3.5) e Galaxy Nexus (4.1.1) il codice seguente funziona correttamente e la preview risulta corretta.
Codice: [Seleziona]
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
                if (mPreviewRunning) {
                       
                        mCamera.stopPreview();

                } else {


                        Parameters parameters = mCamera.getParameters();
                        Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay();

                        if (display.getRotation() == Surface.ROTATION_0)
                        {
                                parameters.setPreviewSize(height, width);
                                mCamera.setDisplayOrientation(90);
                        }

                        if (display.getRotation() == Surface.ROTATION_90)
                        {
                                parameters.setPreviewSize(width, height);
                        }

                        if (display.getRotation() == Surface.ROTATION_180)
                        {
                                parameters.setPreviewSize(height, width);
                        }

                        if (display.getRotation() == Surface.ROTATION_270)
                        {
                                parameters.setPreviewSize(width, height);
                                mCamera.setDisplayOrientation(180);
                        }

                        mCamera.setParameters(parameters);
                        previewCamera();
                }
        }

        public void previewCamera()
        {
                try
                {
                        mCamera.setPreviewDisplay(mSurfaceHolder);
                        mCamera.startPreview();
                        mPreviewRunning = true;
                } catch (Exception e)
                {
                        Log.d(TAG, "Cannot start preview", e);
                }
        }

Ho bisogno del vostro aiuto perchè non so più che soluzione utilizzare.
Grazie Mille!!!

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:android camera setDisplayOrientation(90) non funziona su Samsung Galaxy ACE
« Risposta #1 il: 03 Settembre 2012, 12:30:42 CEST »
0
La fotocamera può non sopportare la risoluzione che imposti, devi prendere tutte le risoluzioni sopportate dalla camera attiva col metodo "getSupportedPreviewSizes" e poi scegliere quella ottimale in base a quella desiderata.
adb logcat | tee /tmp/logcat | grep TAG

Offline kap85

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:android camera setDisplayOrientation(90) non funziona su Samsung Galaxy ACE
« Risposta #2 il: 03 Settembre 2012, 12:36:22 CEST »
0
si, a forza di fare prove ho cancellato quella parte.
Ma questo può influire sulla rotazione?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:android camera setDisplayOrientation(90) non funziona su Samsung Galaxy ACE
« Risposta #3 il: 03 Settembre 2012, 12:59:50 CEST »
0
Se noti tu imposti prima la risoluzione poi la ruoti quindi la camera non sa' nulla della tua intenzione futura di ruotare il display. Non so' se è questo il problema.
adb logcat | tee /tmp/logcat | grep TAG

Offline kap85

  • Nuovo arrivato
  • *
  • Post: 3
  • Respect: 0
    • Mostra profilo
Re:android camera setDisplayOrientation(90) non funziona su Samsung Galaxy ACE
« Risposta #4 il: 03 Settembre 2012, 13:52:18 CEST »
0
Impostando prima l'orientamento del disply e poi la SupportedPreviewSize non ottengo niente. La SurfaceView rimane ruotate sempre di 90° a sinistra.  :-(
Qualcun'altro mi può aiutare?