Android应用程序内的摄像头控制

时间:2011-06-23 11:13:48

标签: java android android-emulator

我正在构建基于照片库的Android 2.2应用程序。可以选择从相机拍摄照片并在应用程序中使用它。我期待着:

  1. 从应用程序启用相机。

  2. 拍照。

  3. 自动关闭相机并在应用程序中显示捕获的图片

  4. 不幸的是,我无法将捕获的图像提供给应用程序。拍摄照片后,相机不会自动关闭或返回应用程序。现在我必须单击后退按钮转到应用程序,然后从SD卡中手动选择图片。相机正在通过意图打开,我正在使用以下课程。

    http://developer.android.com/reference/android/hardware/Camera.html

3 个答案:

答案 0 :(得分:4)

你需要做两件事。启动相机应用程序并告诉它存储所需图片的位置:

File photo = new File(Environment.getExternalStorageDirectory(),  "myFile.jpg");
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(photo));
startActivityForResult(intent, myRequestCode);

当用户关闭相机应用时,您的应用和活动将会恢复。因此,您必须覆盖onActivityResult才能获得结果:

if (resultCode == myRequestCode){
  File photo = new File(Environment.getExternalStorageDirectory(), "myFile.jpg");
  // open it, show it, insert into MediaStore whatever
}

如果您未提供要保存的位置,则可以使用intent.getData使用intent.getParcelableExtraIntent.EXTRA_STREAM来检索它。

答案 1 :(得分:2)

我猜...你正在做类似下面的代码

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);             //请求代码

        startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

使用startActivityForResult而不是startActivity ..每当你完成你的相机时......按ok ..你会回到你的活动..然后在你的活动onActivityResult回调将被调用。在这里,您将获得所点击图像的数据。

感谢。

答案 2 :(得分:2)

michaelg的回答很明显。

只有您必须考虑带有图像捕获错误的设备。

在这里阅读:

Android ACTION_IMAGE_CAPTURE Intent