MediaPlayer2: remove AudioManager private API usage
Private API AudioManager.getDevicesStatic() is being used in
MediaPlayer2 for conversion between id <=> AudioDeviceInfo.
This conversion was added to talk with internal native AudioTrack API,
but in MediaPlayer2 since we will use public java AudioTrack API,
the given AudioDeviceInfo can be directly passed to java AudioTrack
instance.
Test: CtsMediaTestCases:android.media.cts.RoutingTest
Bug: 112767549
Change-Id: I9aeae02202edb6b5f0eb72b4f4dd3c936103ced2
diff --git a/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h b/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h
index 9fca641..d13c54c 100644
--- a/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h
+++ b/media/libmediaplayer2/include/mediaplayer2/MediaPlayer2AudioOutput.h
@@ -20,12 +20,15 @@
#include <mediaplayer2/MediaPlayer2Interface.h>
#include <mediaplayer2/JAudioTrack.h>
+#include <mediaplayer2/JObjectHolder.h>
#include <vector>
#include <utility>
#include <utils/String16.h>
#include <utils/Vector.h>
+#include "jni.h"
+
namespace android {
class AudioTrack;
@@ -92,8 +95,8 @@
//return mNextOutput == NULL;
}
// AudioRouting
- virtual status_t setOutputDevice(audio_port_handle_t deviceId);
- virtual status_t getRoutedDeviceId(audio_port_handle_t* deviceId);
+ virtual status_t setPreferredDevice(jobject device);
+ virtual jobject getRoutedDevice();
virtual status_t addAudioDeviceCallback(jobject routingDelegate);
virtual status_t removeAudioDeviceCallback(jobject listener);
virtual void copyAudioDeviceCallback(std::vector<jobject>& routingDelegateTarget);
@@ -121,8 +124,7 @@
float mSendLevel;
int mAuxEffectId;
audio_output_flags_t mFlags;
- audio_port_handle_t mSelectedDeviceId;
- audio_port_handle_t mRoutedDeviceId;
+ sp<JObjectHolder> mPreferredDevice;
mutable Mutex mLock;
std::vector<std::pair<jobject, jobject>> mRoutingDelegates; // <listener, routingDelegate>