安卓6.0调用系统相机,权限申请与拍照实现

小编

你有没有想过,手机里的相机功能竟然这么神奇?一按按钮,就能捕捉到生活中的美好瞬间。今天,就让我带你一起探索安卓系统相机的调用方法,让你轻松拍出大片效果!

一、权限申请,开启相机之旅

在安卓6.0(API级别23)及以上版本,使用相机功能前,必须先申请相机权限。这就像是要去参加一个派对,得先向主人请个假一样。在Manifest.xml文件中,加入以下代码:

```xml

//相机权限

//写入sd卡

//读取sd卡

安卓6.0权限动态检查我使用一下的动态检查库:

```java

'com.tbruyelle.rxpermissions2:rxpermissions:0.9.3@aar'

public static void requestAllPermissions(final Activity mActivity) {

if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {

RxPermissions rxPermission = new RxPermissions(mActivity);

rxPermission.requestEach(

Manifest.permission.READ_EXTERNAL_STORAGE, //sd卡读取

Manifest.permission.WRITE_EXTERNAL_STORAGE, //sd卡写入

Manifest.permission.CAMERA

);

}

二、启动相机,捕捉美好瞬间

想要调用系统相机,得先创建一个Intent对象。这个Intent就像是一张地图,指引我们找到相机应用。代码如下:

```java

Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

接下来,检查一下Intent是否有效。如果有效,就可以调用`startActivityForResult()`方法,启动相机了:

```java

if (takePictureIntent.resolveActivity(getPackageManager()) != null) {

startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);

这里的`REQUEST_IMAGE_CAPTURE`是一个自定义的请求码,用于在`onActivityResult()`方法中区分不同的结果来源。

三、指定保存路径,照片随心所欲

默认情况下,相机应用会将照片保存到设备的公共图片库。但有时候,我们可能想指定一个特定的路径来保存照片。这需要用到SD卡目录和Uri。

```java

File file = new File(Environment.getExternalStorageDirectory() + \/AppName/camera/\ + System.currentTimeMillis() + \.png\);

Uri uri = Uri.fromFile(file);

intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);

四、处理拍照结果

在`onActivityResult()`方法中,你可以接收到拍照的结果。如果用户成功拍照,你可以通过Intent获取到拍摄的照片。

```java

@Override

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

super.onActivityResult(requestCode, resultCode, data);

if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {

Bundle extras = data.getExtras();

Bitmap imageBitmap = (Bitmap) extras.get(\data\);

// 处理照片,比如显示在ImageView上

}

五、注意事项

1. 确保你的应用在Manifest.xml中声明了所需的权限。

2. 在调用相机之前,检查Intent是否有效。

3. 如果需要指定保存路径,确保你有写入SD卡的权限。

4. 在处理拍照结果时,注意内存管理,避免内存溢出。

通过以上步骤,你就可以在安卓6.0及以上版本的应用中调用系统相机,并实现拍照功能了。快来试试吧,让你的应用也能拍出大片效果!