我正在尝试使用系统服务收听耳机的插入:
class MainActivity : AppCompatActivity(){
private lateinit var headphoneIntentFilter: IntentFilter
private lateinit var headphoneReceiver:HeadphoneReceiver
override fun onStart() {
super.onStart()
headphoneIntentFilter = IntentFilter(ACTION_HEADSET_PLUG)
headphoneReceiver = HeadphoneReceiver()
registerReceiver(headphoneReceiver,headphoneIntentFilter)
}
}
接收者本身:
class HeadphoneReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
AppLog.i(TAG,"HeadphoneBroadcastReceived")
if (intent?.action == Intent.ACTION_HEADSET_PLUG) {
when (intent.getIntExtra("state", -1)) {
0 -> {
AppLog.d(TAG, "Headset is unplugged")
TTSUtils.getInstance(context!!).isEnabled = false
}
1 -> {
AppLog.i(TAG, "Headset plugged in")
TTSUtils.getInstance(context!!).loadService()
}
}
}
}
}
我根本没有收到广播。我在嵌入式设备上使用OSS android的自定义派生,但我希望问题出在我的代码上。
尝试ACTION_AUDIO_BECOMING_NOISY
过滤器。
/**
* Helper class for listening for when headphones are unplugged.
*/
private class BecomingNoisyReceiver(private val context: Context) : BroadcastReceiver() {
private val noisyIntentFilter = IntentFilter(AudioManager.ACTION_AUDIO_BECOMING_NOISY)
private var registered = false
fun register() {
if (!registered) {
context.registerReceiver(this, noisyIntentFilter)
registered = true
}
}
fun unregister() {
if (registered) {
context.unregisterReceiver(this)
registered = false
}
}
override fun onReceive(context: Context, intent: Intent) {
if (intent.action == AudioManager.ACTION_AUDIO_BECOMING_NOISY) {
//Pause audio
}
}
}