首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何以编程方式进行一次振铃呼叫,以及如何判断正在呼叫的线路是否已断开?

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

Stack Overflow用户
提问于 2017-08-26 19:39:46
回答 1查看 940关注 0票数 10

我希望我的Android应用程序能够通过一个振铃呼叫来判断给定的电话号码是否正常工作(即,我呼叫该号码,等待我这边的第一个振铃响起,然后挂断)。如果没有铃声(即电话断线),我也想知道。这就像是对一个电话号码的ping。如果这是可能的,怎么做呢?

EN

回答 1

Stack Overflow用户

发布于 2017-09-14 18:58:25

你所指的声音叫做“Ringback”。“'Dial”是指拿起未在通话中的已连接电话时听到的声音。

Android Telephony类没有给SDK应用程序提供监听通话音频的权限,所以除非借助NDK,否则监听回铃看起来是不可能的(尽管some people已经报告了通过黑客监听来电和outgoing通话音频的成功)

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

对您来说,最好的选择是监听TelephonyManager.EXTRA_STATE_RINGING开始的时间,然后在挂断之前等待一段任意的时间。其他州,如CALL_STATE_OFFHOOK,与您的情况无关。

代码语言:javascript
运行
复制
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
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45894950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档