09.195: E/AndroidRuntime(8340): FATAL EXCEPTION: main
03-16 23:33:09.195: E/AndroidRuntime(8340): java.lang.RuntimeException: setParameters failed
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.hardware.Camera.native_setParameters(Native Method)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.hardware.Camera.setParameters(Camera.java:1295)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at cn.itcast.takepicture.TakePictureActivity.startPreview(TakePictureActivity.java:78)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at cn.itcast.takepicture.TakePictureActivity.access$0(TakePictureActivity.java:61)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at cn.itcast.takepicture.TakePictureActivity$1.surfaceCreated(TakePictureActivity.java:45)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.view.SurfaceView.updateWindow(SurfaceView.java:533)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.view.SurfaceView.access$000(SurfaceView.java:81)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:169)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:590)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1622)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2447)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.os.Looper.loop(Looper.java:137)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at android.app.ActivityThread.main(ActivityThread.java:4437)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at java.lang.reflect.Method.invokeNative(Native Method)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at java.lang.reflect.Method.invoke(Method.java:511)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
03-16 23:33:09.195: E/AndroidRuntime(8340):  at dalvik.system.NativeStart.main(Native Method)看不懂的异常exception

解决方案 »

  1.   

    源码
    public class TakePictureActivity extends Activity {
    private SurfaceView surfaceView;
    private Camera camera;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    this.setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
    super.onCreate(savedInstanceState);
    setContentView(R.layout.takepic);
    //this.setRequestedOrientation(1);
    surfaceView=(SurfaceView)findViewById(R.id.surfaceView1);

    surfaceView.getHolder().setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    surfaceView.getHolder().addCallback(new Callback() {

    public void surfaceDestroyed(SurfaceHolder holder) {
    System.out.println("surfaceDestroyed()..");
    }

    public void surfaceCreated(SurfaceHolder holder) {
    System.out.println("surfaceCreated()..");
    startPreview();
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int width,
    int height) {
    }
    });
    }
    @Override
    protected void onResume() {
    super.onResume();
    //打开相机
    camera=Camera.open();
    System.out.println("onResume()..");
    //startPreview();
    }
    private void startPreview(){
    Display display= this.getWindowManager().getDefaultDisplay();
    //预览画面
    Parameters params= camera.getParameters();
    //设置拍照一些参数
    params.setPreviewSize(display.getWidth(), display.getHeight());//设置预览照片的大小
    params.setPreviewFrameRate(3);//每秒3帧
    params.setPictureFormat(PixelFormat.JPEG);//设置照片的输出格式
    params.set("jpeg-quality", 85);//照片质量
    params.setPictureSize(display.getWidth(), display.getHeight());//设置照片的大小
    camera.setParameters(params);
    //指定把预览的画面显示到
    try {
    camera.setPreviewDisplay(surfaceView.getHolder());
    camera.startPreview();
    System.out.println("开始预览....");
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    @Override
    protected void onPause() {
    camera.release();
    camera=null;
    super.onPause();
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    if(keyCode==KeyEvent.KEYCODE_SEARCH){
    camera.autoFocus(null);
    return true;
    }
    else if(keyCode==KeyEvent.KEYCODE_CAMERA){
    camera.takePicture(null, null, new PictureCallback() {
    public void onPictureTaken(byte[] data, Camera camera) {
    File f=new File(Environment.getExternalStorageDirectory(),"gz1008/"+new Date().getTime()+".jpg");
    try {
    OutputStream out=new FileOutputStream(f);
    //直接存数据
    //out.write(data);
    //转换成位图后调用compress来压缩保存
    Bitmap img=BitmapFactory.decodeByteArray(data, 0, data.length);
    img.compress(CompressFormat.JPEG, 50, out);
    out.close();
    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    //开始预览
    camera.startPreview();
    }
    });
    camera.stopPreview();
    return true;
    }
    return super.onKeyDown(keyCode, event);
    }}
      

  2.   

    有些 Parameters 不支持 你这段log 无法解决问题。 CameraSettings 里面 有些参数的初始化 可能某些参数 有问题 你截取的这段log 上面有参数加载的log 里面有错误参数的提示