博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android怎么实现自动接听
阅读量:5320 次
发布时间:2019-06-14

本文共 2710 字,大约阅读时间需要 9 分钟。

添加权限 

package com.xiawenquan.pic.demo.utils;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.TextView;
public class Auto_accept_callActivity extends Activity {
    TelephonyManager manager;
    String result = "监听电话状态:/n";
    TextView textView;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        manager = (TelephonyManager) this.getSystemService(TELEPHONY_SERVICE);
        // 获取电话服务
        manager.listen(new MyPhoneStateListener(),
                PhoneStateListener.LISTEN_CALL_STATE);
        // 手动注册对PhoneStateListener中的listen_call_state状态进行监听
    }
    public void auto_accept_call() {
        Intent localIntent1 = new Intent(Intent.ACTION_HEADSET_PLUG);
        localIntent1.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        localIntent1.putExtra("state", 1);
        localIntent1.putExtra("microphone", 1);
        localIntent1.putExtra("name", "Headset");
        this.sendOrderedBroadcast(localIntent1,
                "android.permission.CALL_PRIVILEGED");
        Intent localIntent2 = new Intent(Intent.ACTION_MEDIA_BUTTON);
        KeyEvent localKeyEvent1 = new KeyEvent(KeyEvent.ACTION_DOWN,
                KeyEvent.KEYCODE_HEADSETHOOK);
        localIntent2.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent1);
        this.sendOrderedBroadcast(localIntent2,
                "android.permission.CALL_PRIVILEGED");
        Intent localIntent3 = new Intent(Intent.ACTION_MEDIA_BUTTON);
        KeyEvent localKeyEvent2 = new KeyEvent(KeyEvent.ACTION_UP,
                KeyEvent.KEYCODE_HEADSETHOOK);
        localIntent3.putExtra("android.intent.extra.KEY_EVENT", localKeyEvent2);
        this.sendOrderedBroadcast(localIntent3,
                "android.permission.CALL_PRIVILEGED");
        Intent localIntent4 = new Intent(Intent.ACTION_HEADSET_PLUG);
        localIntent4.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
        localIntent4.putExtra("state", 0);
        localIntent4.putExtra("microphone", 1);
        localIntent4.putExtra("name", "Headset");
        this.sendOrderedBroadcast(localIntent4,
                "android.permission.CALL_PRIVILEGED");
    }
    /***
     * 继承PhoneStateListener类,我们可以重新其内部的各种监听方法 然后通过手机状态改变时,系统自动触发这些方法来实现我们想要的功能
     */
    class MyPhoneStateListener extends PhoneStateListener {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            Log.v("log", "oncall state changed");
            switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:
                result += " 手机空闲 ";
                break;
            case TelephonyManager.CALL_STATE_RINGING:
                result += " 手机铃响:" + incomingNumber;
                Log.v("log", result);
                Auto_accept_callActivity.this.auto_accept_call();
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                result += " 电话挂起 ";
            default:
                break;
            }
            super.onCallStateChanged(state, incomingNumber);
        }
    }
}

转载于:https://www.cnblogs.com/flyoung/p/4922886.html

你可能感兴趣的文章
一次Linux系统被攻击的分析过程
查看>>
Java遗留问题
查看>>
Fugl-Meyer Assessment(FMA)
查看>>
音乐播放器制作(通过数据绑定切换图片)
查看>>
IntelliJ debug grails 无效的解决办法
查看>>
Base64编码
查看>>
01 div+css 为什么需要div+css布局
查看>>
黑马程序员——c语言学习心得——位运算符
查看>>
C# Icon转Byte , Byte转Icon
查看>>
博客开篇,数据转移
查看>>
spring boot 自学笔记(四) Redis集成—Jedis
查看>>
Android应用程序安装过程浅析
查看>>
Crazyflie 2.0 System Architecture
查看>>
用react native 做的一个推酷client
查看>>
B. Ohana Cleans Up(Codeforces Round #309 (Div. 2))
查看>>
Vim 简易配置
查看>>
电梯UI部分
查看>>
2016.07.15
查看>>
Vue.js 3.0 新特性预览
查看>>
checkbox中把选项文字与小圆圈关联上
查看>>