本文主要实现如何打开相机把照的图片展示,还有就是读取本地相册,把选取中的图片返回。
第一步: 权限声明,一个是相机权限一个是读取权限
- <uses-permission android:name="android.permission.CAMERA"/>
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
第二步:布局文件 两个Button 分别是打开摄像头的 读取本地相册
一个ImageView 展示返回的图片
第三步:实现
手机照相代码如下:
- Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- startActivityForResult(intent, 100);
通过Intent 跳转到手机的摄像头
然后在onActivityResult 回调里面接收照相的图片
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-
- if (requestCode == 100) {
-
- Bitmap camera = data.getParcelableExtra("data");
- iv1.setImageBitmap(camera);
- }
- }
懒得截图了,,,很简单
下面就是打开手机相册
- Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
- intent.setType("iamge/*");
- startActivityForResult(intent , 200);
然后同样在回调里面:
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-
- if (requestCode == 100) {
-
- Bitmap camera = data.getParcelableExtra("data");
- iv1.setImageBitmap(camera);
- }
- if (requestCode == 200){
- if (data!=null){
- try {
- Bitmap bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(data.getData()));
- iv1.setImageBitmap(bitmap);
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
- }
和上面的整合到一起了。
--------------------------------------------------------------------------------------------------
Ps Android 6.0之后 相机这些属于危险权限? 类似 不知道叫啥
需要声明一下。
-
- boolean isDanger = ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA)
- != PackageManager.PERMISSION_GRANTED;
- LogUtil.fussenLog().d(isDanger);
- if (isDanger){
- ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.CAMERA);
- LogUtil.fussenLog().d("已经授权");
- }
那个isDanger 就是判断是否授权过
具体关于权限的文章等我查完了之后有时间再写吧,哈哈哈哈