2016-07-14 16 views
0

Hallo, ich versuche, benutzerdefinierte Kamera-App nach den Android-Entwicklerhandbücher zu bauen. Der Code ist sauber ohne Fehler, ich folgte dem Leitfaden Schritt zu Schritt, aber wenn ich die App starte es stürzt ab. Ich benutze die veraltete Kamera API. Kamera App Absturz beim Start

Dies ist der Code meiner eigenen Surface genannt CameraPreview

package guide.android.cameraappandroidguide; 

import android.content.Context; 
import android.util.Log; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 
import java.io.IOException; 


public class CameraPreview extends SurfaceView implements SurfaceHolder.Callback{ 

private static final String TAG = "Error"; 

private SurfaceHolder mHolder; 
private android.hardware.Camera mCamera; 


public CameraPreview(Context context,android.hardware.Camera mCamera) { 
    super(context); 
    this.mCamera = mCamera; 

    mHolder = getHolder(); 
    mHolder.addCallback(this); 
} 


@Override 
public void surfaceCreated(SurfaceHolder holder) { 
    try { 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 
     Log.e("Surface creata","Ottimo"); 
    } catch (IOException e) { 
     Log.e(TAG,"Error setting camera preview: " + e.getMessage()); 
    } 

} 

@Override 
public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 

    if(mHolder.getSurface()==null){ 
     return; 
    } 

    try { 
     mCamera.stopPreview(); 
    }catch (Exception e){ 
     Log.e(TAG,"Error setting camera preview: "+e.getMessage()); 
    } 

    try { 
     mCamera.setPreviewDisplay(mHolder); 
     mCamera.startPreview(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
     Log.e(TAG,"Error setting preview: "+e.getMessage()); 
    } 


} 

@Override 
public void surfaceDestroyed(SurfaceHolder holder) { 

} 
} 

Das ist mein MainActivity ist

package guide.android.cameraappandroidguide; 

import android.hardware.Camera; 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.Window; 
import android.view.WindowManager; 
import android.widget.FrameLayout; 

public class MainActivity extends AppCompatActivity { 

private Camera mCamera; 
private CameraPreview mCameraPreview; 



@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    //Full screen 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
      WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_main); 

    mCamera = getCameraInstance(); 
    mCameraPreview = new CameraPreview(this,mCamera); 

    FrameLayout frameLayoutPreview = (FrameLayout)findViewById(R.id.frame_layout_preview); 
    frameLayoutPreview.addView(mCameraPreview); 

} 

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

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    releaseCamera(); 
} 


public static Camera getCameraInstance(){ 
    Camera c= null; 
    //Proviamo ad aprire la Camera 
    try { 
     c = Camera.open(); 
    }catch (Exception e){ 
     Log.e("Error","Can't open th camera device"); 
    } 
    return c; 
}; 

public void releaseCamera(){ 
    if(mCamera!=null){ 
     mCamera.release(); 
     mCamera=null; 
    } 

} 

} 

Das ist mein LogCat.

enter image description here

Der App Absturz beim Start, ich kann nicht verstehen, was das Problem ist .. Wer kann mir helfen, zu verstehen, wie ich die Fehler finden kann logcat oder andere Debugging-Methoden?

Danke

+0

können Sie Ihr Manifest teilen? –

+0

in Manifest habe ich Anwendungen erklärt-Erlaubnis für die Kamera..in jedem Fall habe ich behoben @chengsam –

Antwort

0

versuchen diese Zeile hinzufügen:

mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 

danach:

mHolder = getHolder(); 
mHolder.addCallback(this); 
+0

Wirklich danke. Ich habe es behoben und das hinzugefügt. –

Verwandte Themen