Merge "SysUI: Move BT receivers to bg" into mnc-dev
This commit is contained in:
@@ -51,11 +51,13 @@ public final class BluetoothEventManager {
|
|||||||
private final Collection<BluetoothCallback> mCallbacks =
|
private final Collection<BluetoothCallback> mCallbacks =
|
||||||
new ArrayList<BluetoothCallback>();
|
new ArrayList<BluetoothCallback>();
|
||||||
|
|
||||||
|
private android.os.Handler mReceiverHandler;
|
||||||
|
|
||||||
interface Handler {
|
interface Handler {
|
||||||
void onReceive(Context context, Intent intent, BluetoothDevice device);
|
void onReceive(Context context, Intent intent, BluetoothDevice device);
|
||||||
}
|
}
|
||||||
|
|
||||||
void addHandler(String action, Handler handler) {
|
private void addHandler(String action, Handler handler) {
|
||||||
mHandlerMap.put(action, handler);
|
mHandlerMap.put(action, handler);
|
||||||
mAdapterIntentFilter.addAction(action);
|
mAdapterIntentFilter.addAction(action);
|
||||||
}
|
}
|
||||||
@@ -103,11 +105,18 @@ public final class BluetoothEventManager {
|
|||||||
// Dock event broadcasts
|
// Dock event broadcasts
|
||||||
addHandler(Intent.ACTION_DOCK_EVENT, new DockEventHandler());
|
addHandler(Intent.ACTION_DOCK_EVENT, new DockEventHandler());
|
||||||
|
|
||||||
mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter);
|
mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter, null, mReceiverHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerProfileIntentReceiver() {
|
void registerProfileIntentReceiver() {
|
||||||
mContext.registerReceiver(mBroadcastReceiver, mProfileIntentFilter);
|
mContext.registerReceiver(mBroadcastReceiver, mProfileIntentFilter, null, mReceiverHandler);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setReceiverHandler(android.os.Handler handler) {
|
||||||
|
mContext.unregisterReceiver(mBroadcastReceiver);
|
||||||
|
mReceiverHandler = handler;
|
||||||
|
mContext.registerReceiver(mBroadcastReceiver, mAdapterIntentFilter, null, mReceiverHandler);
|
||||||
|
registerProfileIntentReceiver();
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Register to start receiving callbacks for Bluetooth events. */
|
/** Register to start receiving callbacks for Bluetooth events. */
|
||||||
|
|||||||
@@ -18,7 +18,9 @@ package com.android.systemui.statusbar.policy;
|
|||||||
|
|
||||||
import android.bluetooth.BluetoothAdapter;
|
import android.bluetooth.BluetoothAdapter;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.os.Handler;
|
||||||
import android.os.Looper;
|
import android.os.Looper;
|
||||||
|
import android.os.Message;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settingslib.bluetooth.BluetoothCallback;
|
import com.android.settingslib.bluetooth.BluetoothCallback;
|
||||||
@@ -42,9 +44,12 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
|
|||||||
private boolean mConnecting;
|
private boolean mConnecting;
|
||||||
private CachedBluetoothDevice mLastDevice;
|
private CachedBluetoothDevice mLastDevice;
|
||||||
|
|
||||||
|
private final H mHandler = new H();
|
||||||
|
|
||||||
public BluetoothControllerImpl(Context context, Looper bgLooper) {
|
public BluetoothControllerImpl(Context context, Looper bgLooper) {
|
||||||
mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, null);
|
mLocalBluetoothManager = LocalBluetoothManager.getInstance(context, null);
|
||||||
if (mLocalBluetoothManager != null) {
|
if (mLocalBluetoothManager != null) {
|
||||||
|
mLocalBluetoothManager.getEventManager().setReceiverHandler(new Handler(bgLooper));
|
||||||
mLocalBluetoothManager.getEventManager().registerCallback(this);
|
mLocalBluetoothManager.getEventManager().registerCallback(this);
|
||||||
onBluetoothStateChanged(
|
onBluetoothStateChanged(
|
||||||
mLocalBluetoothManager.getBluetoothAdapter().getBluetoothState());
|
mLocalBluetoothManager.getBluetoothAdapter().getBluetoothState());
|
||||||
@@ -71,7 +76,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
|
|||||||
|
|
||||||
public void addStateChangedCallback(Callback cb) {
|
public void addStateChangedCallback(Callback cb) {
|
||||||
mCallbacks.add(cb);
|
mCallbacks.add(cb);
|
||||||
fireStateChange(cb);
|
mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -132,22 +137,6 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
|
|||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void firePairedDevicesChanged() {
|
|
||||||
for (Callback cb : mCallbacks) {
|
|
||||||
cb.onBluetoothDevicesChanged();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fireStateChange() {
|
|
||||||
for (Callback cb : mCallbacks) {
|
|
||||||
fireStateChange(cb);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private void fireStateChange(Callback cb) {
|
|
||||||
cb.onBluetoothStateChange(mEnabled, mConnecting);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void updateConnected() {
|
private void updateConnected() {
|
||||||
if (mLastDevice != null && mLastDevice.isConnected()) {
|
if (mLastDevice != null && mLastDevice.isConnected()) {
|
||||||
// Our current device is still valid.
|
// Our current device is still valid.
|
||||||
@@ -163,7 +152,7 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
|
|||||||
@Override
|
@Override
|
||||||
public void onBluetoothStateChanged(int bluetoothState) {
|
public void onBluetoothStateChanged(int bluetoothState) {
|
||||||
mEnabled = bluetoothState == BluetoothAdapter.STATE_ON;
|
mEnabled = bluetoothState == BluetoothAdapter.STATE_ON;
|
||||||
fireStateChange();
|
mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -175,25 +164,25 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
|
|||||||
public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
|
public void onDeviceAdded(CachedBluetoothDevice cachedDevice) {
|
||||||
cachedDevice.registerCallback(this);
|
cachedDevice.registerCallback(this);
|
||||||
updateConnected();
|
updateConnected();
|
||||||
firePairedDevicesChanged();
|
mHandler.sendEmptyMessage(H.MSG_PAIRED_DEVICES_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
|
public void onDeviceDeleted(CachedBluetoothDevice cachedDevice) {
|
||||||
updateConnected();
|
updateConnected();
|
||||||
firePairedDevicesChanged();
|
mHandler.sendEmptyMessage(H.MSG_PAIRED_DEVICES_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
|
public void onDeviceBondStateChanged(CachedBluetoothDevice cachedDevice, int bondState) {
|
||||||
updateConnected();
|
updateConnected();
|
||||||
firePairedDevicesChanged();
|
mHandler.sendEmptyMessage(H.MSG_PAIRED_DEVICES_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDeviceAttributesChanged() {
|
public void onDeviceAttributesChanged() {
|
||||||
updateConnected();
|
updateConnected();
|
||||||
firePairedDevicesChanged();
|
mHandler.sendEmptyMessage(H.MSG_PAIRED_DEVICES_CHANGED);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -201,6 +190,39 @@ public class BluetoothControllerImpl implements BluetoothController, BluetoothCa
|
|||||||
mConnecting = state == BluetoothAdapter.STATE_CONNECTING;
|
mConnecting = state == BluetoothAdapter.STATE_CONNECTING;
|
||||||
mLastDevice = cachedDevice;
|
mLastDevice = cachedDevice;
|
||||||
updateConnected();
|
updateConnected();
|
||||||
fireStateChange();
|
mHandler.sendEmptyMessage(H.MSG_STATE_CHANGED);
|
||||||
|
}
|
||||||
|
|
||||||
|
private final class H extends Handler {
|
||||||
|
private static final int MSG_PAIRED_DEVICES_CHANGED = 1;
|
||||||
|
private static final int MSG_STATE_CHANGED = 2;
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handleMessage(Message msg) {
|
||||||
|
switch (msg.what) {
|
||||||
|
case MSG_PAIRED_DEVICES_CHANGED:
|
||||||
|
firePairedDevicesChanged();
|
||||||
|
break;
|
||||||
|
case MSG_STATE_CHANGED:
|
||||||
|
fireStateChange();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void firePairedDevicesChanged() {
|
||||||
|
for (BluetoothController.Callback cb : mCallbacks) {
|
||||||
|
cb.onBluetoothDevicesChanged();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fireStateChange() {
|
||||||
|
for (BluetoothController.Callback cb : mCallbacks) {
|
||||||
|
fireStateChange(cb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fireStateChange(BluetoothController.Callback cb) {
|
||||||
|
cb.onBluetoothStateChange(mEnabled, mConnecting);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user