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
(cherry picked from commit 2dbe436a43c79f8479deb5a911b3dc1a5acfb981)
diff --git a/Settings/AndroidManifest.xml b/Settings/AndroidManifest.xml
index f739f5d..f0a882b 100644
--- a/Settings/AndroidManifest.xml
+++ b/Settings/AndroidManifest.xml
@@ -418,14 +418,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 c2ca9c5..3af07d5 100644
--- a/Settings/src/com/android/tv/settings/MainFragment.java
+++ b/Settings/src/com/android/tv/settings/MainFragment.java
@@ -98,6 +98,8 @@
}
};
+ private final BroadcastReceiver mBtConnectionReceiver = new BluetoothConnectionsManager();
+
public static MainFragment newInstance() {
return new MainFragment();
}
@@ -160,7 +162,12 @@
final IntentFilter filter =
new IntentFilter(BluetoothConnectionsManager.ACTION_BLUETOOTH_UPDATE);
LocalBroadcastManager.getInstance(getContext()).registerReceiver(mBCMReceiver, filter);
- mConnectivityListener.start();
+ 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);
+ mConnectivityListener.start();
}
@Override
@@ -184,6 +191,7 @@
public void onStop() {
super.onStop();
mAuthenticatorHelper.stopListeningToAccountUpdates();
+ LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mBtConnectionReceiver);
LocalBroadcastManager.getInstance(getContext()).unregisterReceiver(mBCMReceiver);
mConnectivityListener.stop();
}