Android ACTION_IMAGE_CAPTURE 意图

2023-11-22

我们正在尝试使用本机相机应用程序让用户拍摄新照片。如果我们省略了,它就可以正常工作EXTRA_OUTPUT extra并返回小位图图像。然而,如果我们putExtra(EXTRA_OUTPUT,...)在启动之前,一切都会正常进行,直到您尝试点击相机应用程序中的“确定”按钮。 “确定”按钮什么也不做。相机应用程序保持打开状态,没有任何锁定。我们可以取消它,但文件永远不会被写入。我们究竟需要做什么才能得到ACTION_IMAGE_CAPTURE将拍摄的照片写入文件?

编辑:这是通过MediaStore.ACTION_IMAGE_CAPTURE意图,只是为了清楚


这是一个有据可查的错误在某些版本的 Android 中。也就是说,在 Android 的 google experience 版本中,图像捕获无法按照记录进行。我通常在实用程序类中使用类似的东西。

public boolean hasImageCaptureBug() {

    // list of known devices that have the bug
    ArrayList<String> devices = new ArrayList<String>();
    devices.add("android-devphone1/dream_devphone/dream");
    devices.add("generic/sdk/generic");
    devices.add("vodafone/vfpioneer/sapphire");
    devices.add("tmobile/kila/dream");
    devices.add("verizon/voles/sholes");
    devices.add("google_ion/google_ion/sapphire");

    return devices.contains(android.os.Build.BRAND + "/" + android.os.Build.PRODUCT + "/"
            + android.os.Build.DEVICE);

}

然后,当我启动图像捕获时,我创建一个意图来检查错误。

Intent i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
if (hasImageCaptureBug()) {
    i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File("/sdcard/tmp")));
} else {
    i.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
}
startActivityForResult(i, mRequestCode);

然后在我返回的活动中,我根据设备做不同的事情。

protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
     switch (requestCode) {
         case GlobalConstants.IMAGE_CAPTURE:
             Uri u;
             if (hasImageCaptureBug()) {
                 File fi = new File("/sdcard/tmp");
                 try {
                     u = Uri.parse(android.provider.MediaStore.Images.Media.insertImage(getContentResolver(), fi.getAbsolutePath(), null, null));
                     if (!fi.delete()) {
                         Log.i("logMarker", "Failed to delete " + fi);
                     }
                 } catch (FileNotFoundException e) {
                     e.printStackTrace();
                 }
             } else {
                u = intent.getData();
            }
    }

