Android简单读取图片视频,获取动态权限。

最近写了3个库,实际上是4个,但是其中一个耦合性比较高,完成度低,不适合开放给大家使用。这4个库如下,其中Starter库不建议使用。

Starter

本项目中共有4个库.

Starter Starter

这是一个用于项目快速启动的库, 包含 BaseActivity, BaseFragment 以及一些工具类。

implementation 'com.github.boybeak:starter:0.0.6'

Permission

这是一个动态权限的辅助库。能够快速的获取权限,而不用层层检查每次都重写权限结果回调方法。

implementation 'com.github.boybeak:permission:1.0.0'
PH.ask(Manifest.permission.WRITE_EXTERNAL_STORAGE, 
	Manifest.permission.CAMERA, 
	Manifest.permission.RECORD_AUDIO).go(this, object : Callback {
            override fun onGranted(permissions: MutableList<String>) {
				//TODO do what you want
            }

            override fun onDenied(permission: String) {
				//TODO do what you want
            }

        })

PH 是 Permission Helper的简写.

Picker Picker

获取图片视频的辅助类。

implementation 'com.github.boybeak:picker:1.0.2'
// Get multiple images from gallery
Picker.gallery().image().multiple(true)
	.go(this@PickerActivity, object : MultipleCallback {
		override fun onGet(id: String, uris: MutableList<Uri>, files: MutableList<File>) {
		    adapter!!.addAll(files, Converter<File, FileImpl> { data, _ -> FileImpl(data) }).autoNotify()
		}

		override fun onCancel(id: String) {

		}

	    })
// Get one image from camera
val dir = File(externalCacheDir, "images")
if (!dir.exists()) {
    dir.mkdirs()
}

val cameraTempFile = File(dir, System.currentTimeMillis().toString() + ".jpg")
val uri = FileProvider.getUriForFile(this@PickerActivity, "$packageName.provider", cameraTempFile)
Picker.camera().image().output(uri, cameraTempFile)
	.go(this@PickerActivity, object : SingleCallback {
		override fun onGet(id: String, uri: Uri, file: File) {
		    adapter!!.add(FileImpl(file)).autoNotify()
		}

		override fun onCancel(id: String) {

		}

	    })

用这个库,你能够从系统相册中单选或者多选图片或者视频,可以从相机中获取单个图片或者视频,同时视频支持设置最大时长和视频质量。

SAFR Download

implementation 'com.github.boybeak:safr:0.0.4'

SAFR 是 startActivityForResult 的简写。只为在一个回调中处理结果,而不用重写onActivityResult。

SAFR.newInstance().extras {
            //fill data here
        }.byAction(Intent.ACTION_GET_CONTENT)
	.startActivityForResult(this, 100, object : Callback {
            override fun onResult(requestCode: Int, resultCode: Int, data: Intent?) {

            }

        })

猜你喜欢

转载自blog.csdn.net/boybeak/article/details/81082081