我怎样才能以编程方式进行一个振铃呼叫,如何知道我呼叫的线路是否已closures?

我希望我的Android应用程序能够通过进行一个振铃电话来分辨给定的电话号码是否正在工作(即,我打电话给号码,等待第一个振铃响起,然后挂断)。 如果没有响铃(即电话断开),我也想知道。 这是一个电话号码平。 如果这是可能的,那怎么办呢?

Solutions Collecting From Web of "我怎样才能以编程方式进行一个振铃呼叫,如何知道我呼叫的线路是否已closures?"

您所指的声音被称为“回铃”。 “拨号音”是您在拿起并非通话的连接电话时听到的声音。

Android 电话类不允许SDK应用程序访问通话audio,因此除非使用NDK,否则监听回铃音不可能出现(尽pipe有些人已经报告成功地用黑客监听来电和去电audio)

你的方法的问题是,即使你设法得到audio,你将需要听到停顿的声音 – 这是不可靠的,因为一些供应商阅读自动消息的无效状态,其他人甚至允许用户上传自己的回铃音(比如一首歌)。

最好的select是在TelephonyManager.EXTRA_STATE_RINGING开始时监听,然后在挂断之前等待一段时间。 诸如CALL_STATE_OFFHOOK之类的其他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 } }