博客
关于我
监听有线/蓝牙耳机的插入与拔出,电话的状态及拦截-Android
阅读量:215 次
发布时间:2019-02-26

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

Android 录音中的那些坑- https://blog.csdn.net/lv_ws/article/details/52859794

> 扬声器、有线耳机、蓝牙耳机对手机通话或听音乐的影响
Android 耳机插拔流程源码跟踪浅析-
 对于有线耳机,监听Intent.ACTION_HEADSET_PLUG系统广播,对于蓝牙耳机,监听BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED系统广播
private BroadcastReceiver headsetPlugReceiver = new BroadcastReceiver() {  
        @Override  
        public void onReceive(Context context, Intent intent) {  
              
            String action = intent.getAction();  
            if (BluetoothHeadset.ACTION_CONNECTION_STATE_CHANGED.equals(action)) {  
                BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();  
                if(BluetoothProfile.STATE_DISCONNECTED == adapter.getProfileConnectionState(BluetoothProfile.HEADSET)) {  
                    //Bluetooth headset is now disconnected  
                    handleHeadsetDisconnected();  
                }  
            } else if ("android.intent.action.HEADSET_PLUG".equals(action)) {  
                if (intent.hasExtra("state")) {  
                    int state = intent.getIntExtra("state", 0);  
                if (state == 1) {  
                    Toast.makeText(context, "插入耳机", Toast.LENGTH_SHORT).show();  
                } else if(state == 0){  
                    Toast.makeText(context, "拔出耳机", Toast.LENGTH_SHORT).show();  
                }  
            }  
        }  
          
    }; 
 
  监听Android的系统广播AudioManager.ACTION_AUDIO_BECOMING_NOISY, 但是这个广播只是针对有线耳机,或者无线耳机的手机断开连接的事件,监听不到有线耳机和蓝牙耳机的接入,但对于我的需求来说足够了,监听这个广播就没有延迟了,UI可以立即响应
private BroadcastReceiver headsetPlugReceiver = new BroadcastReceiver() {  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            String action = intent.getAction();  
            if (AudioManager.ACTION_AUDIO_BECOMING_NOISY.equals(action)) {  
                handleHeadsetDisconnected();  
            }  
        }     
    }; 

> 电话/短信的状态及拦截

 电话中的RIL机制 AT指令集及基带BaseBand,BP?
Android应用--简、美音乐播放器添加电话监听-
android音乐播放器监听电话状态- http://blog.csdn.net/piaozhiye/article/details/6429402

 短信拦截分为2种方式,其一是广播,其二是内容观察者;

 实现挂断电话的功能,就必须通过AIDL才行,然后利用反射来使用其方法。
Android开发——短信电话拦截/接听电话- http://blog.csdn.net/seu_calvin/article/details/51924279
Android 短信拦截&来去电话拦截- https://my.oschina.net/ososchina/blog/501874
Android 电话和短信拦截- http://blog.csdn.net/jeden/article/details/46621531
Android 来电(包括铃声),短信拦截的实现方法- http://blog.csdn.net/lyjit/article/details/51863740
 

你可能感兴趣的文章
mysql 字段区分大小写
查看>>
mysql 字段合并问题(group_concat)
查看>>
mysql 字段类型类型
查看>>
MySQL 字符串截取函数,字段截取,字符串截取
查看>>
MySQL 存储引擎
查看>>
mysql 存储过程 注入_mysql 视图 事务 存储过程 SQL注入
查看>>
MySQL 存储过程参数:in、out、inout
查看>>
mysql 存储过程每隔一段时间执行一次
查看>>
mysql 存在update不存在insert
查看>>
Mysql 学习总结(86)—— Mysql 的 JSON 数据类型正确使用姿势
查看>>
Mysql 学习总结(87)—— Mysql 执行计划(Explain)再总结
查看>>
Mysql 学习总结(88)—— Mysql 官方为什么不推荐用雪花 id 和 uuid 做 MySQL 主键
查看>>
Mysql 学习总结(89)—— Mysql 库表容量统计
查看>>
mysql 实现主从复制/主从同步
查看>>
mysql 审核_审核MySQL数据库上的登录
查看>>
mysql 导入 sql 文件时 ERROR 1046 (3D000) no database selected 错误的解决
查看>>
mysql 导入导出大文件
查看>>
MySQL 导出数据
查看>>
mysql 将null转代为0
查看>>
mysql 常用
查看>>