Android 开发之PhoneState与CallState

本文探讨了Android开发中的PhoneState和CallState,详细解析了`updatecallstate`函数,涵盖从IDLE到DISCONNECTED的各种通话状态,帮助开发者理解如何处理不同通话阶段的逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Android  开发之PhoneState与CallState



最近在研究Phone应用,记录一下相关信息,希望对大家也会有用
实现手机电话状态的监听,主要依靠两个类:TelephoneManger和PhoneStateListener。
TelephonseManger提供了取得手机基本服务的信息的一种方式。因此应用程序可以使用TelephonyManager来探测手机基本服务的情况。
应用程序可以注册listener来监听电话状态的改变。我们不能对TelephonyManager进行实例化,只能通过获取服务的形式:  
Context.getSystemService(Context.TELEPHONY_SERVICE); 

当然我们这里的重点不是服务
//電話狀態的Listener
        MyPhoneStateListener myPhoneStateListener = new MyPhoneStateListener();
        //取得TelephonyManager
        TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
        //將電話狀態的Listener加到取得TelephonyManager
        telephonyManager.listen(myPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
    }

    public class MyPhoneStateListener extends PhoneStateListener {
        @Override
        public void onCallStateChanged(int state, String phoneNumber) {
            switch (state) {
                //電話狀態是閒置的
                case TelephonyManager.CALL_STATE_IDLE:
                    break;
                //電話狀態是接起的
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    Toast.makeText(MainActivity.this, "正接起電話…", Toast.LENGTH_LONG).show();
                    break;
                //電話狀態是響起的
                case TelephonyManager.CALL_STATE_RINGING:
                    Toast.makeText(MainActivity.this, phoneNumber + "正打電話來…", Toast.LENGTH_LONG).show();
                    break;
                default:
                    break;
            }
        }

public void updatecallstate(Call call)
{
final Call.State state = call.getState();
switch (state) {
case IDLE:
//通话空闲
break;
case ACTIVE:
//通话中
break;
case HOLDING:
//通话保持(等待回应(接听等))
break;
case DIALING:
case ALERTING:
//拨号
break;
case INCOMING:
case WAITING:
//来电
break;
case DISCONNECTING:
//正在挂断
break;
case DISCONNECTED:
//通话中断(网络等原因)
break;
}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值