美文网首页
android 调用摄像头

android 调用摄像头

作者: bigshizi | 来源:发表于2020-07-27 16:26 被阅读0次

    1、获取调用摄像头权限
    2、创建一个File用来保存照片,获取图片地址

    val imageFile = File(externalCacheDir,"output_image.jpg")
    if(imageFile.exists){
      imageFile.delete()
    }
    imageFile.creatNewFile()
    //获取图片地址
    val imaguri = if(Build.VERSION.SDK_INT >= Build.VERSION_COD.N){
        FileProvider.getUriForFile(this,"com.centling.e03_activitytest.fileprovider",imageFile )
    }else{
        URI.fromFile(imageFile)
    }
    
    val intent = Intent("android.media.action.IMAGE_CAPTURE")
    intent.put(MediaStore.EXTRA_OUTPUT,imageUri)
    startActivityResult(intent,1)
    
    

    拍摄完成后的回调

        override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
            super.onActivityResult(requestCode, resultCode, data)
            when (requestCode){
                1->{
                    if(resultCode == Activity.RESULT_OK){
                        val Bitmap = BitmapFactory.decodeStream(contentResolver.openInputStream(imageUri))
                        iv_pic.setImageBitmap(Bitmap)
                    }
                }
            }
        }
    

    如果图片翻转需要调用方法将图片修正

        fun rotateifrequired(bitmap: Bitmap) :Bitmap{
            val exifInterface = ExifInterface(outputImage.path)
            val orientation = exifInterface.getAttributeInt(ExifInterface.TAG_ORIENTATION,ExifInterface.ORIENTATION_NORMAL)
            return when (orientation){
                ExifInterface.ORIENTATION_ROTATE_90 -> rotateImager(bitmap,90)
                ExifInterface.ORIENTATION_ROTATE_180 -> rotateImager(bitmap,180)
                ExifInterface.ORIENTATION_ROTATE_270 -> rotateImager(bitmap,270)
                else -> bitmap
            }
    
        }
    
        fun rotateImager(bitmap: Bitmap,degree :Int) :Bitmap{
            val matrix  = Matrix()
            matrix.postRotate(degree.toFloat())
            val newbitmap = Bitmap.createBitmap(bitmap,0,0,bitmap.width,bitmap.height,matrix,true)
            bitmap.recycle()
            return  newbitmap
        }
    

    相关文章

      网友评论

          本文标题:android 调用摄像头

          本文链接:https://www.haomeiwen.com/subject/lajzlktx.html