Settings: use foreground receiver for BT connect
Background intents don't work anymore, so we need to listen for these
intents in the running app instead.
Test: pair remote, let remote sleep (~30s), use remote again
Bug: 35301292
Change-Id: I1fd5394187c7a05b58621ae111814a427ca6ba38
diff --git a/Settings/AndroidManifest.xml b/Settings/AndroidManifest.xml
index 92240e7..7aeb242 100644
--- a/Settings/AndroidManifest.xml
+++ b/Settings/AndroidManifest.xml
@@ -417,14 +417,6 @@
</intent-filter>
</activity>
- <receiver android:name=".accessories.BluetoothConnectionsManager" >
- <intent-filter>
- <action android:name="android.bluetooth.device.action.ACL_CONNECTED" />
- <action android:name="android.bluetooth.device.action.ACL_DISCONNECTED" />
- <action android:name="android.bluetooth.adapter.action.STATE_CHANGED" />
- </intent-filter>
- </receiver>
-
<receiver android:name=".accessories.BluetoothPairingRequest" >
<intent-filter>
<action android:name="android.bluetooth.device.action.PAIRING_REQUEST" />
diff --git a/Settings/src/com/android/tv/settings/MainFragment.java b/Settings/src/com/android/tv/settings/MainFragment.java
index 6798f0d..b196997 100644
--- a/Settings/src/com/android/tv/settings/MainFragment.java
+++ b/Settings/src/com/android/tv/settings/MainFragment.java
@@ -97,6 +97,8 @@
}
};
+ private final BroadcastReceiver mBtConnectionReceiver = new BluetoothConnectionsManager();
+
public static MainFragment newInstance() {
return new MainFragment();
}
@@ -159,6 +161,12 @@
final IntentFilter filter =
new IntentFilter(BluetoothConnectionsManager.ACTION_BLUETOOTH_UPDATE);
LocalBroadcastManager.getInstance(getContext()).registerReceiver(mBCMReceiver, filter);
+
+ IntentFilter btChangeFilter = new IntentFilter();
+ btChangeFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED);
+ btChangeFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED);
+ btChangeFilter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
+ LocalBroadcastManager.getInstance(getContext()).registerReceiver(mBtConnectionReceiver, btChangeFilter);
}
@Override
@@ -182,6 +190,7 @@
public void onStop() {
super.onStop();
mAuthenticatorHelper.stopListeningToAccountUpdates();
+ LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mBtConnectionReceiver);
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mBCMReceiver);
}