2011-04-13 1 views
1

내가하고있는 것에 뭔가 이상한 것을 볼 수는 없지만, 미리보기를 시작하고 초기화하기 위해 카메라에서 휴대폰을 가져올 수 없습니다.안드로이드 카메라 미리보기가 작동하지 않습니다. (HTC MyTouch 3G Slide Android 2.2)

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 

아이디어 :

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 

    } 
} 

내 로그 캣은 다음을 보여줍니다 나는 아래와 같은 문제를 전시 매우 간단한 응용 프로그램을 만들었습니다? 어제 안드로이드 2.2로 업데이트되었습니다. 내 카메라 API를 깨뜨리지 않았 으면 좋겠어요.

답변

0

SDK와 함께 제공되는 APIDemos/graphics/CameraPreview를 살펴보십시오.

알렉스

UPDATE : 또한 시도 ImageFormat에 PixelFormat에서 변경. 2.2에 소개 된 것으로 나타났습니다

관련 문제