Android 监听通话状态(挂断 监听 来电)实现自动外呼 按顺序拨出电话 间隔5秒

       最近项目也是添加一个小功能 监听通话状态实现一个自动外呼的功能 我在这里简单的实现了一下转了几天的博客可各大网站找出了一个最简单也好理解的一个方法(至今为止) 其实就用到了我们Android源生自带的俩个类 PhoneStateListener类和TelephonyManager类 PhoneStateListener类是我们Android 源生只带的监听通话状态的一个类

步骤一: 继承PhoneStateListener类 重写 onCallStateChanged()方法 可以用if去判断也可以去用switch去判断大致为:

public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            case TelephonyManager. CALL_STATE_OFFHOOK://待机
                //做一些音乐关闭等操作
                break;
            case TelephonyManager.CALL_STATE_IDLE ://挂断
                // 监听挂断电话后的一些操作
                break;
            case TelephonyManager.CALL_STATE_RINGING ://来电话
                //来电免打扰程序要处理的关键事务
                break;
            default :
                break;
        }
        super.onCallStateChanged(state, incomingNumber);
    }

步骤2:这样我们的监听基本快完成差不多了  我们大致的操作就是在监听状态下做一些操作 只是我们有时候写操作避免不了用一些 集合哈  什么工具类啊 数据啊 什么的 那怎么办呢 其实很简单 做一个set方法吧我们需要的东西传进来不就好了 我这里做了一个setContext我知道这样很糙就将就的用吧 看懂就行 

 public void setContext(Context context,List data,PrivateResAdapter mPrivateResAdapter ) {
        this.context = context;
        this.data = data;
        this.mPrivateResAdapter = mPrivateResAdapter;
        this.geshu = 1;
    }

这样既本就写完这个类了 具体的如下

public class ListenToPhoneState extends PhoneStateListener {
    private Context context;
    private List data;
    private PrivateResAdapter mPrivateResAdapter;
    int call_status,in,geshu;

    public void setContext(Context context,List data,PrivateResAdapter mPrivateResAdapter ) {
        this.context = context;
        this.data = data;
        this.mPrivateResAdapter = mPrivateResAdapter;
        this.geshu = 1;
    }

    public void onCallStateChanged(int state, String incomingNumber) {
        switch (state) {
            case TelephonyManager. CALL_STATE_OFFHOOK://待机
                //做一些音乐关闭等操作
                break;
            case TelephonyManager.CALL_STATE_IDLE ://挂断
                if (geshu==1){
                    geshu =2;
                    break;
                }else {
                    /**
                     * 逻辑代码
                     */
                    if (Public_parameters.SWITCH_PARAM) {
                        for (int i = 1;i

现在就基本算是完成了 剩下的就是吊起监听服务 让他自己去完成吧 

tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE); /** 开启自动外呼系统监听通话 */
listenToPhoneState = new ListenToPhoneState();
listenToPhoneState.setContext(PrivateResActivity.this,data,mPrivateResAdapter);
tm.listen(listenToPhoneState,PhoneStateListener.LISTEN_CALL_STATE);//开启监听服务

转载本博客请出示起源地

你可能感兴趣的:(Android,监听服务)