summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2012-06-18 16:14:46 -0700
committer Adam Powell <adamp@google.com> 2012-06-18 19:51:02 -0700
commitdd0a19266d5c837069da1ea188744d54c8d723a8 (patch)
treeb8e53488e619b07d43e321289d230c0a2995c88e
parenteb2c1b21c6835399fa55227e498fb2930e533439 (diff)
MediaRouter bluetooth a2dp selection
Remove bluetooth permission check from internal AudioService method setBluetoothA2dpOn Manage BT A2DP state in MediaRouter. A2DP is only enabled or disabled when either the system built-in audio route or the A2DP audio route is selected; when selecting any other route the current state is left alone. Change-Id: Ib14274e206e79bd8762edca1205ecfa87b7a94cf
-rw-r--r--media/java/android/media/AudioService.java3
-rw-r--r--media/java/android/media/MediaRouter.java22
2 files changed, 19 insertions, 6 deletions
diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java
index ddb7e6b1812d..27dc6e33d9df 100644
--- a/media/java/android/media/AudioService.java
+++ b/media/java/android/media/AudioService.java
@@ -1660,9 +1660,6 @@ public class AudioService extends IAudioService.Stub implements OnFinished {
/** @see AudioManager#setBluetoothA2dpOn() */
public void setBluetoothA2dpOn(boolean on) {
- if (!checkAudioSettingsPermission("setBluetoothA2dpOn()")) {
- return;
- }
setBluetoothA2dpOnInt(on);
}
diff --git a/media/java/android/media/MediaRouter.java b/media/java/android/media/MediaRouter.java
index 6f9cc62564cc..a9e6e3d48f82 100644
--- a/media/java/android/media/MediaRouter.java
+++ b/media/java/android/media/MediaRouter.java
@@ -81,9 +81,8 @@ public class MediaRouter {
IBinder b = ServiceManager.getService(Context.AUDIO_SERVICE);
mAudioService = IAudioService.Stub.asInterface(b);
- // XXX this doesn't deal with locale changes!
- mSystemCategory = new RouteCategory(mResources.getText(
- com.android.internal.R.string.default_audio_route_category_name),
+ mSystemCategory = new RouteCategory(
+ com.android.internal.R.string.default_audio_route_category_name,
ROUTE_TYPE_LIVE_AUDIO, false);
}
@@ -130,6 +129,13 @@ public class MediaRouter {
info.mSupportedTypes = ROUTE_TYPE_LIVE_AUDIO;
sStatic.mBluetoothA2dpRoute = info;
addRoute(sStatic.mBluetoothA2dpRoute);
+ try {
+ if (mAudioService.isBluetoothA2dpOn()) {
+ selectRouteStatic(ROUTE_TYPE_LIVE_AUDIO, mBluetoothA2dpRoute);
+ }
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error selecting Bluetooth A2DP route", e);
+ }
} else {
sStatic.mBluetoothA2dpRoute.mName = mCurRoutesInfo.mBluetoothName;
dispatchRouteChanged(sStatic.mBluetoothA2dpRoute);
@@ -279,6 +285,16 @@ public class MediaRouter {
return;
}
+ final RouteInfo btRoute = sStatic.mBluetoothA2dpRoute;
+ if (btRoute != null && (types & ROUTE_TYPE_LIVE_AUDIO) != 0 &&
+ (route == btRoute || route == sStatic.mDefaultAudio)) {
+ try {
+ sStatic.mAudioService.setBluetoothA2dpOn(route == btRoute);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Error changing Bluetooth A2DP state", e);
+ }
+ }
+
if (sStatic.mSelectedRoute != null) {
// TODO filter types properly
dispatchRouteUnselected(types & sStatic.mSelectedRoute.getSupportedTypes(),