調用Android系統攝像頭進行視頻錄製,錄像並限制時長和大小【攝像】

最近正好用到了調用系統攝像機實現錄像還有限制時長大小的功能,找了找資料,並不難,只是大家可能用的不多,時間長有點忘了吧,記錄一下,方便你、我、他、它嘛~嘿嘿

1.主要方法:

private fun video() {
        try {
            val format = SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
            val date = Date(System.currentTimeMillis())
            var videoname = format.format(date)
            videoFile = File(FileUtils.downpath, videoname + ".mp4")
            if (videoFile!!.exists()) {
                videoFile!!.delete()
            }
            videoFile!!.createNewFile()

            val intent = Intent(MediaStore.ACTION_VIDEO_CAPTURE)
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
                intent.flags = Intent.FLAG_GRANT_WRITE_URI_PERMISSION
                camera_URI = FileProvider.getUriForFile(context, Constent.Provider, videoFile!!)
            } else {
                camera_URI = Uri.fromFile(videoFile)
            }
            //儲存地址
            intent.putExtra(MediaStore.EXTRA_OUTPUT, camera_URI)
            //用於控制錄製視頻的質量;0——低質量;1——高質量
            intent.putExtra(MediaStore.EXTRA_VIDEO_QUALITY, 1)
            //允許記錄的最長時間(以 秒 爲單位)  例如:限制爲60S
            intent.putExtra(MediaStore.EXTRA_DURATION_LIMIT, 60)
            //允許的最大大小(以 B 爲單位)  例如:限制大小爲100M
            intent.putExtra(MediaStore.EXTRA_SIZE_LIMIT, 1024L * 1024 * 100)
            startActivityForResult(intent, 66)
        } catch (e: Exception) {
            Log_Ma.e(TAG, e.toString())
            ToastUtils.showToast("啓用相機失敗,請重試")
        }
    }

2.在獲取錄像之後的地址信息:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
        super.onActivityResult(requestCode, resultCode, data)
        when (requestCode) {
            66 -> {
                if (resultCode == RESULT_OK) {
                    val videoURL = data?.data
                    Log_Ma.e(TAG, "當前返回地址:${videoURL.toString()}//啓動時設置的地址:${videoFile?.absolutePath}")
                }
            }
        }
    }

3.注意:

6.0系統動態權限

7.0動態儲存權限

10.0以上還要注意獲取系統根目錄的方法可能和之前不一樣了,要注意

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章