在Android 2.2的相机死机 [英] Camera crashes in Android 2.2

查看:112
本文介绍了在Android 2.2的相机死机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我会试探我在Android SDK应用程序的事情,从1.5到2.2,相机code。在我的活动能正常工作。 2.1设备上运行它也在努力。但是,相同的应用程序不符合2.2的HTC Desire和Nexus One和应用程序崩溃的工作。任何想法,为什么他们会是这样吗?

现在用导入android.hardware.Camera;

里面的onCreate我有这样的:

  preVIEW =(SurfaceView)findViewById(R.id. preVIEW);
        previewHolder = preview.getHolder();
        previewHolder.addCallback(surfaceCallback);
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
 

和回调

  SurfaceHolder.Callback surfaceCallback =新SurfaceHolder.Callback(){

    @覆盖
    公共无效surfaceDestroyed(SurfaceHolder持有者){
        camera.stop preVIEW();
        camera.release();
        摄像头= NULL;
    }

    @覆盖
    公共无效surfaceCreated(SurfaceHolder持有者){
        相机= Camera.open();
        尝试 {
            camera.set previewDisplay(previewHolder);
        }赶上(的Throwable T){
            Log.e(TAG,异常的一套previewDisplay,T);
            Toast.makeText(CameraActivity.this,t.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    }

    @覆盖
    公共无效surfaceChanged(SurfaceHolder持有人,INT格式,诠释的宽度,
            INT高度){
        Camera.Parameters参数= camera.getParameters();
        parameters.set previewSize(宽,高);
        camera.setParameters(参数);
        camera.start preVIEW();
    }
};
 

解决方案

需要获取最佳镜头尺寸后置摄像头的preVIEW大小。下面是详细信息和code为fix-

HTTP://$c$c.google。 COM / P /安卓/问题/详细信息?ID = 7909

I have tested my application on the Android SDK on everything from 1.5 to 2.2 and the camera code in my activity works fine. Running it on a device with 2.1 is also working. But the same app does not work with 2.2 on HTC Desire and Nexus One and the app crashes. Any ideas why they might be happening?

Am using import android.hardware.Camera;.

Inside onCreate I have this:

preview = (SurfaceView) findViewById(R.id.preview);
        previewHolder = preview.getHolder();
        previewHolder.addCallback(surfaceCallback);
        previewHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);

And the callback is

SurfaceHolder.Callback surfaceCallback = new SurfaceHolder.Callback() {

    @Override
    public void surfaceDestroyed(SurfaceHolder holder) {
        camera.stopPreview();
        camera.release();
        camera = null;
    }

    @Override
    public void surfaceCreated(SurfaceHolder holder) {
        camera = Camera.open();
        try {
            camera.setPreviewDisplay(previewHolder);
        } catch (Throwable t) {
            Log.e(TAG, "Exception in setPreviewDisplay", t);
            Toast.makeText(CameraActivity.this, t.getMessage(),
                    Toast.LENGTH_LONG).show();
        }
    }

    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width,
            int height) {
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPreviewSize(width, height);
        camera.setParameters(parameters);
        camera.startPreview();
    }
};

解决方案

Need to set the preview size of the camera after getting the optimal camera sizes. Here are the details and the code for the fix-

http://code.google.com/p/android/issues/detail?id=7909

这篇关于在Android 2.2的相机死机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