如何在Android手机上访问相机?

我用Java编写了一个程序,它接收一个图像文件并操纵图像。 现在,我正在试图访问相机,以便拍摄照片并将其交给image processing程序,但是如何去做这件事,我已经迷失了方向。 我已经阅读了关于相机类的信息,以及如何请求权限,但我不知道如何实际拍照。 如果任何人有任何提示,我应该从哪里开始,或者如果他们知道一个很好的教程,我会很感激。 谢谢!

Solutions Collecting From Web of "如何在Android手机上访问相机?"

Google是你最好的朋友,这里有一些教程:

使用相机

如何编程谷歌Android相机拍照

从相机模拟器拍照

相机

首先编辑你的AndroidManifest.xml,添加相机权限:

<uses-permission android:name=”android.permission.CAMERA”/> 

相机服务必须打开和closures:

 Camera camera = Camera.open(); //Do things with the camera camera.release(); 

您可以设置相机设置,例如:

 Camera.Parameters parameters = camera.getParameters(); parameters.setPictureFormat(PixelFormat.JPEG); camera.setParameters(parameters); 

拍照:

 private void takePicture() { camera.takePicture(shutterCallback, rawCallback, jpegCallback); } ShutterCallback shutterCallback = new ShutterCallback() { public void onShutter() { // TODO Do something when the shutter closes. } }; PictureCallback rawCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { // TODO Do something with the image RAW data. } }; PictureCallback jpegCallback = new PictureCallback() { public void onPictureTaken(byte[] _data, Camera _camera) { // TODO Do something with the image JPEG data. } }; 

不要忘记将相机布局添加到您的主布局xml。

有很多方法,你可以做到这一点….我认为是一个更好的方法是简单和简单的是在button单击你可以打电话intent打开你的内置相机视图…这里是示例代码…

 public class CameraDemo extends Activity { Button ButtonClick; int CAMERA_PIC_REQUEST = 2; int TAKE_PICTURE=0; Camera camera; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ButtonClick =(Button) findViewById(R.id.Camera); ButtonClick.setOnClickListener(new OnClickListener (){ @Override public void onClick(View view) { Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST); } }); } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if( requestCode == CAMERA_PIC_REQUEST) { Bitmap thumbnail = (Bitmap) data.getExtras().get("data"); ImageView image =(ImageView) findViewById(R.id.PhotoCaptured); image.setImageBitmap(thumbnail); } else { Toast.makeText(demo.this, "Picture NOt taken", Toast.LENGTH_LONG); } } } 

………………………………………….. …………

经过它,如果你有任何问题随时问….

拉克什

有两种方法为您的android应用程序拍照

1)使用意图

 Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE); // create a file to save the image intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name // start the image capture Intent startActivityForResult(intent, CAPTURE_IMAGE_ACTIVITY_REQUEST_CODE); 

2)创build一个自定义的相机活动。 为此,您需要执行以下步骤

  * Detect and Access Camera * Create a Preview Class * Build a Preview Layout * Capture and Save Files * Release the Camera 

您也可以参考以下链接:

http://developer.android.com/guide/topics/media/camera.html http://developer.android.com/reference/android/hardware/Camera.html

最重要的方法是:

 Camera.PictureCallback mPictureCallback = new Camera.PictureCallback() { public void onPictureTaken(byte[] imageData, Camera c) { } }; 

拍摄照片时调用此方法。 这是一个很好的教程在这个主题: http : //www.brighthub.com/mobile/google-android/articles/43414.aspx

嗯…或者你需要这个:

 Camera mCamera; ... public void onClick(View arg0) { mCamera.takePicture(null, mPictureCallback, mPictureCallback); } 

这里还有一个例子: http : //snippets.dzone.com/posts/show/8683