gpt4 book ai didi

android - 在 Android 上选择/单击图像的正确解决方案

转载 作者:行者123 更新时间:2023-11-29 19:23:13 25 4
gpt4 key购买 nike

如标题所示,我可以选择在我的应用程序中上传图片。我想有两个选择:单击新图片并从图库中选择。图库选择在使用此代码的所有设备上都可以正常工作:

Intent in = new Intent();
in.setType("image/*");
in.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(in, getString(R.string.selectpicture)), 100);

问题出在 Click a new picture 上。

我想使用设备上安装的其他相机应用程序来获取图像。此代码应将用户点击的图像保存在指定路径。

Intent m_intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
imageUri = getImageUri();
m_intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
startActivityForResult(m_intent, REQUEST_IMAGE_CAPTURE);

但实际情况是,EXTRA_OUTPUT 并未受到所有相机应用程序的尊重。

此外,如果内存不足,我的应用程序会被系统杀死,这会使事情变得更加复杂。

那么,让用户点击新图片并在我的应用中获取图片路径的最佳方式是什么?如果使用第三方库更好,哪个可靠?

最佳答案

the EXTRA_OUTPUT is not respected by all camera apps.

任何时候你将任何东西委托(delegate)给第三方应用程序,你都可能会遇到问题。

Also if memory is low, my app is killed by the system which makes things more complicated.

无论如何你都需要处理这件事。将您在 EXTRA_OUTPUT 中输入的值保存在保存的实例状态 Bundle 中。

what's the best way to enable user to click a new picture and get the image path in my app?

如果你想坚持使用 ACTION_IMAGE_CAPTURE,我会选择这个分类:

  • 如果您提供给 EXTRA_OUTPUT 的位置有图片,请使用它

  • 如果没有,onActivityResult() 中给定的 Intent 上的 getData() 返回一个 Uri (而不是 null),使用它(如果你真的需要一个 File,使用 ContentResolveropenInputStream( )Uri 并将内容复制到您自己的文件中)

  • 如果两者都不成立,并且 getParcelableExtra("data") 返回一个值,则将该Bitmap 保存到文件

  • 如果这些都不是真的,建议用户获取不同的相机应用程序,也许将他们指向您已经尝试过并且知道有效的应用程序

或者,您自己拍摄照片,直接拍摄或使用 mine 这样的库.

关于android - 在 Android 上选择/单击图像的正确解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41945165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com