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/MediaPlayer2AudioOutput.cpp b/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
index 9218fce..149f243 100644
--- a/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
+++ b/media/libmediaplayer2/MediaPlayer2AudioOutput.cpp
@@ -74,9 +74,7 @@
mPid(pid),
mSendLevel(0.0),
mAuxEffectId(0),
- mFlags(AUDIO_OUTPUT_FLAG_NONE),
- mSelectedDeviceId(AUDIO_PORT_HANDLE_NONE),
- mRoutedDeviceId(AUDIO_PORT_HANDLE_NONE) {
+ mFlags(AUDIO_OUTPUT_FLAG_NONE) {
ALOGV("MediaPlayer2AudioOutput(%d)", sessionId);
if (attr != nullptr) {
mAttributes = (audio_attributes_t *) calloc(1, sizeof(audio_attributes_t));
@@ -388,7 +386,9 @@
res = mJAudioTrack->attachAuxEffect(mAuxEffectId);
}
}
- mJAudioTrack->setOutputDevice(mSelectedDeviceId);
+ if (mPreferredDevice != nullptr) {
+ mJAudioTrack->setPreferredDevice(mPreferredDevice->getJObject());
+ }
mJAudioTrack->registerRoutingDelegates(mRoutingDelegates);
@@ -518,24 +518,26 @@
return NO_ERROR;
}
-status_t MediaPlayer2AudioOutput::setOutputDevice(audio_port_handle_t deviceId) {
- ALOGV("setOutputDevice(%d)", deviceId);
+status_t MediaPlayer2AudioOutput::setPreferredDevice(jobject device) {
+ ALOGV("setPreferredDevice");
Mutex::Autolock lock(mLock);
- mSelectedDeviceId = deviceId;
+ status_t ret = NO_ERROR;
if (mJAudioTrack != nullptr) {
- return mJAudioTrack->setOutputDevice(deviceId);
+ ret = mJAudioTrack->setPreferredDevice(device);
}
- return NO_ERROR;
+ if (ret == NO_ERROR) {
+ mPreferredDevice = new JObjectHolder(device);
+ }
+ return ret;
}
-status_t MediaPlayer2AudioOutput::getRoutedDeviceId(audio_port_handle_t* deviceId) {
- ALOGV("getRoutedDeviceId");
+jobject MediaPlayer2AudioOutput::getRoutedDevice() {
+ ALOGV("getRoutedDevice");
Mutex::Autolock lock(mLock);
if (mJAudioTrack != nullptr) {
- mRoutedDeviceId = mJAudioTrack->getRoutedDeviceId();
+ return mJAudioTrack->getRoutedDevice();
}
- *deviceId = mRoutedDeviceId;
- return NO_ERROR;
+ return nullptr;
}
status_t MediaPlayer2AudioOutput::addAudioDeviceCallback(jobject jRoutingDelegate) {