如何知道被叫人拿起电话的那一刻

Slo*_*lot 5 android

可能重复:
检测是否已接听拨出电话

我怎么知道我打电话的人"拿起"他的电话的那一刻?

Ser*_*gio -1

就 Android 的电话管理器而言,您无法以编程方式检测您的呼叫是否已被应答。

但对于来电来说,使用PhoneStateListener. 当您“拿起”电话时,状态更改为CALL_STATE_OFFHOOK

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
tm.listen(mPhoneListener, PhoneStateListener.LISTEN_CALL_STATE);

private PhoneStateListener mPhoneListener = new PhoneStateListener() {
    public void onCallStateChanged(int state, String incomingNumber) {
        try {
            switch (state) {
            case TelephonyManager.CALL_STATE_RINGING:
                // do something...
                break;

            case TelephonyManager.CALL_STATE_OFFHOOK:
                // you picked up the phone
                break;

            case TelephonyManager.CALL_STATE_IDLE:
                // do something...
                break;
            default:
                Log.d(TAG, "Unknown phone state=" + state);
            }
        } catch (RemoteException e) {}
    } 
};
Run Code Online (Sandbox Code Playgroud)

  • 错误的 CALL_STATE_OFFHOOK 将在拨打号码时立即设置,而不是在该人拿起电话时设置。 (21认同)
  • 正如 AndroidDev 所说,拨出电话后,状态将立即更改为 OFFHOOK。 (2认同)