今天我们来看看如何 *** 作AndroID的 相册和相机,并且我们需要看看如何才可以将我们的 *** 作的图片1显示出来,废话不多说开始吧。
相机篇(最朴素的拍照方法)我们都知道AndroID 调用摄像头是属于我们的危险权限,所以我们需要在运行时申请权限。
如何在运行时申请我们的相机权限。首先:我们需要添加我们的申请编码,这个非常的重要,每个代码之间都是不可以重复的。他是唯一性的!
//PERMISSION CODEfinal private static int OPEN_CAMERA_PERMISSION = 1;final private static int OPEN_ALBUM_PERMISSION = 2;//INTENT CODEfinal private static int GET_CAMERA_RESulT = 1;final private static int GET_ALBUM_RESulT = 2;
可以看到这里我申请了两组,分别用于权限申请代码和数据返回代码。
然后我们来看看如何 *** 作我们的权限,作为一个危险权限。
第一步我们需要在用户清单中添加我们的权限:
<!--FOR CAMERA--><uses-permission androID:name="androID.permission.CAMERA" /><!--FOR ALBUM--><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" />
这里就是两个代码,分别是 相机和相册的权限,但是他是危险权限,所以只在清单中申请肯定是不够的。
/*this is check camera permission */boolean checkPermissions(int permissionID) { //CANERA if (permissionID == OPEN_CAMERA_PERMISSION) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { //this is request CAMERA PERMISSION ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.CAMERA}, OPEN_CAMERA_PERMISSION); return false; } else return true; } //ALBUM if (permissionID == OPEN_ALBUM_PERMISSION) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, OPEN_ALBUM_PERMISSION); return false; } else return true; } return false;}
这里申请了两个危险权限,一个是相机权限,一个是相册权限。如果有权限就会返回TRUE
如果没有就是返回FALSE
然后会自动的向用户申请权限。
但是只向用户申请权限是不够的,我们还需要去查看我们的申请结果,看看代码:
@OverrIDe//this is requestPermissionsResultpublic voID onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) super.onRequestPermissionsResult(requestCode, permissions, grantResults); switch (requestCode) { case 1: //this is check request result. if true open Camera if (grantResults.length > 0 && permissions[0].equals(PackageManager.PERMISSION_GRANTED)) openCamera(); break; case 2: if (grantResults.length > 0 && permissions[0].equals(PackageManager.PERMISSION_GRANTED)) openAlbum(); break; }}
这个就是我们用来查看用户是否同意了指定权限的代码了。
如果用户同意了,我么需要打开我们的相册。
如何才可以打开我们的相册?/*open Camera */voID openCamera() { Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); startActivityForResult(intent, GET_CAMERA_RESulT);}
这样我们就可以打开我们的相机了。
但是只打开了,没去获取时得不到任何图片的。
如何实现获取返回的图片数据你需要一个onActivityResult
的方法来获取了
@OverrIDe//this is onActivityResultprotected voID onActivityResult(int requestCode, int resultCode, @Nullable Intent data) { super.onActivityResult(requestCode, resultCode, data); switch (requestCode) { //CAMERA case 1: if (data != null) //get data and get the data and create Bitmap to binding ImageVIEw ((ImageVIEw) this.findVIEwByID(R.ID.ImageVIEw)).setimageBitmap((Bitmap) Objects.requireNonNull(data.getExtras()).get("data")); break; //ALBUM case 2: if (data != null) { try { //get album selected image to binding the imageVIEw ((ImageVIEw) this.findVIEwByID(R.ID.ImageVIEw)).setimageBitmap(MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData())); } catch (IOException e) { e.printstacktrace(); } } break; }}
这个方法中我写了两个
一个是获取相机的返回数据,一个是获取相册的返回数据。
效果图(使用相机拍照)这样我们的调用相机拍照就完成了。非常的简单。
这样我们最最基础的调用我们的相机拍照算是完成了。
相册篇关于权限如何申请权限就不说了和上面的方法都是一样的,看一相机权限是啥就可以了。
<!--FOR ALBUM--><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" />
这个就是我们的相机权限.再看看权限判断时候的代码吧:
if (permissionID == OPEN_ALBUM_PERMISSION) { if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, OPEN_ALBUM_PERMISSION); return false; } else return true;}
这个就是判断我们的相册权限是否申请的代码了。
如何打开相册/*open Album */voID openAlbum() { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, GET_ALBUM_RESulT);}
这个就是打开我们的相册的代码了。这里有个setType
的方法。这个方法是来指定我们的打开类型的代码。
还是在我们的onActivityResult
下添加下面的代码:
if (data != null) { try { //get album selected image to binding the imageVIEw ((ImageVIEw) this.findVIEwByID(R.ID.ImageVIEw)).setimageBitmap(MediaStore.Images.Media.getBitmap(getContentResolver(), data.getData())); } catch (IOException e) { e.printstacktrace(); }}
这样我们的图片选择就完成了
效果图至此,这篇文章也结束了,告辞~
总结以上是内存溢出为你收集整理的Android 多媒体文件 *** 作(图片)全部内容,希望文章能够帮你解决Android 多媒体文件 *** 作(图片)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)