0
你好,我试图建立自定义相机应用程序遵循Android开发人员指南。该代码是干净的,没有错误,我遵循引导步骤,但当我启动应用程序它崩溃。我正在使用已弃用的相机api。相机应用程序开始崩溃
这是我自己的SurfaceView叫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) {
}
}
代码这是我的MainActivity
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;
}
}
}
这是我的logcat的。
在启动应用程序崩溃,我无法理解有什么问题.. 任何人都可以帮助我了解如何我能找到使用logcat的或其他的调试方法错误?
谢谢
你可以分享你的表现? –
在清单中我已经声明使用相机的权限..在任何情况下,我已修复了@chengsam –