Merge "fix indentation for coding rule"
diff --git a/media/libmediaplayer2/JAudioTrack.cpp b/media/libmediaplayer2/JAudioTrack.cpp
index 3d6879e..7c2191b 100644
--- a/media/libmediaplayer2/JAudioTrack.cpp
+++ b/media/libmediaplayer2/JAudioTrack.cpp
@@ -34,7 +34,7 @@
callback_t cbf, // Offload
void* user, // Offload
size_t frameCount, // bufferSizeInBytes
- int32_t sessionId, // AudioTrack
+ int32_t sessionId, // AudioTrack
const jobject attributes, // AudioAttributes
float maxRequiredSpeed) { // bufferSizeInBytes
@@ -65,18 +65,20 @@
jmethodID jBuilderCtor = env->GetMethodID(jBuilderCls, "<init>", "()V");
jobject jBuilderObj = env->NewObject(jBuilderCls, jBuilderCtor);
- if (attributes != NULL) {
- mAudioAttributesObj = new JObjectHolder(attributes);
- } else {
- mAudioAttributesObj = new JObjectHolder(
- JAudioAttributes::createAudioAttributesObj(env, NULL));
+ {
+ sp<JObjectHolder> audioAttributesObj;
+ if (attributes != NULL) {
+ audioAttributesObj = new JObjectHolder(attributes);
+ } else {
+ audioAttributesObj = new JObjectHolder(
+ JAudioAttributes::createAudioAttributesObj(env, NULL));
+ }
+ jmethodID jSetAudioAttributes = env->GetMethodID(jBuilderCls, "setAudioAttributes",
+ "(Landroid/media/AudioAttributes;)Landroid/media/AudioTrack$Builder;");
+ jBuilderObj = env->CallObjectMethod(jBuilderObj,
+ jSetAudioAttributes, audioAttributesObj->getJObject());
}
- jmethodID jSetAudioAttributes = env->GetMethodID(jBuilderCls, "setAudioAttributes",
- "(Landroid/media/AudioAttributes;)Landroid/media/AudioTrack$Builder;");
- jBuilderObj = env->CallObjectMethod(jBuilderObj,
- jSetAudioAttributes, mAudioAttributesObj->getJObject());
-
jmethodID jSetAudioFormat = env->GetMethodID(jBuilderCls, "setAudioFormat",
"(Landroid/media/AudioFormat;)Landroid/media/AudioTrack$Builder;");
jBuilderObj = env->CallObjectMethod(jBuilderObj, jSetAudioFormat,
@@ -513,15 +515,14 @@
}
audio_stream_type_t JAudioTrack::getAudioStreamType() {
- if (mAudioAttributesObj == NULL) {
- return AUDIO_STREAM_DEFAULT;
- }
JNIEnv *env = JavaVMHelper::getJNIEnv();
+ jmethodID jGetAudioAttributes = env->GetMethodID(mAudioTrackCls, "getAudioAttributes",
+ "()Landroid/media/AudioAttributes;");
+ jobject jAudioAttributes = env->CallObjectMethod(mAudioTrackObj, jGetAudioAttributes);
jclass jAudioAttributesCls = env->FindClass("android/media/AudioAttributes");
jmethodID jGetVolumeControlStream = env->GetMethodID(jAudioAttributesCls,
"getVolumeControlStream", "()I");
- int javaAudioStreamType = env->CallIntMethod(
- mAudioAttributesObj->getJObject(), jGetVolumeControlStream);
+ int javaAudioStreamType = env->CallIntMethod(jAudioAttributes, jGetVolumeControlStream);
return (audio_stream_type_t)javaAudioStreamType;
}
@@ -755,7 +756,7 @@
jobject JAudioTrack::createStreamEventCallback(callback_t cbf, void* user) {
JNIEnv *env = JavaVMHelper::getJNIEnv();
- jclass jCallbackCls = env->FindClass("android/media/MediaPlayer2Impl$StreamEventCallback");
+ jclass jCallbackCls = env->FindClass("android/media/MediaPlayer2$StreamEventCallback");
jmethodID jCallbackCtor = env->GetMethodID(jCallbackCls, "<init>", "(JJJ)V");
jobject jCallbackObj = env->NewObject(jCallbackCls, jCallbackCtor, this, cbf, user);
return jCallbackObj;
diff --git a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
index 8ea70ef..87dc889 100644
--- a/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
+++ b/media/libmediaplayer2/include/mediaplayer2/JAudioTrack.h
@@ -446,7 +446,6 @@
jclass mAudioTrackCls;
jobject mAudioTrackObj;
- sp<JObjectHolder> mAudioAttributesObj;
/* Creates a Java VolumeShaper.Configuration object from VolumeShaper::Configuration */
jobject createVolumeShaperConfigurationObj(
diff --git a/packages/MediaComponents/apex/java/android/media/MediaUtils.java b/packages/MediaComponents/apex/java/android/media/MediaUtils.java
new file mode 100644
index 0000000..0f0cb00
--- /dev/null
+++ b/packages/MediaComponents/apex/java/android/media/MediaUtils.java
@@ -0,0 +1,34 @@
+package android.media;
+
+import android.view.KeyEvent;
+
+/**
+ * @hide
+ */
+public class MediaUtils {
+
+ /**
+ * Adjusting the volume due to a hardware key press.
+ * (Copied version of hidden AudioManager.FLAG_FROM_KEY)
+ */
+ public static final int AUDIO_MANAGER_FLAG_FROM_KEY = 1 << 12;
+
+ // Keep sync with KeyEvent#isMediaKey().
+ public static boolean isMediaKey(int keyCode) {
+ switch (keyCode) {
+ case KeyEvent.KEYCODE_MEDIA_PLAY:
+ case KeyEvent.KEYCODE_MEDIA_PAUSE:
+ case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE:
+ case KeyEvent.KEYCODE_MUTE:
+ case KeyEvent.KEYCODE_HEADSETHOOK:
+ case KeyEvent.KEYCODE_MEDIA_STOP:
+ case KeyEvent.KEYCODE_MEDIA_NEXT:
+ case KeyEvent.KEYCODE_MEDIA_PREVIOUS:
+ case KeyEvent.KEYCODE_MEDIA_REWIND:
+ case KeyEvent.KEYCODE_MEDIA_RECORD:
+ case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
+ return true;
+ }
+ return false;
+ }
+}
diff --git a/packages/MediaComponents/apex/java/android/media/session/MediaController.java b/packages/MediaComponents/apex/java/android/media/session/MediaController.java
index 1f29185..fab57e3 100644
--- a/packages/MediaComponents/apex/java/android/media/session/MediaController.java
+++ b/packages/MediaComponents/apex/java/android/media/session/MediaController.java
@@ -25,6 +25,7 @@
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.MediaMetadata;
+import android.media.MediaUtils;
import android.media.Rating;
import android.media.VolumeProvider;
import android.net.Uri;
@@ -149,12 +150,9 @@
if (keyEvent == null) {
throw new IllegalArgumentException("KeyEvent may not be null");
}
- //TODO(b/119789707): Resolve hidden API usage: KeyEvent#isMediaKey
- /*
- if (!KeyEvent.isMediaKey(keyEvent.getKeyCode())) {
+ if (!MediaUtils.isMediaKey(keyEvent.getKeyCode())) {
return false;
}
- */
try {
//TODO(b/119748678): Resolve mContext.getOpPackageName() through this file.
// Temporarilly it's replaced with "mContext.getOpPackageName()" for compiling.
@@ -199,9 +197,8 @@
}
case KeyEvent.ACTION_UP: {
- //TODO(b/119790339): Resolve hidden API usage. AudioManager.FLAG_FROM_KEY
- final int flags = AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_VIBRATE;
- //| AudioManager.FLAG_FROM_KEY;
+ final int flags = AudioManager.FLAG_PLAY_SOUND | AudioManager.FLAG_VIBRATE
+ | MediaUtils.AUDIO_MANAGER_FLAG_FROM_KEY;
try {
mSessionBinder.adjustVolume("mContext.getOpPackageName()", mCbStub, true, 0,
flags);
diff --git a/packages/MediaComponents/tests/src/com/android/media/SessionPlaylistAgentTest.java b/packages/MediaComponents/tests/src/com/android/media/SessionPlaylistAgentTest.java
index beb0848..0807600 100644
--- a/packages/MediaComponents/tests/src/com/android/media/SessionPlaylistAgentTest.java
+++ b/packages/MediaComponents/tests/src/com/android/media/SessionPlaylistAgentTest.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.media.AudioAttributes;
import android.media.DataSourceDesc;
+import android.media.UriDataSourceDesc;
import android.media.MediaItem2;
import android.media.MediaMetadata2;
import android.media.MediaPlayerBase;
@@ -119,7 +120,7 @@
if (item.getMediaId().contains("WITHOUT_DSD")) {
return null;
}
- return new DataSourceDesc.Builder()
+ return new UriDataSourceDesc.Builder()
.setDataSource(getContext(), Uri.parse("dsd://test"))
.setMediaId(item.getMediaId())
.build();
diff --git a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
index 58acad3..d118459 100644
--- a/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@ -1257,13 +1257,12 @@
for (audio_io_handle_t output : outputs) {
sp<SwAudioOutputDescriptor> outputDesc = mOutputs.valueFor(output);
if (!outputDesc->isDuplicated()) {
+ if (outputDesc->mFlags & AUDIO_OUTPUT_FLAG_DIRECT) {
+ continue;
+ }
// if a valid format is specified, skip output if not compatible
if (format != AUDIO_FORMAT_INVALID) {
- if (outputDesc->mFlags & AUDIO_OUTPUT_FLAG_DIRECT) {
- if (format != outputDesc->mFormat) {
- continue;
- }
- } else if (!audio_is_linear_pcm(format)) {
+ if (!audio_is_linear_pcm(format)) {
continue;
}
if (AudioPort::isBetterFormatMatch(