2012-11-04 6 views
1

나는 기본 카메라를 개발했으며 작동하도록 노력 중입니다. 여기 맞춤형 안드로이드 카메라 작동을 시도 중

카메라 코드

package com.example.camera; 

    import java.io.IOException; 

import android.content.Context; 
import android.hardware.Camera; 
import android.view.SurfaceHolder; 
import android.view.SurfaceView; 

public class CameraView extends SurfaceView implements SurfaceHolder.Callback { 

private SurfaceHolder holder; 
private Camera camera; 
Object size; 

public CameraView(Context context) { 

     super(context); 
     holder = this.getHolder(); 
     holder.addCallback(this); 
     holder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS); 
     holder.addCallback(this); 
} 
public Camera getCamera(){ 
     return camera; 
} 

public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) { 

     Camera.Parameters params = camera.getParameters();//Getting paramaters. 

     if(size!=null){ //make sure we don't pull a NullException. 
       params.setPreviewSize(width, height);//gotta set the size, since we know it. 
     } 
     camera.setParameters(params);//gotta set the paramaters now. 
     camera.startPreview();//starting the preview. 
} 

public void surfaceCreated(SurfaceHolder arg0) { 
    try{ 
     camera = Camera.open();//setting the camera up. 
     camera.setPreviewDisplay(holder);//making the display our current SurfaceHolder 
} catch (IOException e){ 
     e.printStackTrace();//printing out the error message if it happens. 
} 

} 

public void surfaceDestroyed(SurfaceHolder arg0) { 
    camera.stopPreview(); 
    camera.release(); 
    camera = null; 


} 

     } 

이제 임 난 그냥 캔트가

패키지 com.example.camera를 작동하게하는 것 내 주요 방법에서 카메라를 호출하려고;

import java.io.ByteArrayInputStream; 
import java.io.InputStream; 

import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.hardware.Camera; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Button; 
import android.widget.ImageView; 

public class main { 
private static final int CAMERA_REQUEST = 1888; 
private ImageView imageView; 


    public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.main); 
      this.imageView = (ImageView)this.findViewById(R.id.imageView1); 
      Button photoButton = (Button) this.findViewById(R.id.button1); 
      photoButton.setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        cam = cv.getCamera(); //notice how we used that method? ;) 
        cam.takePicture(null,null,PictureCallback_); 

       } 
      }); 
     } 
    Camera.PictureCallback PictureCallback_ = new Camera.PictureCallback() { 


      public void onPictureTaken(byte[] imageData, Camera c) { 

        InputStream is = new ByteArrayInputStream(imageData); 


        Bitmap bmp = BitmapFactory.decodeStream(is); 
      } 
    } ; 

도움을 주시면 감사하겠습니다. 원래의 카메라 동작 getCamera를 호출하고 사진을 가져 와서 imageView1에 올려 놓으면 도움이됩니다.

+1

어떤 에러를 냅니까? 우리가 도울 수 있도록 구체적인 내용을 알려주십시오. –

+0

'그냥 할 수 없어 보인다 '. 오류 게시/logcat. –

+0

미안 하단에 공백을 그려. cam = cv.getCamera(); \t \t cam.takePicture (null, null, PictureCallback_); 사진을 찍을 수 있도록 camerview 클래스에서 getCamera 메서드를 호출하는 방법을 알 수 없습니다. – blankwall

답변

1

보십시오 당신의 onclick에서이 작업을 수행하는() 메소드 :

cam.autoFocus(new AutoFocusCallback(){ 
    Camera.ShutterCallback shutterCallback = new Camera.ShutterCallback() { 
     public void onShutter() { 
      // If you want to play your own sound (otherwise, it plays the sound by default) 
     } 
    }; 

    @Override 
    public void onAutoFocus(boolean arg0, Camera arg1) { 
     cam.takePicture(shutterCallback, null, PictureCallback_); 
    } 
}); 
0

내가 생성 한 camera library project here은 카메라를 호출하고 사진을 찍고 저장 또는 사용 방법에 대한 코드를 읽고이 library을 사용할 수 있습니다 카메라. Sample이 (가) 당신을 체크 아웃해야합니다.