最近我写了一个android应用程序,需要从相机内部拍摄照片并将其恢复到我的应用程序中。我使用了很多教程中的一个,并且一切正常。但后来我在另一台设备上测试了它,没有任何工作。似乎有一个问题,那么我如何确保我可以在每台设备上拍照? (看到我的答案,这更像是一个教程)Android:从相机获取图片 - 小心
1
A
回答
5
我用了很多教程之一,一切正常。但后来我在另一台设备上测试了它,没有任何工作。起初我非常惊讶,但后来我决定深入探讨这个话题。我意识到很多这些教程可能会导致一个大问题。所以我决定和你分享我的经验。
让我从大多数教程正在使用的常见问题开始。
起初,你选择的requestId类似的东西:
private static final int CAMERA_PIC_REQUEST = 1337;
然后创建一个Intent并启动相机活动
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
知趣回您使用onActivityResult功能和阅读收到的意图数据中的图片
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK && data != null) {
// do something like
Bitmap bitmap = (Bitmap) data.getExtras().get("data");
}
}
的搭配看起来不是吗?那么它的作品,但现在来了棘手的部分。
正如android文档中所写的,intent数据只会返回一个瘫痪的或者可以说被拍摄照片的小版本,有些设备根本不会返回任何东西!甚至可能发生这样的情况,即数据不为空,但您会收到“发送失败结果ResultInfo”异常。
那么现在呢?这个解决方案非常简单。您只需告诉相机将图片保存到SD卡并将URI返回到此文件。下面,我会告诉你从上面编辑的代码。
我们创建一个静态的requestId 和一个URI
private static final int CAMERA_PIC_REQUEST = 1337;
private static Uri outputFileUri;
我们不是创造了相机的活动,但这次我们传递一个额外的参数(我们的URI)
Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
startActivityForResult(cameraIntent, CAMERA_PIC_REQUEST);
现在到处理图像我们使用与上面相同的方法,但不使用我们使用我们的URI的意图数据
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == CAMERA_PIC_REQUEST && resultCode == RESULT_OK) {
// do something to get the bitmap from the uri for example
Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), outputFileUri);
}
使用此解决方案,您可以确保您在每台设备上都能看到图片。但要小心,因为你得到一个完整的位图,可能需要缩小位图以避免内存不足错误。如果你不想保留在用户SD卡上保存的图片,只需删除该文件。
感谢您的阅读!
相关问题
- 1. 从相机获取图片
- 2. Android获取缩略图Uri从相机获取图片后
- 3. 从相机或相册中获取完整大小的图片
- 4. android捕获图片相机
- 5. 从url获取小尺寸图片Android
- 6. Android:从相机获取图片时发生NPE
- 7. 从相机获取图像到ImageView Android
- 8. Android从相机获取URI
- 9. android从drawables获取图片
- 10. 获取相机拍摄的图片
- 11. 从fiddler核心获取图片
- 12. 从Android相机插入图片到SQLite
- 13. Android从片段启动相机意图
- 14. 在android中,获取从相机捕获图像的图像ID
- 15. 如何从相机中抓取图片?
- 16. Android从图库中获取图片并给用户启动相机的选项
- 17. Android:从相机获取文件名?
- 18. 在Android Studio中获取随机图片
- 19. 从相机获取完整质量图片并上传?
- 20. 用相机拍照并获取图片路径android
- 21. Android - ImageView如何获取相机图片? resultCode为0,requestCode为2?
- 22. Android相机意图捕获照片并在保存前调整照片大小
- 23. Android相机图像大小
- 24. 相机意图返回小图片
- 25. iOS相机视图 - 获取相机区域的大小
- 26. 从相机获取图片(使用Adobe Flash?)
- 27. 科尔多瓦,从相机卷获取所有图片
- 28. 从willOutputSampleBuffer获取图片或相关?
- 29. 如何从android相机获取缩略图和图像路径?
- 30. 从HTML中获取图片大小