diff --git a/media/java/android/media/MediaPlayer2Impl.java b/media/java/android/media/MediaPlayer2Impl.java index 47ab7facbd821..8f475a1ab7234 100644 --- a/media/java/android/media/MediaPlayer2Impl.java +++ b/media/java/android/media/MediaPlayer2Impl.java @@ -798,11 +798,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { @Override public boolean setPreferredDevice(AudioDeviceInfo deviceInfo) { - if (deviceInfo != null && !deviceInfo.isSink()) { - return false; - } - int preferredDeviceId = deviceInfo != null ? deviceInfo.getId() : 0; - boolean status = native_setOutputDevice(preferredDeviceId); + boolean status = native_setPreferredDevice(deviceInfo); if (status == true) { synchronized (this) { mPreferredDevice = deviceInfo; @@ -819,20 +815,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { } @Override - public AudioDeviceInfo getRoutedDevice() { - int deviceId = native_getRoutedDeviceId(); - if (deviceId == 0) { - return null; - } - AudioDeviceInfo[] devices = - AudioManager.getDevicesStatic(AudioManager.GET_DEVICES_OUTPUTS); - for (int i = 0; i < devices.length; i++) { - if (devices[i].getId() == deviceId) { - return devices[i]; - } - } - return null; - } + public native AudioDeviceInfo getRoutedDevice(); @Override public void addOnRoutingChangedListener(AudioRouting.OnRoutingChangedListener listener, @@ -852,8 +835,7 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { native_removeDeviceCallback(listener); } - private native final boolean native_setOutputDevice(int deviceId); - private native final int native_getRoutedDeviceId(); + private native boolean native_setPreferredDevice(AudioDeviceInfo device); private native void native_addDeviceCallback(RoutingDelegate rd); private native void native_removeDeviceCallback( AudioRouting.OnRoutingChangedListener listener); @@ -2773,34 +2755,6 @@ public final class MediaPlayer2Impl extends MediaPlayer2 { } - // Called from the native side - @SuppressWarnings("unused") - private static boolean setAudioOutputDeviceById(AudioTrack track, int deviceId) { - if (track == null) { - return false; - } - - if (deviceId == 0) { - // Use default routing. - track.setPreferredDevice(null); - return true; - } - - // TODO: Unhide AudioManager.getDevicesStatic. - AudioDeviceInfo[] outputDevices = - AudioManager.getDevicesStatic(AudioManager.GET_DEVICES_OUTPUTS); - - boolean success = false; - for (AudioDeviceInfo device : outputDevices) { - if (device.getId() == deviceId) { - track.setPreferredDevice(device); - success = true; - break; - } - } - return success; - } - // Instantiated from the native side @SuppressWarnings("unused") private static class StreamEventCallback extends AudioTrack.StreamEventCallback { diff --git a/media/jni/android_media_MediaPlayer2.cpp b/media/jni/android_media_MediaPlayer2.cpp index 67005be24b823..520077fef9b08 100644 --- a/media/jni/android_media_MediaPlayer2.cpp +++ b/media/jni/android_media_MediaPlayer2.cpp @@ -1306,22 +1306,22 @@ static void android_media_MediaPlayer2_releaseDrm(JNIEnv *env, jobject thiz) ///////////////////////////////////////////////////////////////////////////////////// // AudioRouting begin -static jboolean android_media_MediaPlayer2_setOutputDevice(JNIEnv *env, jobject thiz, jint device_id) +static jboolean android_media_MediaPlayer2_setPreferredDevice(JNIEnv *env, jobject thiz, jobject device) { sp mp = getMediaPlayer(env, thiz); if (mp == NULL) { return false; } - return mp->setOutputDevice(device_id) == NO_ERROR; + return mp->setPreferredDevice(device) == NO_ERROR; } -static jint android_media_MediaPlayer2_getRoutedDeviceId(JNIEnv *env, jobject thiz) +static jobject android_media_MediaPlayer2_getRoutedDevice(JNIEnv *env, jobject thiz) { sp mp = getMediaPlayer(env, thiz); if (mp == NULL) { - return AUDIO_PORT_HANDLE_NONE; + return nullptr; } - return mp->getRoutedDeviceId(); + return mp->getRoutedDevice(); } static void android_media_MediaPlayer2_addDeviceCallback( @@ -1470,8 +1470,8 @@ static const JNINativeMethod gMethods[] = { { "_releaseDrm", "()V", (void *)android_media_MediaPlayer2_releaseDrm }, // AudioRouting - {"native_setOutputDevice", "(I)Z", (void *)android_media_MediaPlayer2_setOutputDevice}, - {"native_getRoutedDeviceId", "()I", (void *)android_media_MediaPlayer2_getRoutedDeviceId}, + {"native_setPreferredDevice", "(Landroid/media/AudioDeviceInfo;)Z", (void *)android_media_MediaPlayer2_setPreferredDevice}, + {"getRoutedDevice", "()Landroid/media/AudioDeviceInfo;", (void *)android_media_MediaPlayer2_getRoutedDevice}, {"native_addDeviceCallback", "(Landroid/media/RoutingDelegate;)V", (void *)android_media_MediaPlayer2_addDeviceCallback}, {"native_removeDeviceCallback", "(Landroid/media/AudioRouting$OnRoutingChangedListener;)V", (void *)android_media_MediaPlayer2_removeDeviceCallback},