当我们正在“专注学习”的过程中,如果不小心拔掉了耳机线或者断开蓝牙耳机的连接,突然之间我们APP里正在播放的声音就会打扰到周围的人,如果声音还挺大的话,是不是有些尴尬?所以呢,现在需要实现这么一个功能:在有线耳机拔掉或者蓝牙耳机断开连接时,立刻停止播放。
方式一、通过广播接收器监听有线耳机和蓝牙耳机的状态
步骤1:申请权限
在工程的AndroidManifest.xml中,添加以下代码:
<manifast xxx>
...
<!-- 获取蓝牙相关权限 -->
<uses-permission android:name="android.permission.BLUETOOTH" />
...
</manifast>
步骤2:注册广播接受器,监听耳机状态变化
广播(Broadcast Receiver)注册有两种方式,一种方式是<静态注册>:即在项目的Manifest的文件里注册。
<receiver android:name=".HeadphoneReceiver">
<intent-filter>
<action android:name="android.intent.action.HEADSET_PLUG" />
</intent-filter>
</receiver>
经测试,该方式无效:因为Android官方为了提升用户体验,对应用在后台运行时可以执行的操作施加了限制。从 Android O 版本(Android 8.0, API 26)开始,在 AndroidManifest.xml 注册的广播接收器,无法接收隐式广播。虽然,