2017-02-03 3 views
-1

Ich mache eine App, die die Kamera als Hintergrund öffnet, wenn die App startet, ähnlich Snapchat. Der Code, den ich gerade verwende, hat Teile darin veraltet und ich weiß nicht, wie ich sie beheben kann. Jede Hilfe wird geschätzt. Mein Code ist unten.Kamera öffnen, wenn App startet

public class CameraView extends SurfaceView implements SurfaceHolder.Callback { 

private SurfaceHolder mHolder; 
private Camera mCamera; 

public CameraView(Context context, Camera camera) { 

    super(context); 
    mCamera = camera; 
    mCamera.setDisplayOrientation(90); 
    //get the holder and set this class as the callback, so we can get camera data here 
    mHolder = getHolder(); 
    mHolder.addCallback(this); 
    mHolder.setType(SurfaceHolder.SURFACE_TYPE_NORMAL); 
} 

public CameraView(Launcher launcher, android.hardware.Camera mCamera) { 
    super(launcher, (AttributeSet) mCamera); 
} 

@Override 
public void surfaceCreated(SurfaceHolder surfaceHolder) { 
    try{ 
     //when the surface is created, we can set the camera to draw images in this surfaceholder 
     mCamera.setPreviewDisplay(surfaceHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     Log.d("ERROR", "Camera error on surfaceCreated " + e.getMessage()); 
    } 
} 

@Override 
public void surfaceChanged(SurfaceHolder surfaceHolder, int i, int i2, int i3) { 
    //before changing the application orientation, you need to stop the preview, rotate and then start it again 
    if(mHolder.getSurface() == null)//check if the surface is ready to receive camera data 
     return; 

    try{ 
     mCamera.stopPreview(); 
    } catch (Exception e){ 
     //this will happen when you are trying the camera if it's not running 
    } 

    //now, recreate the camera preview 
    try{ 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     Log.d("ERROR", "Camera error on surfaceChanged " + e.getMessage()); 
    } 
} 

@Override 
public void surfaceDestroyed(SurfaceHolder surfaceHolder) { 
    mCamera.stopPreview(); 
    mCamera.release(); 
} 

Das Problem ist, dass diese Zeilen veraltet sind.

mCamera.setDisplayOrientation(90); 
mCamera.setPreviewDisplay(surfaceHolder); 
mCamera.startPreview(); 
mCamera.stopPreview(); 
mCamera.release(); 

Mein Xml ist unten.

<FrameLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context=".MainActivity"> 

    <FrameLayout 
     android:id="@+id/camera_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

    </FrameLayout> 

</FrameLayout> 
+1

Es ist nur veraltet. Das bedeutet nicht, dass es nicht funktionieren wird. Verwenden Sie 'Camera2 API', wenn Sie den neuesten Code verwenden möchten. – Piyush

+0

Wie implementiere ich das, wenn ich die App starte, funktioniert es nicht und der veraltete Code wird als Fehler angezeigt. –

+0

Welchen Fehler sagt es? – Piyush

Antwort

0

Sie haben etwas falsch in Ihrem Projekt-Setup oder importiert - der alte Kamera-API ist veraltet, aber das verhindert nicht, dass es von in irgendeiner Weise verwendet werden.

Wenn Ihr Code-Snippet der Code ist, fehlen mindestens Paketimporte. Wenn nicht, poste bitte die tatsächlichen Fehlermeldungen, die du bekommst.

Android Studio kann Warnungen aufstellen, aber das ist es, wenn alles richtig eingerichtet ist.

Verwandte Themen