Merge "Fix MediaPlayer construction with AUDIO_SESSION_ALLOCATE."
This commit is contained in:
committed by
Android (Google) Code Review
commit
b4c63066d6
@@ -708,12 +708,10 @@ public class MediaPlayer extends PlayerBase
|
||||
* It's easier to create it here than in C++.
|
||||
*/
|
||||
try (ScopedParcelState attributionSourceState = attributionSource.asScopedParcelState()) {
|
||||
native_setup(new WeakReference<MediaPlayer>(this), attributionSourceState.getParcel());
|
||||
native_setup(new WeakReference<>(this), attributionSourceState.getParcel(),
|
||||
resolvePlaybackSessionId(context, sessionId));
|
||||
}
|
||||
|
||||
int effectiveSessionId = resolvePlaybackSessionId(context, sessionId);
|
||||
baseRegisterPlayer(effectiveSessionId);
|
||||
native_setAudioSessionId(effectiveSessionId);
|
||||
baseRegisterPlayer(getAudioSessionId());
|
||||
}
|
||||
|
||||
private Parcel createPlayerIIdParcel() {
|
||||
@@ -1022,8 +1020,6 @@ public class MediaPlayer extends PlayerBase
|
||||
final AudioAttributes aa = audioAttributes != null ? audioAttributes :
|
||||
new AudioAttributes.Builder().build();
|
||||
mp.setAudioAttributes(aa);
|
||||
mp.native_setAudioSessionId(audioSessionId);
|
||||
|
||||
mp.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
|
||||
afd.close();
|
||||
mp.prepare();
|
||||
@@ -2521,7 +2517,7 @@ public class MediaPlayer extends PlayerBase
|
||||
|
||||
private static native final void native_init();
|
||||
private native void native_setup(Object mediaplayerThis,
|
||||
@NonNull Parcel attributionSource);
|
||||
@NonNull Parcel attributionSource, int audioSessionId);
|
||||
private native final void native_finalize();
|
||||
|
||||
/**
|
||||
|
||||
@@ -956,14 +956,16 @@ android_media_MediaPlayer_native_init(JNIEnv *env)
|
||||
|
||||
static void
|
||||
android_media_MediaPlayer_native_setup(JNIEnv *env, jobject thiz, jobject weak_this,
|
||||
jobject jAttributionSource)
|
||||
jobject jAttributionSource,
|
||||
jint jAudioSessionId)
|
||||
{
|
||||
ALOGV("native_setup");
|
||||
|
||||
Parcel* parcel = parcelForJavaObject(env, jAttributionSource);
|
||||
android::content::AttributionSourceState attributionSource;
|
||||
attributionSource.readFromParcel(parcel);
|
||||
sp<MediaPlayer> mp = sp<MediaPlayer>::make(attributionSource);
|
||||
sp<MediaPlayer> mp = sp<MediaPlayer>::make(
|
||||
attributionSource, static_cast<audio_session_t>(jAudioSessionId));
|
||||
if (mp == NULL) {
|
||||
jniThrowException(env, "java/lang/RuntimeException", "Out of memory");
|
||||
return;
|
||||
@@ -1419,7 +1421,9 @@ static const JNINativeMethod gMethods[] = {
|
||||
{"native_setMetadataFilter", "(Landroid/os/Parcel;)I", (void *)android_media_MediaPlayer_setMetadataFilter},
|
||||
{"native_getMetadata", "(ZZLandroid/os/Parcel;)Z", (void *)android_media_MediaPlayer_getMetadata},
|
||||
{"native_init", "()V", (void *)android_media_MediaPlayer_native_init},
|
||||
{"native_setup", "(Ljava/lang/Object;Landroid/os/Parcel;)V",(void *)android_media_MediaPlayer_native_setup},
|
||||
{"native_setup",
|
||||
"(Ljava/lang/Object;Landroid/os/Parcel;I)V",
|
||||
(void *)android_media_MediaPlayer_native_setup},
|
||||
{"native_finalize", "()V", (void *)android_media_MediaPlayer_native_finalize},
|
||||
{"getAudioSessionId", "()I", (void *)android_media_MediaPlayer_get_audio_session_id},
|
||||
{"native_setAudioSessionId", "(I)V", (void *)android_media_MediaPlayer_set_audio_session_id},
|
||||
|
||||
@@ -23,6 +23,7 @@ import static android.media.AudioManager.AUDIO_SESSION_ID_GENERATE;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
import static org.junit.Assert.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.anyInt;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
@@ -56,6 +57,7 @@ public class MediaPlayerUnitTest {
|
||||
MediaPlayer mediaPlayer = new MediaPlayer(virtualDeviceContext);
|
||||
|
||||
assertNotEquals(vdmPlaybackSessionId, mediaPlayer.getAudioSessionId());
|
||||
assertTrue(mediaPlayer.getAudioSessionId() > 0);
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
Reference in New Issue
Block a user