当前位置: 首页 > 知识库问答 >
问题:

我如何以编程方式进行一次振铃呼叫,以及如何判断我呼叫的线路是否断开?

仲孙思源
2023-03-14

我希望我的Android应用程序能够通过拨打一个电话号码来判断给定的电话号码是否有效(即,我拨打该号码,等待第一个铃声响起,然后挂断)。如果没有铃声(即电话断开),我也想知道。这有点像一个电话号码。如果这是可能的,怎么办?

共有1个答案

訾渝
2023-03-14

你所指的声音被称为“回铃声”。“拨号音”是指你拿起未通话的已连接电话时听到的声音。

Android 电话类不授予 SDK 应用程序收听呼叫音频的权限,因此除非诉诸 NDK,否则监视回铃似乎是不可能的(尽管有些人报告说,使用黑客成功收听传入和传出呼叫音频)

你的方法的问题是,即使你设法获得音频,你也需要听在线暂停的声音——这是不可靠的,因为一些提供商读取无效状态的自动消息,而另一些提供商甚至允许用户上传他们自己的回铃声(如歌曲)。

对您来说,最好的选择是收听< code>TelephonyManager。EXTRA_STATE_RINGING开始,然后在挂机前等待任意时间。其他状态,如< code>CALL_STATE_OFFHOOK与您的情况无关。

public void onReceive(Context context, Intent intent) {
    if (timer == null && TelephonyManager.EXTRA_STATE_RINGING.equals(intent.getStringExtra(TelephonyManager.EXTRA_STATE))) {
        timer = new Handler(); //member variable
        timer.postDelayed(new Runnable() {
            @Override
            public void run() {
                hangUp();
            }
        }, 1500); //arbitrary delay
    }
}
 类似资料:
  • 问题内容: 在Eclipse中创建了一个新的标准Java 7项目,并成功地成功获取了like 的实例,如下所示: 在主要方法中,此方法运行良好,据我所知,该部分有效。但我不知道如何实际使用它。在SoapUI中,我通过以下请求调用此服务: 如何在Java中执行相同的请求?我的目标是我有一个很长的清单,我需要为每个清单运行一个这样的请求。在SoapUI中手动进行操作有点烦人,因此我想使用一个简单的Ja

  • Gradle 2.13中的以下工作: 在Gradle 3.0中,我收到错误: 方法没有签名:静态组织。格拉德尔。util。ConfigureUtil。configure()适用于参数类型:(build\u dke3xcnofl8fbuvcpvgwyc2r5$\u run\u closure12$\u closure38,com.eriwen.gradle.css.source.internal.D

  • 问题内容: 假设您正在使用路线: 并且在您的html中,当您单击按钮时,您想导航到“关于”页面。一种方法是 …但是ng-click在这里似乎也很有用。 这个假设正确吗?使用ng-click代替锚点? 如果是这样,那将如何工作?IE浏览器: 问题答案: 路由监视服务并响应URL的更改(通常通过哈希值)。要“激活”一条路线,只需更改URL。最简单的方法是使用锚标记。 没有什么更复杂的了。但是,如果必须

  • 我有一个后台服务,每天下午1点打电话给我。下午1点,我的Firebase数据库中的3个值应设置为0。当用户启动某个活动时,会触发后台服务。如我所愿,值在下午1点重置为0,但每次下午1点后,当用户启动活动时,服务都会运行重置我的值。如何在下午1点将值重置为0,直到第二天下午1点才再次重置? 下面是我在服务类中的代码 这是启动服务的代码。此方法在此活动的oncreate方法中调用。

  • 如何获得呼叫的位置?不是全部地点,只是一个地区?也许android有一些API?未找到内容解析程序和Calllog.calls.content_uri

  • 我是RXJava的新手。在一个场景中,我希望调用第一个登录webservice(),如果成功,则希望调用另一个webservice()以获取用户信息。