app调用系统相机拍照,然后将拍好的照片保存到本地相册。有没有大佬做个小demo给我看下,我做了几天了,跟着官方文档做,我想看看大佬怎么写的,再此谢过。
您的每一个用心回答,都会让这个世界变得更美好一些!
调用相机本来就是一个兼容性的坑,系统的api,在不同版本,不同的手机,存在很大问题的
建议使用第三方框架,因为处理了你用系统api可能遇到的问题。
明白了吧。
这,就是一个大坑!不要太理想的认为几行代码就能完成这个功能!
实际开发过程中,当然使用兼容性最好的lib。因为lib已经可能发布到市面上面,经历过众多用户的体验,如果有问题会不断修复。然后组合成一个star很多的lib。
你用lib。就找star很多的。但是,多也有问题。因为,这本身就是个大坑!!!!!!!!
/**调用相机*/ private fun openCamera() { val captureIntent = Intent(MediaStore.ACTION_IMAGE_CAPTURE) //判断是否有相机 if (captureIntent.resolveActivity(packageManager)!= null){ photoUri = creatImageUri() mCameraUrl = photoUri if (photoUri != null){ captureIntent.putExtra(MediaStore.EXTRA_OUTPUT,photoUri) captureIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION) startActivityForResult(captureIntent,PERMISSION_CAMERA_REQUEST_CODE) } } } /**创建图片地址uri,用于保存拍照后的照片*/ private fun creatImageUri(): Uri? { val status = Environment.getExternalStorageState() //判断是否有SD卡,优先使用SD卡存储,当没有SD卡时使用手机储存 if (status.equals(Environment.MEDIA_MOUNTED)){ return contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, ContentValues() ) }else{ return contentResolver.insert( MediaStore.Images.Media.INTERNAL_CONTENT_URI, ContentValues() ) } } /**接收拍照结果和显示图片 从Uri获取图片 */ override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) if (requestCode == PERMISSION_CAMERA_REQUEST_CODE){ if (resultCode == RESULT_OK){ //iv_photo.setImageURI(mCameraUrl) bitmap = MediaStore.Images.Media.getBitmap(contentResolver,mCameraUrl) imageUriList.add(mCameraUrl!!) attachmentAdapter!!.notifyDataSetChanged() } } else if (requestCode == 200 && data != null){ Thread(Runnable { runOnUiThread { val imageNames = data.clipData if (imageNames != null){ for (i in 0..imageNames.itemCount - 1){ val uri = imageNames.getItemAt(i).uri imageUriList.add(uri) attachmentAdapter!!.notifyDataSetChanged() } }else{ imageUriList.add(data.data!!) attachmentAdapter!!.notifyDataSetChanged() } } }).start() } }
这是我用kotlin写的
可以自己按照api调用系统相机:https://www.jianshu.com/p/8eef50c360e9
也可以用知乎的Matisse框架:https://github.com/zhihu/Matisse
这两种方式都能调用系统相机
调用相机本来就是一个兼容性的坑,系统的api,在不同版本,不同的手机,存在很大问题的
建议使用第三方框架,因为处理了你用系统api可能遇到的问题。
明白了吧。
这,就是一个大坑!不要太理想的认为几行代码就能完成这个功能!
实际开发过程中,当然使用兼容性最好的lib。因为lib已经可能发布到市面上面,经历过众多用户的体验,如果有问题会不断修复。然后组合成一个star很多的lib。
你用lib。就找star很多的。但是,多也有问题。因为,这本身就是个大坑!!!!!!!!
这是我用kotlin写的
可以自己按照api调用系统相机:https://www.jianshu.com/p/8eef50c360e9
也可以用知乎的Matisse框架:https://github.com/zhihu/Matisse
这两种方式都能调用系统相机