【问题标题】:Camera control inside an Android applicationAndroid 应用程序中的相机控制
【发布时间】:2011-06-23 11:13:47
【问题描述】:

我正在为 Android 2.2 构建一个基于照片库的应用程序。有一个选项可以从 相机 拍照并在应用程序中使用。我期待:

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

  2. 拍照。

  3. 自动关闭相机并在应用内显示拍摄的图片

很遗憾,我无法将捕获的图像发送到应用程序。拍照后,相机不会自动关闭或返回应用程序。现在我必须单击后退按钮才能转到应用程序并从 SD 卡中手动选择图片。相机正在通过意图打开,我正在使用以下类。

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

【问题讨论】:

  • 你是使用自定义摄像头还是通过intent打开摄像头??
  • 是的,我的相机正在使用意图,我正在使用上面提到的相机类。我已经用这些输入更新了问题。
  • 你开火的目的是什么?

标签: java android android-emulator


【解决方案1】:

你需要做两件事。启动相机应用程序并告诉它在哪里存储它所拍摄的照片:

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.getDataintent.getParcelableExtra 使用Intent.EXTRA_STREAM 检索它。

【讨论】:

    【解决方案2】:

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

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

            startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
    

    使用 startActivityForResult 而不是 startActivity.. 每当您使用完相机时.. 按确定.. 您将返回您的活动.. 然后在您的活动中 onActivityResult 回调将被调用。在这里您将获得点击图像的数据。

    谢谢。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-08-10
      • 1970-01-01
      相关资源
      最近更新 更多