Merge 2fa2013f4d1b43c56ea0bcc59814173331c10f42 on remote branch
Change-Id: Ic457fc8536fedf6a6685d0f4de0aca58500cabd0
diff --git a/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java b/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
index df0efe6..7c556bb 100644
--- a/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
+++ b/packages_apps_bluetooth_ext/src/avrcp/Avrcp_ext.java
@@ -199,7 +199,9 @@
private static final ArrayList<String> playerBrowseWhiteListDB =
new ArrayList<String>(Arrays.asList(
- "com.google.android.music"
+ "com.google.android.music",
+ "com.nhn.android.music",
+ "com.gaana"
));
private static final String nonMediaAppsBlacklistedNames[] = {
@@ -1443,18 +1445,6 @@
mA2dpState = msg.arg1;
BluetoothDevice playStateChangeDevice = (BluetoothDevice)msg.obj;
Log.v(TAG, "event for device address " + playStateChangeDevice.getAddress());
- deviceIndex = getIndexForDevice(playStateChangeDevice);
- if (deviceIndex == INVALID_DEVICE_INDEX) {
- Log.e(TAG,"Set A2DP state: invalid index for device");
- break;
- }
- // if BA streaming is ongoing, don't update AVRCP state based on A2DP State.
- // This is for some remote devices, which send PLAY/PAUSE based on AVRCP State.
- BATService mBatService = BATService.getBATService();
- if ((mBatService == null) || !mBatService.isA2dpSuspendFromBA()) {
- // if this suspend was triggered by BA, then don't update AVRCP states
- updateCurrentMediaState((BluetoothDevice)msg.obj);
- }
if (mA2dpState == BluetoothA2dp.STATE_PLAYING) {
boolean shoComplete = false;
@@ -1474,6 +1464,20 @@
CompleteSHO();
}
}
+
+ deviceIndex = getIndexForDevice(playStateChangeDevice);
+ if (deviceIndex == INVALID_DEVICE_INDEX) {
+ Log.e(TAG,"Set A2DP state: invalid index for device");
+ break;
+ }
+ // if BA streaming is ongoing, don't update AVRCP state based on A2DP State.
+ // This is for some remote devices, which send PLAY/PAUSE based on AVRCP State.
+ BATService mBatService = BATService.getBATService();
+ if ((mBatService == null) || !mBatService.isA2dpSuspendFromBA()) {
+ // if this suspend was triggered by BA, then don't update AVRCP states
+ updateCurrentMediaState((BluetoothDevice)msg.obj);
+ }
+
}
break;
@@ -1709,8 +1713,10 @@
if (mFastforward) mFastforward = false;
if (mRewind) mRewind = false;
- Log.w(TAG, "Active device Calling SetBrowsePackage for " + mCachedBrowsePlayer);
- if (mCachedBrowsePlayer != null && is_player_updated_for_browse == false) {
+ if (mCurrentBrowsingDevice == null && mCachedBrowsePlayer != null &&
+ is_player_updated_for_browse == false) {
+ Log.w(TAG, "Calling SetBrowsePackage as part of device switch for "
+ + mCachedBrowsePlayer);
SetBrowsePackage(mCachedBrowsePlayer);
}
@@ -2337,6 +2343,7 @@
playerBrowseWhiteListDB.contains(currPkg))
|| (prevPkg != null && !prevPkg.isEmpty() &&
playerBrowseWhiteListDB.contains(prevPkg))) {
+ Log.w(TAG, "Send change response as part of player switch");
if (deviceFeatures[index].mAvailablePlayersChangedNT ==
AvrcpConstants_ext.NOTIFICATION_TYPE_INTERIM) {
registerNotificationRspAvalPlayerChangedNative(
@@ -2798,23 +2805,6 @@
return playStatus;
}
- private boolean isPlayerInBrowseList() {
- MediaPlayerInfo_ext info = getAddressedPlayerInfo();
- String pkgName = (info != null) ? info.getPackageName():"";
- if (pkgName == null || pkgName.isEmpty())
- return false;
-
- BrowsedMediaPlayer_ext player =
- mAvrcpBrowseManager.getBrowsedMediaPlayer(dummyaddr);
- String browseService = (pkgName != null)?getBrowseServiceName(pkgName):null;
- if (player == null || browseService == null || browseService.isEmpty())
- return false;
-
- boolean isBrowseSupported = player.isPackageInMBSList(pkgName);
- Log.d(TAG, "Browse supported for pkg " + pkgName + " is " + isBrowseSupported);
- return isBrowseSupported;
- }
-
private boolean isPlayingState(@Nullable PlaybackState state) {
if (state == null) return false;
return (state != null) && (state.getState() == PlaybackState.STATE_PLAYING);
@@ -3293,7 +3283,6 @@
private void SetBrowsePackage(String PackageName) {
String browseService = (PackageName != null)?getBrowseServiceName(PackageName):null;
- BrowsedMediaPlayer_ext player = mAvrcpBrowseManager.getBrowsedMediaPlayer(dummyaddr);
Log.w(TAG, "SetBrowsePackage for pkg " + PackageName + "svc" + browseService);
if (browseService != null && !browseService.isEmpty()) {
BluetoothDevice browse_active_device = mBrowsingActiveDevice;
@@ -3301,17 +3290,9 @@
is_player_updated_for_browse = true;
byte[] addr = getByteAddress(browse_active_device);
if (mAvrcpBrowseManager.getBrowsedMediaPlayer(addr) != null) {
- Log.w(TAG, "Addr Player update to Browse " + PackageName +
- " already req MBS list " + mPkgRequestedMBSConnect);
- mCurrentBrowsingDevice = browse_active_device;
Log.w(TAG, "Addr Player update to Browse " + PackageName);
mAvrcpBrowseManager.getBrowsedMediaPlayer(addr).
setCurrentPackage(PackageName, browseService);
- if (player != null && !mPkgRequestedMBSConnect.contains(PackageName)) {
- Log.w(TAG,"checkMBSConnection try connect");
- player.CheckMBSConnection(PackageName, browseService);
- mPkgRequestedMBSConnect.add(PackageName);
- }
}
} else {
Log.w(TAG, "SetBrowsePackage Active device not set yet cache " + PackageName +
@@ -3789,10 +3770,12 @@
Log.d(TAG, "Enter setBrowsedPlayer");
String address = Utils.getAddressStringFromByte(bdaddr);
+ BluetoothDevice prevBrowseDevice = mCurrentBrowsingDevice;
mCurrentBrowsingDevice = mAdapter.getRemoteDevice(address);
// checking for error cases
BluetoothDevice device = BluetoothAdapter.getDefaultAdapter().getRemoteDevice(bdaddr);
if (mBrowsingActiveDevice != null && !Objects.equals(mBrowsingActiveDevice, device)) {
+ mCurrentBrowsingDevice = prevBrowseDevice;
status = AvrcpConstants_ext.RSP_INTERNAL_ERR;
Log.w(TAG, "setBrowsedPlayer: Cmd from browse inactive device reject it");
} else if (mMediaPlayerInfoList.isEmpty()) {
@@ -3887,8 +3870,10 @@
updateCurrentMediaState(null);
}
- Log.w(TAG, "Calling SetBrowsePackage for " + packageName);
- SetBrowsePackage(packageName);
+ if (mCurrentBrowsingDevice == null) {
+ Log.w(TAG, "Calling SetBrowsePackage as part of player switch for " + packageName);
+ SetBrowsePackage(packageName);
+ }
synchronized (this) {
synchronized (mMediaPlayerInfoList) {
@@ -3991,9 +3976,7 @@
synchronized (this) {
synchronized (mBrowsePlayerInfoList) {
mBrowsePlayerInfoList.clear();
- BrowsedMediaPlayer_ext player =
- mAvrcpBrowseManager.getBrowsedMediaPlayer(dummyaddr);
- Log.d(TAG, "buildBrowsablePlayerList " + player);
+ Log.d(TAG, "buildBrowsablePlayerList ");
Intent intent = new Intent(android.service.media.MediaBrowserService.SERVICE_INTERFACE);
List<ResolveInfo> playerList =
mPackageManager.queryIntentServices(intent, PackageManager.MATCH_ALL);
@@ -4007,9 +3990,6 @@
String serviceName = info.serviceInfo.name;
String packageName = info.serviceInfo.packageName;
Log.d(TAG, "svc " + serviceName + " and pkg = " + packageName);
- if ((player != null) && (serviceName != null)) {
- player.CheckMBSConnection(packageName, serviceName);
- }
BrowsePlayerInfo_ext currentPlayer =
new BrowsePlayerInfo_ext(packageName, displayableName, serviceName);
mBrowsePlayerInfoList.add(currentPlayer);
@@ -4741,6 +4721,11 @@
if (br_connected == true) {
mBrowsingActiveDevice = device;
Log.w(TAG, "onConnectionStateChanged Set Active browse device" + mBrowsingActiveDevice);
+ if (mCurrentBrowsingDevice == null && mCachedBrowsePlayer != null &&
+ is_player_updated_for_browse == false) {
+ Log.w(TAG, "Calling SetBrowsePackage as part of connect for "+ mCachedBrowsePlayer);
+ SetBrowsePackage(mCachedBrowsePlayer);
+ }
return;
}
int newState = (rc_connected ? BluetoothProfile.STATE_CONNECTED :
diff --git a/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java b/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java
index d0827bb..6974369 100644
--- a/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java
+++ b/packages_apps_bluetooth_ext/src/avrcp/BrowsedMediaPlayer_ext.java
@@ -462,6 +462,8 @@
mPackageName = packageName;
mClassName = cls;
+ mCurrentBrowsePackage = packageName;
+ mCurrentBrowseClass = cls;
/* cleanup variables from previous browsed calls */
mFolderItems = null;
mMediaId = null;
diff --git a/system_bt_ext/conf/interop_database.conf b/system_bt_ext/conf/interop_database.conf
index 057a547..9a0e3b1 100644
--- a/system_bt_ext/conf/interop_database.conf
+++ b/system_bt_ext/conf/interop_database.conf
@@ -518,3 +518,6 @@
#Requires custom HID report command to change mode.
[INTEROP_HID_HOST_LIMIT_SNIFF_INTERVAL]
98:B6:E9 = Address_Based
+
+#Disable LPA enhanced power control feature
+[INTEROP_DISABLE_LPA_ENHANCED_POWER_CONTROL]
diff --git a/system_bt_ext/device/src/interop.cc b/system_bt_ext/device/src/interop.cc
index 22cdab3..76dd441 100644
--- a/system_bt_ext/device/src/interop.cc
+++ b/system_bt_ext/device/src/interop.cc
@@ -251,11 +251,12 @@
CASE_RETURN_STR(INTEROP_DISABLE_CONNECTION_AFTER_COLLISION)
CASE_RETURN_STR(INTEROP_AVRCP_BROWSE_OPEN_CHANNEL_COLLISION)
CASE_RETURN_STR(INTEROP_ENABLE_PL10_ADAPTIVE_CONTROL)
- CASE_RETURN_STR(END_OF_INTEROP_LIST)
CASE_RETURN_STR(INTEROP_ADV_PBAP_VER_1_2)
CASE_RETURN_STR(INTEROP_DISABLE_SNIFF_LINK_DURING_SCO)
CASE_RETURN_STR(INTEROP_DISABLE_SNIFF_DURING_CALL)
CASE_RETURN_STR(INTEROP_HID_HOST_LIMIT_SNIFF_INTERVAL)
+ CASE_RETURN_STR(INTEROP_DISABLE_LPA_ENHANCED_POWER_CONTROL)
+ CASE_RETURN_STR(END_OF_INTEROP_LIST)
}
return "UNKNOWN";
}