AudioManager 向死线程上的处理程序发送消息?

2024-01-04

我正在尝试以编程方式将音量提高到STREAM_MUSIC流的最大值,但我有一个“向死线程上的处理程序发送消息”当我这样做时出现问题。另外,它似乎不会 100% 地提高音量,尽管当我收到此错误时,它大多数时候都会提高音量。

代码是:

System.out.println("Maximum volume for this stream is: "+maxstreamvol+" and it used to be set to: "+currentvol);     
final AudioManager am = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
am.setStreamVolume(AudioManager.STREAM_MUSIC, maxstreamvol, AudioManager.FLAG_SHOW_UI);
am.setStreamSolo(AudioManager.STREAM_MUSIC, true);
System.out.println("Volume Raised!"); 

谷歌搜索后,似乎这个错误与多线程情况有关......此时的代码应该在 UI 线程上运行。

事实上,我什至用以下内容包围它:

runOnUiThread(new Runnable() {

    public void run() {
        // code_goes_here
    }
});

并且,这产生了同样的错误。我看到的错误是这样的:

I/System.out(24949): Maximum volume for this stream is: 15 and it used to be set to: 0
W/MessageQueue(  490): Handler (android.media.AudioManager$FocusEventHandlerDelegate$1) {42b52f28} sending message to a Handler on a dead thread
W/MessageQueue(  490): java.lang.RuntimeException: Handler (android.media.AudioManager$FocusEventHandlerDelegate$1) {42b52f28} sending message to a Handler on a dead thread
W/MessageQueue(  490):  at android.os.MessageQueue.enqueueMessage(MessageQueue.java:294)
W/MessageQueue(  490):  at android.os.Handler.enqueueMessage(Handler.java:618)
W/MessageQueue(  490):  at android.os.Handler.sendMessageAtTime(Handler.java:587)
W/MessageQueue(  490):  at android.os.Handler.sendMessageDelayed(Handler.java:558)
W/MessageQueue(  490):  at android.os.Handler.sendMessage(Handler.java:495)
W/MessageQueue(  490):  at android.media.AudioManager$1.dispatchAudioFocusChange(AudioManager.java:1894)
W/MessageQueue(  490):  at android.media.IAudioFocusDispatcher$Stub.onTransact(IAudioFocusDispatcher.java:57)
W/MessageQueue(  490):  at android.os.Binder.execTransact(Binder.java:351)
W/MessageQueue(  490):  at dalvik.system.NativeStart.run(Native Method)
I/System.out(24949): Volume Raised!

有人知道这里发生了什么事吗?


您的问题可能与此线程中报告的问题有关 -onPostExecute 未在 AsyncTask 中调用(处理程序运行时异常) https://stackoverflow.com/questions/4280330/onpostexecute-not-being-called-in-asynctask-handler-runtime-exception

音频焦点更改的显示正在触发 android 无法完成的 UI 事件。目前尚不清楚为什么会出现这种情况。也许音频管理器是在一个上下文中获得的,而显示音量的 toast 在另一个上下文中执行?一个快速而肮脏的更改是将标志交换为 FLAG_VIBRATE 并检查这是否会产生影响。这会将问题范围缩小到 UI 更新,然后您就可以进行处理。

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

AudioManager 向死线程上的处理程序发送消息? 的相关文章

