【问题标题】:Android Camera Preview Not Working (HTC MyTouch 3G Slide Android 2.2)Android 相机预览不工作(HTC MyTouch 3G Slide Android 2.2)
【发布时间】:2011-04-13 18:50:29
【问题描述】:

我看不出我正在做的事情有什么问题,但我无法让手机上的相机初始化并开始绘制预览。我创建了一个非常简化的应用程序,它表现出同样的问题,如下所示:

package com.ct;

import java.io.IOException;
import java.util.List;

import android.app.Activity;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.hardware.Camera.Size;
import android.os.Bundle;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class TestActivity extends Activity implements SurfaceHolder.Callback {
    SurfaceHolder cameraPreviewHolder;
    Camera camera;
    SurfaceView cameraPreview;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cameraPreview = (SurfaceView) findViewById(R.id.SurfaceCamera);
        cameraPreviewHolder = cameraPreview.getHolder();
        cameraPreviewHolder.addCallback(this);
    }
    @Override
    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
        camera = Camera.open();
        camera.unlock();
        Parameters p = camera.getParameters();

        List<Size> sizes = p.getSupportedPreviewSizes();
        int bestFit=0;
        int difference = Integer.MAX_VALUE;
        for(int i=0; i<sizes.size(); i++){
            Size s = sizes.get(i);
            int dif = (width-s.width)+(height-s.height);
            if(s.width<=width && s.height<=height && dif>0 && dif < difference){
                bestFit = i;
                difference = dif;
            }
        }
        Size s = sizes.get(bestFit);

        p.setPreviewSize(s.width, s.height);
        p.setPictureFormat(PixelFormat.JPEG);
        camera.setParameters(p);


        try {
            camera.setPreviewDisplay(cameraPreviewHolder);
            camera.startPreview();
        } catch (IOException e) {

        }
    }
    @Override
    public void surfaceCreated(SurfaceHolder arg0) {
    // TODO Auto-generated method stub

    }
    @Override
    public void surfaceDestroyed(SurfaceHolder arg0) {
    // TODO Auto-generated method stub

    }
}

我的 logcat 显示如下:

W/CameraSwitch( 2020): open main camera
W/CameraSwitch( 2020): no file - can't switch camera
E/QualcommCameraHardware( 68): native_access_parm: error (No such file or directory): fd 14, type 1, length 32, status 0
E/mm-camera 7x-vfe( 68): Received VFE start ACK!!! This is a user preview start.
E/CameraService( 68): registerBuffers failed with status -38
W/dalvikvm( 2020): threadid=1: thread exiting with uncaught exception (group=0x40028a00)
W/InputConnectionWrapper.ICC(  176): Timed out waiting on IInputContextCallback

想法?我昨天刚刚更新到 Android 2.2,我希望这不会破坏我的相机 API...

【问题讨论】:

    标签: android android-camera android-2.2-froyo


    【解决方案1】:

    查看 SDK 附带的 APIDemos/graphics/CameraPreview。

    亚历克斯

    更新:也尝试从 PixelFormat 更改为 ImageFormat。我注意到这是在 2.2 中引入的

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多