相机目录

  • 说一下
  • 相机简介
  • 拍照
    • 步骤
      • 在AndroidManifest 设置所需要的 permission 和 feature
      • 判断当前手机的版本号
      • 判断手机是否有使用相机的权限
      • 打开相机进行拍照
    • 拍照,并且返回拍下的图片

说一下

我学习Android 也有很长的时间了,现在回想起来一直就是在学习或者是在学习的道路上。Java->Android->kotlin->dart->flutter->c->html->…
这个大概是我的学习的方向,但是忽然之间迷茫了,所以还是向自己的本质出发,研究自己的工作内容。

相机简介

想说的话:大家都知道,在Android手机中有一个相机的应用。但是相机是如何实现的呢?我也不知道。不过大致的流程也猜测出来了。使用摄像头采集要拍摄的数据,在手机屏幕上使用 SurfaceView 展示内容。但是如何调用呢?如何对于相机进行扩展呢?这就需要好好学习一下了。

拍照

步骤

  • 在AndroidManifest 设置所需要的 permission 和 feature
  • 判断当前手机的版本号
  • 判断手机是否有使用相机的权限
  • 打开相机进行拍照

在AndroidManifest 设置所需要的 permission 和 feature

            

这里解释一下子,Android 的开发文档中说了。
如果您的应用使用相机,但不需要相机也可以正常运作,则将 android:required 设为 false。这样,Google Play 便会允许没有摄像头的设备下载您的应用。因此,您必须负责通过调用 hasSystemFeature(PackageManager.FEATURE_CAMERA_ANY) 检查相机在运行时的可用性。如果相机不可用,则您应停用相机功能

判断当前手机的版本号

        if (Build.VERSION_CODES.M <= SDK_INT){            // Android 版本6.0 或者之上,需要动态权限申请相机        }else{            // Android 版本 6.0 之下,在清单文件中声明相机的权限就可以了        }

判断手机是否有使用相机的权限

    if (ContextCompat.checkSelfPermission(                    [email protected],                    android.Manifest.permission.CAMERA                ) != PackageManager.PERMISSION_GRANTED            ) {                ActivityCompat.requestPermissions(                    this,                    arrayOf(android.Manifest.permission.CAMERA),                    0                )                // 没有权限            } else {              // 有权限,可以在这里直接执行打开相机的操作            }

这里说一下,我使用的是Android 原生的判断权限的方法。如果使用,那么必须要重写 onRequestPermissionsResult 这个方法 ,并且判断请求码 requestCode

打开相机进行拍照

   val intents = Intent(MediaStore.ACTION_IMAGE_CAPTURE)        if (intents.resolveActivity(packageManager) != null) {            startActivityForResult(intents, REQUEST_IMAGE_CAPTURE)        }

代码解释:
第一步:创建 intent 对象,并且给它设置上值 MediaStore.ACTION_IMAGE_CAPTURE ,这是个可以打开相机的意图,这个意图还可以获取返回的图像(之后再说)。
第二步:这是对于第三行代码 startActivityForResult(intents, REQUEST_IMAGE_CAPTURE) 的一个保护,因为 如果不对其做限制,那么应用程序就会崩溃。
第三步: 跳转页面,当然我们可以从 startActivityForResult 看出这个方法可以获取到拍下的照片。

拍照,并且返回拍下的图片

    override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {        super.onActivityResult(requestCode, resultCode, data)        if (REQUEST_IMAGE_CAPTURE == requestCode && RESULT_OK == resultCode) {            // 获取返回的缩略图            val extras = data?.extras            val bitmap = extras?.get("data") as Bitmap            mBinding?.ivSplashImage?.setImageBitmap(bitmap)        }    }
  1. onActivityResult 的重写方法中判断请求码和响应码。
  2. 从 intent 对象中获取额外的数据
  3. 从额外数据中获取到 Bitmap 对象。
  4. 设置图片

更多相关文章

  1. android手机文件后缀揭秘
  2. Android(安卓)camera2使用
  3. Android的前世今生
  4. 关于Android自定义相机进行拍照(小米手机出现异常的原因)
  5. android 调用系统的照相机和图库实例详解
  6. android 获取电话本中的联系人列表
  7. 预防手机变砖头 Android刷机问题汇总
  8. Android(安卓)Loader的使用以及手机通讯录的获取方法
  9. Android权限说明

随机推荐

  1. Android(安卓)LCD(四):LCD驱动调试篇
  2. tabhost的使用
  3. Android第四期 - 单侧滑动效果
  4. Android中使用log4j
  5. android文件系统制作教程
  6. android中menu的使用
  7. Android正确关闭线程
  8. Android(安卓)GPS架构分析
  9. [Xamarin.Android] ActionBar Tips
  10. ubuntu 下 配置 Android(安卓)NDK开发环