这使您不必编写新的相机应用程序,但此代码也不是很好。最大的问题是

  1. 你永远不会得到全尺寸的图像 存在错误的设备。你得到 宽度为 512px 的图片 被插入到图像内容中 提供者。在没有的设备上 bug,一切都像文档一样工作, 你会得到一张正常的大图片。

  2. 您必须维护该列表。作为 书面的,对于设备来说是可能的 用以下版本进行刷新 安卓(说氰化物 构建)已修复该错误。 如果发生这种情况,您的代码将 碰撞。修复方法是使用整个 设备指纹。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android ACTION_IMAGE_CAPTURE 意图 的相关文章

  • 如何重试已消耗的 Observable?

    我正在尝试重新执行失败的已定义可观察对象 一起使用 Retrofit2 和 RxJava2 我想在单击按钮时重试特定请求及其订阅和行为 那可能吗 service excecuteLoginService url tokenModel Ret
  • SearchView过滤ListView

    我已经实现了搜索视图来过滤我的列表视图项目 当我输入任何文本时 它会过滤列表 但当我退出搜索视图时 它不会返回原始列表项 public class PlacesListAdapter extends ArrayAdapter
  • Android 30+ 中的视频捕获意图 - 只有所有者才能与待处理项目交互

    我正在尝试在我的应用程序上捕获视频 它可以在 android API 30 以下运行 但不能在 30 以上运行 似乎在 sdk 30 之后 android 不允许完全读取外部存储 作用域存储 我目前遇到这个错误 java lang Ille
  • 谷歌坐标认证

    当我尝试连接到 Google 坐标时 总是出现异常GoogleAuthException 我拥有 Google 地图协调中心许可证 我确实使用我的包应用程序名称和 SHA1 在 google 控制台中创建了我的客户端 ID 我将权限添加到清
  • 是否可以将数组或对象添加到 Android 上的 SharedPreferences

    我有一个ArrayList具有名称和图标指针的对象 我想将其保存在SharedPreferences 我能怎么做 注意 我不想使用数据库 无论 API 级别如何 请检查SharedPreferences 中的字符串数组和对象数组 http
  • 当文本输入聚焦在 React Native for Android 的底部工作表上时,视图移出屏幕

    我正在使用图书馆 https github com osdnk react native reanimated bottom sheet https github com osdnk react native reanimated bott
  • Android 模拟器插件无法初始化后端 EGL 显示

    我在 Cloudbees 上设置了 Jenkins 作业 并且可以在那里成功签出并编译我的 Android 项目 现在我想在 android 模拟器中运行一些 JUnit 测试并添加 Android 模拟器插件 我将 显示模拟器窗口 选项设
  • 在 java 类和 android 活动之间传输时音频不清晰

    我有一个android活动 它连接到一个java类并以套接字的形式向它发送数据包 该类接收声音数据包并将它们扔到 PC 扬声器 该代码运行良好 但在 PC 扬声器中播放声音时会出现持续的抖动 中断 安卓活动 public class Sen
  • 在 HTTPResponse Android 中跟踪重定向

    我需要遵循 HTTPost 给我的重定向 当我发出 HTTP post 并尝试读取响应时 我得到重定向页面 html 我怎样才能解决这个问题 代码 public void parseDoc final HttpParams params n
  • 是否有 ADB 命令来检查媒体是否正在播放

    我想使用 ADB 命令检查根植于终端的外部设备中是否正在播放音频 视频 我无法找到任何 ADB 命令 如果有 我尝试过 adb shell dumpsys media player 我想要一个命令来指定视频是否正在运行 您可以使用以下命令查
  • 发布android后更改应用内购买项目的价格

    在 Google Play 上发布后 是否可以更改应用内购买商品的价格 我假设该应用程序也已发布 完整的在线文档位于http developer android com http developer android com也http sup
  • JavaMail 只获取新邮件

    我想知道是否有一种方法可以在javamail中只获取新消息 例如 在初始加载时 获取收件箱中的所有消息并存储它们 然后 每当应用程序再次加载时 仅获取新消息 而不是再次重新加载它们 javamail 可以做到这一点吗 它是如何工作的 一些背
  • 原色(有时)变得透明

    我正在使用最新的 SDK 版本 API 21 和支持库 21 0 2 进行开发 并且在尝试实施新的材料设计指南时遇到了麻烦 材料设计说我需要有我的primary color and my accent color并将它们应用到我的应用程序上
  • 如何在PreferenceActivity中添加工具栏

    我已经使用首选项创建了应用程序设置 但我注意到 我的 PreferenceActivity 中没有工具栏 如何将工具栏添加到我的 PreferenceActivity 中 My code 我的 pref xml
  • Google 云端硬盘身份验证异常 - 需要许可吗? (v2)

    我一直在尝试将 Google Drive v2 添加到我的 Android 应用程序中 但无法获得授权 我收到 UserRecoverableAuthIOException 并显示消息 NeedPermission 我感觉 Google A
  • 如何发布Android .aar源以使Android Studio自动找到它们?

    我正在将库发布到内部 Sonatype Nexus 存储库 Android Studio 有一个功能 可以自动查找通过 gradle 引用的库的正确源 我将 aar 的源代码作为单独的 jar 发布到 Nexus 但 Android Stu
  • 我的设备突然没有显示在“Android 设备选择器”中

    我正在使用我的三星 Galaxy3 设备来测试过去两个月的应用程序 它运行良好 但从今天早上开始 当我将设备连接到系统时 它突然没有显示在 Android 设备选择器 窗口中 我检查过 USB 调试模式仅在我的设备中处于选中状态 谁能猜出问
  • Android 套接字和 asynctask

    我即将开始制作一个应该充当 tcp 聊天客户端的应用程序 我一直在阅读和阅读 我得出的结论是最好 如果不需要 将我的套接字和异步任务中的阅读器 问题是我不确定从哪里开始 因为我是 Android 新手 这至少对我来说是一项艰巨的任务 但据我
  • Crashlytics 出现 Android Studio 构建错误

    我正在尝试将 CrashLytics 与 Android Studio 和 gradle 一起使用 但出现一个令人困惑的错误 java lang NoSuchMethodError 我的 build gradle 是 buildscript
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • Facebook 官方图标 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我将为 iOS Android 和 Windows Phone 开发与 Facebook 连接的应用程序 我正在寻找http developer f
  • IDataErrorInfo 与 IValidatableObject?

    目前我的业务对象实现IDataErrorInfo 由于我打算在 ASP NET MVC 3 中使用这些库 我认为我应该实现IValidatableObject以及或者也许代替 WPF 可以与IValidatableObject 数据注释如何
  • 等待 selenium 和 c# 中完成下载文件

    我有一些问题 我在单击 Web 应用程序上的图标后下载文件 我的下一步是在下载记录文件之前执行的 我想等到文件下载完毕 有谁知道如何等待吗 我使用以下脚本 filename应该传入 第一部分等待文件出现在磁盘上 适用于 chrome 第二部
  • 这个 bash 叉子炸弹是如何工作的? [复制]

    这个问题在这里已经有答案了 根据维基百科 以下是一个非常优雅的 bash fork 炸弹 它是如何工作的 拆开来看 主要分为三大块 Defines a function It takes no arguments The body of t
  • ADODB.Stream 错误“800a0bbc”写入文件失败

    当我更改托管提供商时 我显示了奇怪的错误 ADODB Stream 错误 800a0bbc 写入文件失败 cp portal upload asp 第 63 行 我提供了所需的权限 它解决了更新 Access DB 问题 但文件上传仍然没有
  • XMLHttpRequest 分块响应,仅读取正在进行的最后一个响应

    我正在将分块数据从 NodeJS 应用程序发送回浏览器 这些块实际上是 json 字符串 我遇到的问题是每次onprogress调用函数时 它会添加完整数据的字符串 这意味着第二个响应块将附加到第一个响应块 依此类推 我只想获取 刚刚 收到
  • 在 R 中使用 grep 对多个加载的包进行搜索函数

    假设我有包裹base dplyr data table tidyr等加载使用sapply sapply c dplyr data table tidyr library character only TRUE 因此 要检查特定包中的函数列表
  • 如何从 MySQL 数据库检索图像并在 html 标签中显示

    我使用 phpmyadmin 创建了一个带有表的 MySQL 数据库 我使用 BLOB 列创建了此表来保存 jpeg 文件 我对 php 变量有疑问 result here 到目前为止我的代码 catalog php img src wid
  • 使用可变参数重载函数

    这不会编译 public class Methods public static void method Integer i System out print A public static void method int i System
  • SQLite 表约束 - 多列上唯一

    我可以在 SQLite 网站上找到这方面的语法 图表 但没有示例 而且我的代码崩溃了 我有其他表在单个列上具有唯一约束 但我想在两列上向表添加约束 这就是我所遇到的导致 SQLiteException 并显示消息 语法错误 的原因 CREA
  • PrimeFaces 禁用按 Enter 键提交

    PrimeFaces 禁用按 Enter 键提交 我正在运行在 WildFly 8 2 Final 上运行的 PrimeFaces 5 1 我有一个对话框 有两个输入数字和两个按钮 第一个 inputNumber 对 ajax 模糊事件进行
  • 卡夫卡模式订阅。新主题未触发重新平衡

    根据有关的文档卡夫卡java文档 if I 订阅模式 创建与模式匹配的主题 应该进行重新平衡 这使得消费者可以阅读该新主题 但这并没有发生 如果我停止并启动消费者 它确实会获取新主题 所以我知道新主题符合模式 这个问题可能有重复https
  • Apache HTTP 服务器和 Apache Tomcat 之间的区别? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 Apache HTTP S
  • 将对象复制到对象(使用 Automapper ?)

    我有一堂课 public class Person public string FirstName get set public string LastName get set 我有两个 Person 实例 person1 和 person
  • playframework - IOException 无法分配内存

    我的系统是Mint 12 64位 我已经安装了类型安全堆栈并创建了一个新的播放应用程序 在不修改代码的情况下 我尝试运行它 这是输出 http pastebin com 6XwmsbAE Play 抱怨此错误消息 IOException C
  • NLTK/pyNLTK 可以“按语言”(即非英语)工作吗?如何工作?

    我如何告诉 NLTK 以特定语言处理文本 有时我会编写一个专门的 NLP 例程 在非英语 但仍然是印欧语 文本域上进行词性标记 标记化等 这个问题似乎只解决不同的语料库 而不是代码 设置的变化 德语 POS 标记 或者 是否有专门用于 py
  • 创建新的通用结构的正确方法是什么?

    我正在尝试创建一个可以初始化为某种类型的通用结构T 它看起来像这样 pub struct MyStruct
  • jQuery 选择器帮助 - 如何查找 ID 以特定字符开头和结尾的元素

    我有一个动态创建的页面 它可以有许多不同的带有 ID 的单选按钮 如下所示
  • 某些 HTML 标记中的“生成”属性有何用途?

    我看到它在 HTML 标签中使用 但我感觉它可以与大多数 HTML 标签一起使用 我大概能猜出这是什么意思 但我更好奇使用它有什么好处 我试图用谷歌搜索一些有关它的参考资料 但找不到任何资料 所以我来找你们专家 谢谢 Example
  • Android ACTION_IMAGE_CAPTURE 意图

    我们正在尝试使用本机相机应用程序让用户拍摄新照片 如果我们省略了 它就可以正常工作EXTRA OUTPUT extra并返回小位图图像 然而 如果我们putExtra EXTRA OUTPUT 在启动之前 一切都会正常进行 直到您尝试点击相