2013-12-13 14 views
7

Ich versuche, eine Live-Kamera Vorschau in Google Glass anzuzeigen.Glaskamera Vorschau ist verstümmelt

Ich benutze alle Standardeinstellungen der Kamera (und habe auch versucht, ein paar verschiedene Bildformate zu verwenden; idealerweise kann ich eines der YUV-Formate verwenden), aber das Bild, das auf dem Display angezeigt wird, ist verstümmelt dies:

garbled preview image

das Layout ist einfach:

<?xml version="1.0" encoding="utf-8"?> 
<TextureView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/scan_preview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 

Hier ist die Aktivität Code:

public class ScanActivity extends Activity { 
    private static final String kTag = ScanActivity.class.getSimpleName(); 
    private TextureView mVideoCaptureView = null; 
    private Camera mCamera = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_scan); 
     setTitle(R.string.title_scan); 

     mVideoCaptureView = (TextureView) findViewById(R.id.scan_preview); 
     mVideoCaptureView.setKeepScreenOn(true); 
     mVideoCaptureView.setSurfaceTextureListener(new VideoCaptureTextureListener()); 
    } 

    @Override 
    protected void onPause() { 
     super.onPause(); 
     stopVideo(); 
    } 

    @Override 
    protected void onResume() { 
     super.onResume(); 
     startVideo(); 
    } 

    private void startVideo() { 
     if (mCamera != null) { 
      mCamera.release(); 
     } 
     mCamera = Camera.open(); 
     if (null != mVideoCaptureView) { 
      try { 
       mCamera.setPreviewTexture(mVideoCaptureView.getSurfaceTexture()); 
      } catch (IOException e) { 
       Log.e(kTag, "Error setting preview texture", e); 
       return; 
      } 
     } 
     mCamera.startPreview(); 
    } 

    private void stopVideo() { 
     if (null == mCamera) 
      return; 
     try { 
      mCamera.stopPreview(); 
      mCamera.setPreviewDisplay(null); 
      mCamera.setPreviewTexture(null); 
      mCamera.release(); 
     } catch (IOException e) { 
      Log.w(kTag, e); 
     } 
     mCamera = null; 
    } 

    private final class VideoCaptureTextureListener implements TextureView.SurfaceTextureListener { 

     @Override 
     public boolean onSurfaceTextureDestroyed(SurfaceTexture surface) { 
      stopVideo(); 
      return true; 
     } 

     @Override 
     public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { 
      startVideo(); 
     } 

     @Override 
     public void onSurfaceTextureSizeChanged(SurfaceTexture surface, int width, int height) { 
     } 

     @Override 
     public void onSurfaceTextureUpdated(SurfaceTexture surface) { 
     } 
    } 
} 

Haben Sie eine Idee, warum diese vollständig unmanipulierte Kameravorschau nicht richtig angezeigt wird?

+2

möglich Duplikat [Google Glass Bildvorschau mit neuer XE10 Release verschlüsselte] (http://stackoverflow.com/questions/19235477/google-glass-preview-image-scrambled -with-new-xe10-release) –

Antwort

10

Dies wurde hier beantwortet: https://stackoverflow.com/a/19257078/950427

Langfristige:

Camera.Parameters params = camera.getParameters(); 
params.setPreviewFpsRange(30000, 30000); 
camera.setParameters(params); 

Shorterm (Prüfung):

Für schnelle Prüfung und Nutzung, einfach zu Ihrem äußersten hinzufügen Ansicht:

android:layout_margin="1dp" 

Zum Beispiel:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_margin="1dp" 
    android:layout_height="match_parent" > 

    <org.opencv.android.JavaCameraView 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     android:id="@+id/tutorial2_activity_surface_view" /> 

</LinearLayout> 
+1

Beim Abfragen der Kamera wird die maximale previewFpsRange als 60000 aufgelistet. Ich denke, es lohnt sich, die nächste Version zu überprüfen. – squidpickles

+0

Noch immer gebrochen von XE12. – squidpickles

+0

@slugchewer Definitiv nicht, ich habe gestern gerade an meiner Kamera-App gearbeitet. Bitte schauen Sie sich an: https://github.com/jaredsburrows/OpenQuartz/tree/master/example-apps –