随机推荐

  • REG 删除批处理文件中包含引号的值?

    我正在尝试删除我制作的批处理文件中的一些注册表项 我在这里找到了以下代码 它运行良好 直到它击中 REG DELETE for F tokens 1 a in REG QUERY KEY findstr I C VALUE do REG D
  • 寻址 python 对象

    我正在尝试将 ncclient 用于 Python 如果我这样做 它会起作用 from ncclient import manager m manager connect 如果我这样做就会失败 import ncclient m nccli
  • Susy:带有固定排水沟的流体柱?

    我正在尝试构建一个包含流体柱和固定排水沟的 12 列网格 列的宽度会随着窗口大小的调整而改变 但装订线将保持不变 基本上 百分比代表列 em 代表装订线 这对苏西来说可能吗 您可以使用填充作为排水沟 并允许您拥有固定的 间距 同时保持网格的
  • 类路径和构建路径有什么区别

    我对这两个术语感到困惑 另外 我应该如何在 Spring MVC 项目的 src 文件夹下创建文件 当我使用 File 对象创建时 它会在 C SpringSourceTool 中创建文件 我猜这是 ClassPath 对吗 我怎样才能得到
  • 在网站上显示 RTSP

    我有一个指向摄像机的 RTSP 链接 我想将其显示在网页上 由于视频标签不支持 RTSP 并且 google chrome 不再支持 VLC 和 QuickTime 插件 目前使用 RTSP 链接显示此摄像机的最佳方式是什么 如果延迟不是一
  • 该属性应该是我的对象接口的一部分吗?

    我有一个名为 IsSecureConnection 的属性 它是我的对象接口的一部分 这对于接口的大多数实现都是有意义的 但是 在某些实现中 我希望将属性设置为只读 即使所有实现都需要此属性 尽管有时略有不同 我是否应该从对象的接口中省略此
  • 在 cron 中运行 headless selenium 时,出现错误“Pyperclip 无法找到适合您系统的复制/粘贴机制”

    我用Python实现了一个selenium脚本来上传一些图片和内容到Facebook 我将其命名为FBUpload py 当我以这种方式启动它时 它工作得很好 在无头模式下 Xvfb 10 ac python3 home someuser
  • PHPWord:创建从右到左的阿拉伯语 Word 文档

    我正在尝试使用PHPWord http phpword codeplex com 创建一个 Word 文档 其中包含从 MySQL 数据库中提取的动态数据 数据库有 MySQL 字符集 UTF 8 Unicode utf8 MySQL 连接
  • SQL查询按月比较产品销量

    我有一个每月状态数据库视图 我需要根据该视图构建报告 视图中的数据看起来像这样 Category Revenue Yearh Month Bikes 10 000 2008 1 Bikes 12 000 2008 2 Bikes 12 00
  • 在 Nest ElasticSearch 中重复使用计数和搜索查询

    有没有办法通过 Nest 在 ElasticSearch 中重用对 Client Search 和 Client Count 的流畅查询 这是定义搜索流畅定义的代码片段的开头 System Func
  • React 组件不会在更新状态时重新渲染

    我认为你知道更好的解决方案 我有一个包含我的猫的对象数组的文件 var categories id 1 name Faktury selected false id 2 name Telefony selected false id 3 n
  • 无需用户干预即可刷新 linkedin 用户访问令牌

    有没有办法通过应用程序为经过身份验证的用户刷新 Linkedin 访问令牌 没有他的干预 提前致谢 仅当用户当前登录 LinkedIn 并且令牌尚未过期时 该过程才会 无缝 https developer linkedin com blog
  • 如何在没有 old_io 的情况下从字节读取/写入整数值?

    有方便的特点Reader and Writer in std old io使用各种字节序读取 写入整数值的模块 但该模块被声明为已过时 因此我正在尝试找出其他方法来做到这一点 一种方法是读取字节并使用位算术构造结果值 标准库还有其他方法吗
  • Docker 无法识别 Postgresql 数据目录

    我拼命地尝试让我继承的 Docker 项目启动并运行 而 Docker 给我带来了无穷无尽的问题 当尝试启动容器时 我的 Postgresql 容器出现以下错误 FATAL var lib postgresql data is not a
  • 使用 /clr 编译的 C++-CLI 库调试 C 可执行文件

    我正在使用 Visual Studio 2010 来调试主要用 C 编写的应用程序 通常 我可以很好地附加调试器 但当我链接到用 C CLI 编写的库时 我遇到了一些问题 如果我用以下命令编译库 clr标志 我最终必须为此尚未编写的库执行此
  • Caliburn.Micro + Autofac 引导

    我有一个 Caliburn Micro 项目 我正在尝试从其移植 to Autofac http autofac org 我在用着这段代码 https gist github com kavand 6272568 这是代码的更新版本本指南
  • 如何获得相机旋转? (阿鲁科图书馆)

    我一直在尝试了解下载 Aruco 库时包含的 aruco test cpp 程序的输出 输出具有以下格式 22 236 87 86 4296 422 581 78 3856 418 21 228 032 261 347 228 529 Tx
  • Clojure 中对数字进行四舍五入的最佳方法是什么?

    这是个简单的 但无论如何 我认为最好在这里回答这个问题 以便更快 更轻松地参考 这个操作 3 2 产生这个 3 2 我需要一个函数进行向上舍入 这将产生 2 另一个函数进行向下舍入 这将产生 1 您可以进行 java interop 数学
  • React Native FlatList 水平模式根本不起作用

    我正在使用 React Native 0 44 0 并尝试使用卡片样式布局制作水平 FlatList 无论出于何种原因 无论我做什么 我都无法激活水平模式 它似乎总是垂直渲染 这是我正在使用的代码
  • AudioManager 向死线程上的处理程序发送消息?

    我正在尝试以编程方式将音量提高到STREAM MUSIC流的最大值 但我有一个 向死线程上的处理程序发送消息 当我这样做时出现问题 另外 它似乎不会 100 地提高音量 尽管当我收到此错误时 它大多数时候都会提高音量 代码是 System