【发布时间】:2017-12-10 08:19:07
【问题描述】:
我有一个 BrodcastReciever 接收耳机插头事件和蓝牙连接。这很好用,但问题是当我连接时,例如,SmartWatch 类似于我连接蓝牙耳机或条形音箱。我该怎么做才能过滤可以播放其他音乐的媒体设备?
广播接收者
@Override
public void onReceive(final Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_MEDIA_BUTTON.equals(action)) {
if (Settings.PROCESS_PRESSING){
KeyEvent event = intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (isAvailable) {
if (mTimer != null) mTimer.cancel();
if (myTimer != null) myTimer.cancel();
mTimer = new Timer();
myTimer = new MyTimerTask();
if (KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE == event.getKeyCode()) {
listener.playButtonPressed();
} else if (KeyEvent.KEYCODE_MEDIA_PLAY == event.getKeyCode()) {
listener.playButtonPressed();
} else if (KeyEvent.KEYCODE_MEDIA_PAUSE == event.getKeyCode()) {
listener.playButtonPressed();
} else if (KeyEvent.KEYCODE_MEDIA_STOP == event.getKeyCode()) {
listener.playButtonPressed();
} else if (KeyEvent.KEYCODE_MEDIA_NEXT == event.getKeyCode()) {
listener.nextTrackButtonPressed();
} else if (KeyEvent.KEYCODE_MEDIA_PREVIOUS == event.getKeyCode()) {
listener.previousTrackButtonPressed();
}
isAvailable = false;
mTimer.schedule(myTimer, 500);
}
}
} else if (action.equals(Intent.ACTION_HEADSET_PLUG)) {
int state = intent.getIntExtra("state", -1);
switch (state) {
case 0:
break;
case 1:
if (Settings.START_HEADSET) listener.headsetPlugged();
break;
}
}
else if (BluetoothDevice.ACTION_ACL_CONNECTED.equals(action)) {
if (Settings.START_BLUETOOTH)
new Thread(new Runnable() {
@Override
public void run() {
try {
Thread.sleep(6000);
Handler mainHandler = new Handler(context.getMainLooper());
Runnable myRunnable = new Runnable() {
@Override
public void run() {
listener.headsetPlugged();
}
};
mainHandler.post(myRunnable);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}).start();
}
else if (BluetoothDevice.ACTION_ACL_DISCONNECTED.equals(action)) {}
}
主活动
headsetFilter = new IntentFilter();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
headsetFilter.addAction(AudioManager.ACTION_HEADSET_PLUG);
}
headsetFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
headsetFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECT_REQUESTED);
headsetFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
getApplicationContext().registerReceiver(control_reciever, headsetFilter);
【问题讨论】:
标签: java android bluetooth device