如何在 android 中打开相机应用

How to open camera app in android

我正在构建一个应用程序,它需要一个功能来从安装我的应用程序的设备上打开默认相机应用程序;我的问题是如何实现它?

根据我在谷歌搜索一段时间后了解到的如何从应用程序中打开相机,但我想要实现的实际上是打开可以使用相机应用程序具有的任何功能的默认相机。你能告诉我如何实现相机吗?

您可以使用 intent 打开相机应用程序

Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);

现在,当您使用完相机应用程序后取回图像

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_PIC_REQUEST) {
          Bitmap image = (Bitmap) data.getExtras().get("data");
          // do whatever you want with the image now
    }
}

希望这会有所帮助。

只需向相机发送 Intent 请求照片:

static final int REQUEST_IMAGE_CAPTURE = 1;

private void dispatchTakePictureIntent() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
    }
}

此处有更多详细信息:https://developer.android.com/training/camera/photobasics.html

要在 android phone 中使用内置相机应用程序,您需要一些东西 第一:

  • 设备必须有摄像头
  • 您的应用必须有拍照权限
  • 你的应用必须有保存图片的权限(如果你 打算)

要解决上述问题,您需要在清单文件中添加以下代码以获得使用相机拍照的权限,并且如果您的应用的主要功能要求设备配备相机

<uses-feature android:name="android.hardware.camera" android:required="true" />

如果需要,您还需要在清单文件中添加写入/保存图像的权限此权限还允许您的应用具有读取权限(此示例不需要)

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

最后记住你要求 Android 为你工作,因此它会 return 给你一个结果,这是图像需要使用 startActivityForResult 并传递代码或考虑它作为您的应用程序和 Android 都将使用的标识符 ID,例如 123 它可以是任何整数,只要它不在 activity 中用于除拍照以外的任何其他目的:

成员变量

static final int REQUEST_TAKE_PHOTO = 123;

private void takePicture() {
    Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    if (takePictureIntent.resolveActivity(getPackageManager()) != null) {
        startActivityForResult(takePictureIntent, REQUEST_TAKE_PHOTO);
    }

将此添加到按钮或图像按钮,以便单击将调用 takePicture 方法

最后一步是记住 Android 将 return 您需要接受的图像或结果数据,并且按照上述标识符代码 REQUEST_TAKE_PHOTO = 123 / requestCode .您需要重写一个方法

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
            Bundle extras = data.getExtras();
            // Sample data cast to  thumbnail
            Bitmap imageBitmap = (Bitmap) extras.get("data");
            // Do whatever you want with the thumbnail such as setting it to image view
            mImageView.setImageBitmap(imageBitmap);
        }
    }

Source: Android Take Photos