Android开发学习-相册的使用

261 阅读1分钟

安卓原生相册调用。

onActivityResult 被废弃。

初始化

val pickLauncher = registerForActivityResult(ActivityResultContracts.GetContent()){ uri: Uri? ->
    uri?.let { it ->
        Log.d("pickLauncher", it.toString())
        Glide.with(this).load(it).into(tempImage)
    }
}

调用

//使用之前先请求权限 READ_EXTERNAL_STORAGE,WRITE_EXTERNAL_STORAGE
pickLauncher.launch("image/*")

存储相册获取的图片到指定文件夹,文件存储(可以使图片,word文件,或者音视频)

存储代码

fun getImageStoragePath(context: Context):String{
    return "${context.externalCacheDir}/imageCacheFile"
}

fun saveImagePath(context: Context, bitmap: Bitmap?): String? {
    var bitmap: Bitmap? = bitmap
    val file = File(getImageStoragePath(context))

    // 判断当前目录是否存在,不存在就创建
    if (!file.exists()) {
        file.mkdir()
    }
    val imageFile = File(file.path.toString() + "/" + System.currentTimeMillis() + ".jpg")
    try {
        val os: OutputStream = FileOutputStream(imageFile)
        bitmap?.compress(Bitmap.CompressFormat.JPEG, 100, os)
        //释放缓存
        os.flush()
        os.close()
        bitmap?.recycle()
        return imageFile.absolutePath
    } catch (e: Exception) {
        e.printStackTrace()
    }
    return null
}

调用方式

context?.let {
    //把Uri转为Bitmap
    val bitmap: Bitmap =
        BitmapFactory.decodeStream(it.contentResolver.openInputStream(uri))
    var saveImagePath = StorageManageClass().saveImagePath(it, bitmap)
    Log.i("save_succeed", "$saveImagePath")
}