在 Android 上检测已接听的拨出电话

2024-06-05

我知道这个问题已经被问过很多次了,但没有答案,但我仍然希望有人终于解决了这个问题。

问题:我有一台运行 Android 2.3 的未 root 设备。我需要创建一项服务:

  1. 打电话;
  2. 等待呼叫被应答;
  3. 接听电话后挂断电话(有超时);

和其他许多人一样,我也陷入了#2 的困境。以下是曾经建议的解决方案的摘要:

  • 使用 PhoneStateListener (最流行):不起作用,对于拨出呼叫,它无法检测到我需要的内容。
  • Use com.android.internal.telephony.CallManager及其方法如registerForPreciseCallStateChanged (e.g., this one https://stackoverflow.com/a/12042299/1491190):不起作用,其中没有注册电话,因此事件不会触发。
  • Use com.android.internal.telephony.PhoneFactory获得一个com.android.internal.telephony.Phone实例(这是一切的关键):不起作用,工厂没有初始化;尝试用 a 来初始化它makeDefaultPhones调用导致安全异常(例如here https://stackoverflow.com/q/6010796/1491190).
  • 检测传出铃声(link https://stackoverflow.com/a/14892016/1491190): 作者 -丹尼·波普拉维克 https://stackoverflow.com/users/742001/dany-poplawec- 指出检测铃声可能有助于解决问题,但没有提供任何细节,因此我无法尝试此技术。

看起来一切都已经尝试过了,但可能还有一个技巧可以拯救我:)


我也在尝试解决这个问题,但还没有找到任何解决方案。

查看Android源代码我在〜/kitchen/jellybean/frameworks/opt/telephony/src/java/com/android/internal/telephony/Call.java中找到了这些行

public enum State {
    IDLE, ACTIVE, HOLDING, DIALING, ALERTING, INCOMING, WAITING, DISCONNECTED, DISCONNECTING;

    public boolean isAlive() {
        return !(this == IDLE || this == DISCONNECTED || this == DISCONNECTING);
    }

    public boolean isRinging() {
        return this == INCOMING || this == WAITING;
    }

    public boolean isDialing() {
        return this == DIALING || this == ALERTING;
    }
}

我认为人们可以通过检查 ACTIVE 状态来知道拨出电话是否已应答,但我不知道如何从应用程序中读取此值,也许可以通过为此添加特定函数来修改框架,例如:

    public boolean isActive() {
         return this == ACTIVE;
    }

这只是一个想法,但我不确定如何实现它,因为显然必须进行其他修改才能从应用程序层访问这个新功能。

如果您发现这可行或知道如何去做,我们将非常感谢您提供帮助和反馈。

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

在 Android 上检测已接听的拨出电话 的相关文章

随机推荐

  • 计算字母表的第 n 个 6 个字符排列

    我已经研究了好几天 试图找到解决这个问题的方法 如果需要的话 我很乐意花钱请人咨询时间来解决这个问题 我目前正在使用Python迭代工具 http docs python org 2 library itertools html生成 32
  • 具有宽度/高度的 SVG 在 IE9/10/11 上无法缩放

    IE 9 10 11 存在一个已知问题 如果您有一个 SVG 文件
  • 如何在 Perl 中运行匿名函数?

    sub print 1 sub print 1 我尝试了各种方法 都是错误的 sub 将为您提供指向该函数的指针 因此您必须通过引用调用 sub print Hello world n gt 另一种简单的方法 如所指出的布拉戈维斯特 布尤克
  • C 标准库函数与系统调用。哪个是“open()”?

    I know fopen 在C标准库中 所以我绝对可以调用fopen C 程序中的函数 我感到困惑的是为什么我可以打电话给open 功能也一样 open 应该是系统调用 所以它不是标准库中的C函数 因为我能够成功地调用open 函数 我调用
  • 无法在 $.ajax 请求上设置 HTTP 主机标头

    之前已经以不同的方式讨论过这个主题 但我还没有找到适合我的解决方案 我正在使用jquery 1 7 1 我有一个 REST 风格的 Web 服务 可以返回 JSON 和 XML 但对于这个项目 我需要使用 XML 端点 为了绕过跨域限制 我
  • 如何为 VueJS 项目设置根/基 URL

    我已经部署了一个VueJS项目到像这样的域www example com 但是 我想将其移动到子文件夹 以便我可以像这样访问它www example com v1 如何设置基础 URL 或根 URLVueJS项目 注意 这与基本 URL 无
  • ImageView Android 内存

    我原来的后续question https stackoverflow com questions 5339883 android app ram usage 有没有一种方法可以在 Android 应用程序中使用 ImageViews 而不使
  • 当我从 main 调用 ctor 时,为什么在作用域结束之前调用 dtor? (实验性)

    这里我调用类的构造函数a in main 没有创建该类的对象 并且看起来析构函数在调用后立即被调用 这里到底发生了什么 根据我的理解 发生这种情况是因为我没有创建一个具有内存的对象 医生是怎么被叫到这里的 它是如何实施的 请分享您对此的想法
  • 未捕获的语法错误,无法识别的表达式:[object Object]

    目前正在研究新闻滚动器 请参阅我的现场示例 EXAMPLE http jsfiddle net MrTest dwMfv 5 当我按下一个 上一个箭头时 我收到错误日志Uncaught Syntax error unrecognized e
  • javascript 正则表达式用于空格或

    我正在寻找一个用于空白的 javascript 正则表达式 我正在循环中检查几个不同的字符串 我需要找到其中有大空白的字符串 空白字符串构建在一个循环中 就像这样 请将此代码阅读为var whitespace nbsp 然后循环只是在其上连
  • 使用 ScriptEngine 从 JavaScript 调用 Java 方法

    我正在使用 ScriptEngine 运行 JavaScript 我希望 JavaScript 脚本能够调用 myFunction 其中 myFunction 是我的给定类中的一个方法 我知道可以将 importPackage 用于标准 J
  • 在 Android 中从互联网链接获取数据

    我正在制作一个带有 URL 的应用程序 asp 扩展名 我们向其传递所需的参数并使用 POST 方法获取一些字符串结果 关于如何实现这一目标有什么建议吗 UPDATED 实际上我有一个 net 链接 它接受一些 POST 参数并给我一个结果
  • 管理 Python 项目中的资源

    我有一个 Python 项目 其中使用了许多非代码文件 目前这些都是图像 但将来我可能会使用其他类型的文件 存储和引用这些文件的好方案是什么 我考虑在主目录中创建一个文件夹 resources 但是有一个问题 一些图像是在我的项目的子包中使
  • 如何避免在此控制器方法中两次获取用户?

    我下面有一个获取当前用户的方法 但它获取了用户两次 这似乎有点多余 所以我想看看是否有一种方法可以将其减少到一次 第一个 User 获取来自 FindByEmailFromClaimsPrinciple 然后第二个来自 dbContext
  • 如何在 AngularJS 中使用 $timeout 运行带有参数的函数?

    我的 AngularJS 控制器中有这个函数 看起来像这样 polling interval 1000 var poll function Execution code timeout poll polling interval poll
  • 强制关闭导致HTTP实体可能不为空

    这里是发送数据 Http 的完整代码 asynctask private class MyAsyncTaskPupuk extends AsyncTask
  • 如何使用 Jsoup 获取包含非 ASCII 字符(ą、ś ...)的 URL?

    我正在使用 jsoup 解析一些波兰网站 但我对 URL 中的 等特殊字符有问题example com k t读起来像example com k 每个没有这个特殊字符的查询都可以完美运行 我努力了Document doc Jsoup par
  • git 别名:多个命令、可变参数

    我经常发现自己输入以下内容 git push remote1 branch1 branch2 tag1 tag2 tag3 git push remote2 branch1 branch2 tag1 tag2 tag3 我更喜欢一个别名 我
  • 散景图只会弹出一个空白窗口

    所以我最近一直在尝试学习散景 一切都很顺利 但突然间 每当我尝试制作散景图时 浏览器就会显示一个空白页面 我没有收到任何错误代码 只有空白页 这是我几天前成功用来创建绘图的程序 我什至尝试加载几周前制作的 html 绘图文件 该文件在同事计
  • 在 Android 上检测已接听的拨出电话

    我知道这个问题已经被问过很多次了 但没有答案 但我仍然希望有人终于解决了这个问题 问题 我有一台运行 Android 2 3 的未 root 设备 我需要创建一项服务 打电话 等待呼叫被应答 接听电话后挂断电话 有超时 和其他许多人一样 我