我希望我的Android应用程序能够通过一个振铃呼叫来判断给定的电话号码是否正常工作(即,我呼叫该号码,等待我这边的第一个振铃响起,然后挂断)。如果没有铃声(即电话断线),我也想知道。这就像是对一个电话号码的ping。如果这是可能的,怎么做呢?
发布于 2017-09-14 18:58:25
你所指的声音叫做“Ringback”。“'Dial”是指拿起未在通话中的已连接电话时听到的声音。
Android Telephony类没有给SDK应用程序提供监听通话音频的权限,所以除非借助NDK,否则监听回铃看起来是不可能的(尽管some people已经报告了通过黑客监听来电和outgoing通话音频的成功)
您的方法的问题是,即使您设法获得音频,您也需要在线路上听到声音暂停-这是不可靠的,因为一些提供商读取无效状态的自动消息,而其他提供商甚至允许用户上传他们自己的回铃声音(例如一首歌曲)。
对您来说,最好的选择是监听TelephonyManager.EXTRA_STATE_RINGING开始的时间,然后在挂断之前等待一段任意的时间。其他州,如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
}
}https://stackoverflow.com/questions/45894950
复制相似问题