如何在android中打开相机应用程序

时间:2017-01-18 03:49:03

标签: android android-camera

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

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

3 个答案:

答案 0 :(得分:2)

您可以按意图打开相机应用

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
    }
}

希望这会有所帮助。

答案 1 :(得分:0)

只需向要求照片的相机发送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

答案 2 :(得分:0)

要在Android手机中使用内置相机应用程序,您需要做一些事情 第一:

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

要注意上述情况,您需要在清单文件中添加以下代码,以获取使用相机进行拍照的权限,以及应用的主要功能是否需要设备配备相机

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

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

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

最后请记住,您要求Android为您工作,因此它会向您返回一个结果,这个图像需要使用startActivityForResult并传递代码或将其视为您的应用程序和Android将使用说123它可以是任何整数,所以它在活动中没有用于任何其他目的,而不是为了这个目的拍照:

会员变量

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将返回您将需要接受的图像或结果数据,并按照上面的标识符代码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