diff --git a/frameworks/av/include/media/AudioPolicyHelper.h b/frameworks/av/include/media/AudioPolicyHelper.h
old mode
100644
new mode
100755
index
79231be..c19d5f2
--- a/frameworks/av/include/media/AudioPolicyHelper.h
+++ b/frameworks/av/include/media/AudioPolicyHelper.h
@@
-55,
6 +
55,
9 @@
static
audio_stream_type_t audio_attributes_to_stream_type(
const audio_attribute
case AUDIO_USAGE_NOTIFICATION_EVENT:
return AUDIO_STREAM_NOTIFICATION;
+
case AUDIO_USAGE_A2DP:
+
return AUDIO_STREAM_A2DP;
+
case AUDIO_USAGE_UNKNOWN:
default:
return AUDIO_STREAM_MUSIC;
@@
-107,
6 +
110,
9 @@
static
void stream_type_to_audio_attributes(
audio_stream_type_t streamType,
attr->content_type = AUDIO_CONTENT_TYPE_SPEECH;
attr->usage = AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY;
break;
+
case AUDIO_STREAM_A2DP:
+ attr->content_type = AUDIO_CONTENT_TYPE_A2DP;
+ attr->usage = AUDIO_USAGE_A2DP;
default:
ALOGE(
"invalid stream type %d when converting to attributes", streamType);
}
diff --git a/frameworks/av/media/libmedia/AudioSystem.cpp b/frameworks/av/media/libmedia/AudioSystem.cpp
old mode
100644
new mode
100755
diff --git a/frameworks/av/media/libmedia/AudioTrack.cpp b/frameworks/av/media/libmedia/AudioTrack.cpp
old mode
100644
new mode
100755
index e23091c..ceefb68
--- a/frameworks/av/media/libmedia/AudioTrack.cpp
+++ b/frameworks/av/media/libmedia/AudioTrack.cpp
@@
-375,
7 +
375,
6 @@
status_t AudioTrack::
set(
flags = (
audio_output_flags_t) (flags | AUDIO_OUTPUT_FLAG_FAST);
}
}
-
// these below should probably come from the audioFlinger too...
if (format == AUDIO_FORMAT_DEFAULT) {
format = AUDIO_FORMAT_PCM_16_BIT;
diff --git a/frameworks/av/media/libmedia/IMediaPlayer.cpp b/frameworks/av/media/libmedia/IMediaPlayer.cpp
old mode
100644
new mode
100755
diff --git a/frameworks/av/media/libmediaplayerservice/MediaPlayerService.cpp b/frameworks/av/media/libmediaplayerservice/MediaPlayerService.cpp
old mode
100644
new mode
100755
diff --git a/frameworks/av/services/audioflinger/Threads.cpp b/frameworks/av/services/audioflinger/Threads.cpp
index
938fbcf..ca6c6b7
100755
--- a/frameworks/av/services/audioflinger/Threads.cpp
+++ b/frameworks/av/services/audioflinger/Threads.cpp
@@
-4084,
6 +
4084,
7 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
mEffectBufferValid =
false;
// mEffectBuffer has no valid data until tracks found.
phoneMixer();
+
//ALOGW("mIsPhoneOn = %d", mIsPhoneOn);
for (
size_t i=
0 ; i<count ; i++) {
const sp<Track> t = mActiveTracks[i].promote();
@@
-4360,
7 +
4361,
6 @@ AudioFlinger::PlaybackThread::mixer_state AudioFlinger::MixerThread::prepareTrac
typeVolume *=
0;
}
}
- ALOGW(
"mIsPhoneOn = %d, typeVolume = %f", mIsPhoneOn, typeVolume);
float v = masterVolume * typeVolume;
diff --git a/frameworks/av/services/audioflinger/Tracks.cpp b/frameworks/av/services/audioflinger/Tracks.cpp
old mode
100644
new mode
100755
diff --git a/frameworks/av/services/audiopolicy/common/managerdefinitions/include/VolumeCurve.h b/frameworks/av/services/audiopolicy/common/managerdefinitions/include/VolumeCurve.h
old mode
100644
new mode
100755
diff --git a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/Gains.cpp b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/Gains.cpp
old mode
100644
new mode
100755
index e3fc9a8..cb7d8e9
--- a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/Gains.cpp
+++ b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/Gains.cpp
@@
-176,
6 +
176,
12 @@
const VolumeCurvePoint *Gains::sVolumeProfiles[AUDIO_STREAM_CNT]
Gains::sSilentVolumeCurve,
// DEVICE_CATEGORY_EARPIECE
Gains::sSilentVolumeCurve
// DEVICE_CATEGORY_EXT_MEDIA
},
+ {
// AUDIO_STREAM_A2DP
+ Gains::sDefaultMediaVolumeCurve,
// DEVICE_CATEGORY_HEADSET
+ Gains::sSpeakerMediaVolumeCurve,
// DEVICE_CATEGORY_SPEAKER
+ Gains::sDefaultMediaVolumeCurve,
// DEVICE_CATEGORY_EARPIECE
+ Gains::sDefaultMediaVolumeCurve
// DEVICE_CATEGORY_EXT_MEDIA
+ },
{
// AUDIO_STREAM_ACCESSIBILITY
Gains::sDefaultMediaVolumeCurve,
// DEVICE_CATEGORY_HEADSET
Gains::sSpeakerMediaVolumeCurve,
// DEVICE_CATEGORY_SPEAKER
diff --git a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/Serializer.cpp
old mode
100644
new mode
100755
diff --git a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/StreamDescriptor.cpp b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/StreamDescriptor.cpp
old mode
100644
new mode
100755
index b3019e1..f635a1e
--- a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/StreamDescriptor.cpp
+++ b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/StreamDescriptor.cpp
@@
-190,
6 +
190,
8 @@
void StreamDescriptorCollection::initializeVolumeCurves(
bool isSpeakerDrcEnabled
Gains::sSpeakerSonificationVolumeCurveDrc);
setVolumeCurvePoint(AUDIO_STREAM_MUSIC, DEVICE_CATEGORY_SPEAKER,
Gains::sSpeakerMediaVolumeCurveDrc);
+ setVolumeCurvePoint(AUDIO_STREAM_A2DP, DEVICE_CATEGORY_SPEAKER,
+ Gains::sSpeakerMediaVolumeCurveDrc);
setVolumeCurvePoint(AUDIO_STREAM_ACCESSIBILITY, DEVICE_CATEGORY_SPEAKER,
Gains::sSpeakerMediaVolumeCurveDrc);
}
diff --git a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/TypeConverter.cpp b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/TypeConverter.cpp
old mode
100644
new mode
100755
index
48bfd79.
.727390d
--- a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/TypeConverter.cpp
+++ b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/TypeConverter.cpp
@@
-223,
6 +
223,
7 @@
const StreamTypeConverter::Table StreamTypeConverter::mTable[] = {
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ENFORCED_AUDIBLE),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_DTMF),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_TTS),
+ MAKE_STRING_FROM_ENUM(AUDIO_STREAM_A2DP),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_ACCESSIBILITY),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_REROUTING),
MAKE_STRING_FROM_ENUM(AUDIO_STREAM_PATCH),
diff --git a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/VolumeCurve.cpp b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/VolumeCurve.cpp
old mode
100644
new mode
100755
index
14caf7c.
.0bc1252
--- a/frameworks/av/services/audiopolicy/common/managerdefinitions/src/VolumeCurve.cpp
+++ b/frameworks/av/services/audiopolicy/common/managerdefinitions/src/VolumeCurve.cpp
@@
-25,
7 +
25,
7 @@
namespace android {
float VolumeCurve::volIndexToDb(
int indexInUi,
int volIndexMin,
int volIndexMax)
const
{
ALOG_ASSERT(!mCurvePoints.isEmpty(),
"Invalid volume curve");
-
+
size_t nbCurvePoints = mCurvePoints.size();
// the volume index in the UI is relative to the min and max volume indices for this stream
int nbSteps =
1 + mCurvePoints[nbCurvePoints -
1].mIndex - mCurvePoints[
0].mIndex;
diff --git a/frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml b/frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml
old mode
100644
new mode
100755
index
43a47b0.
.5c43ea4
--- a/frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml
+++ b/frameworks/av/services/audiopolicy/config/audio_policy_volumes.xml
@@
-151,
6 +
151,
14 @@ volume index from
0 to
100.
ref=
"SILENT_VOLUME_CURVE"/>
<volume stream=
"AUDIO_STREAM_TTS" deviceCategory=
"DEVICE_CATEGORY_EXT_MEDIA"
ref=
"SILENT_VOLUME_CURVE"/>
+ <volume stream=
"AUDIO_STREAM_A2DP" deviceCategory=
"DEVICE_CATEGORY_HEADSET"
+ ref=
"DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream=
"AUDIO_STREAM_A2DP" deviceCategory=
"DEVICE_CATEGORY_SPEAKER"
+ ref=
"DEFAULT_DEVICE_CATEGORY_SPEAKER_VOLUME_CURVE"/>
+ <volume stream=
"AUDIO_STREAM_A2DP" deviceCategory=
"DEVICE_CATEGORY_EARPIECE"
+ ref=
"DEFAULT_MEDIA_VOLUME_CURVE"/>
+ <volume stream=
"AUDIO_STREAM_A2DP" deviceCategory=
"DEVICE_CATEGORY_EXT_MEDIA"
+ ref=
"DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream=
"AUDIO_STREAM_ACCESSIBILITY" deviceCategory=
"DEVICE_CATEGORY_HEADSET"
ref=
"DEFAULT_MEDIA_VOLUME_CURVE"/>
<volume stream=
"AUDIO_STREAM_ACCESSIBILITY" deviceCategory=
"DEVICE_CATEGORY_SPEAKER"
diff --git a/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp b/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
index c880182.
.065acd1
100755
--- a/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
+++ b/frameworks/av/services/audiopolicy/enginedefault/src/Engine.cpp
@@
-187,
6 +
187,
8 @@ routing_strategy Engine::getStrategyForStream(
audio_stream_type_t stream)
return STRATEGY_ENFORCED_AUDIBLE;
case AUDIO_STREAM_TTS:
return STRATEGY_TRANSMITTED_THROUGH_SPEAKER;
+
case AUDIO_STREAM_A2DP:
+
return STRATEGY_MEDIA;
case AUDIO_STREAM_ACCESSIBILITY:
return STRATEGY_ACCESSIBILITY;
case AUDIO_STREAM_REROUTING:
@@
-205,
6 +
207,
7 @@ routing_strategy Engine::getStrategyForUsage(
audio_usage_t usage)
case AUDIO_USAGE_GAME:
case AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE:
case AUDIO_USAGE_ASSISTANCE_SONIFICATION:
+
case AUDIO_USAGE_A2DP:
return STRATEGY_MEDIA;
case AUDIO_USAGE_VOICE_COMMUNICATION:
diff --git a/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp b/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
old mode
100644
new mode
100755
index
26cd3c2..e6de83d
--- a/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
+++ b/frameworks/av/services/audiopolicy/managerdefault/AudioPolicyManager.cpp
@@
-5247,
6 +
5247,
9 @@
audio_stream_type_t AudioPolicyManager::streamTypefromAttributesInt(
const audio_
case AUDIO_USAGE_NOTIFICATION_EVENT:
return AUDIO_STREAM_NOTIFICATION;
+
case AUDIO_USAGE_A2DP:
+
return AUDIO_STREAM_A2DP;
+
case AUDIO_USAGE_UNKNOWN:
default:
return AUDIO_STREAM_MUSIC;
@@
-5278,
6 +
5281,
7 @@
bool AudioPolicyManager::isValidAttributes(
const
audio_attributes_t *paa)
case AUDIO_USAGE_ASSISTANCE_SONIFICATION:
case AUDIO_USAGE_GAME:
case AUDIO_USAGE_VIRTUAL_SOURCE:
+
case AUDIO_USAGE_A2DP:
break;
default:
return
false;
diff --git a/frameworks/av/services/audiopolicy/service/AudioPolicyEffects.cpp b/frameworks/av/services/audiopolicy/service/AudioPolicyEffects.cpp
old mode
100644
new mode
100755
index b732b20.
.5dba1ce
--- a/frameworks/av/services/audiopolicy/service/AudioPolicyEffects.cpp
+++ b/frameworks/av/services/audiopolicy/service/AudioPolicyEffects.cpp
@@
-352,
7 +
352,
8 @@
const
char *AudioPolicyEffects::kStreamNames[AUDIO_STREAM_PUBLIC_CNT+
1] = {
AUDIO_STREAM_BLUETOOTH_SCO_TAG,
AUDIO_STREAM_ENFORCED_AUDIBLE_TAG,
AUDIO_STREAM_DTMF_TAG,
- AUDIO_STREAM_TTS_TAG
+ AUDIO_STREAM_TTS_TAG,
+ AUDIO_STREAM_A2DP_TAG
};
// returns the audio_stream_t enum corresponding to the output stream name or
diff --git a/frameworks/base/core/jni/android_media_AudioTrack.cpp b/frameworks/base/core/jni/android_media_AudioTrack.cpp
old mode
100644
new mode
100755
index
982a1f8..d3e6e8c
--- a/frameworks/base/core/jni/android_media_AudioTrack.cpp
+++ b/frameworks/base/core/jni/android_media_AudioTrack.cpp
@@
-1034,
6 +
1034,
7 @@
static jint android_media_AudioTrack_get_output_sample_rate(JNIEnv *env, jobjec
case AUDIO_STREAM_NOTIFICATION:
case AUDIO_STREAM_BLUETOOTH_SCO:
case AUDIO_STREAM_DTMF:
+
case AUDIO_STREAM_A2DP:
nativeStreamType = (
audio_stream_type_t) javaStreamType;
break;
default:
diff --git a/frameworks/base/media/java/android/media/AudioAttributes.java b/frameworks/base/media/java/android/media/AudioAttributes.java
old mode
100644
new mode
100755
index
89709ee.
.6060bc4
--- a/frameworks/base/media/java/android/media/AudioAttributes.java
+++ b/frameworks/base/media/java/android/media/AudioAttributes.java
@@
-92,
6 +
92,
10 @@
public final class AudioAttributes implements Parcelable {
*
or
short Foley sounds.
*/
public final
static
int CONTENT_TYPE_SONIFICATION =
4;
+
/**
+ * Content type value to use when the content type is a A2DP input stream.
+ */
+
public final
static
int CONTENT_TYPE_A2DP =
5;
/**
* Usage value to use when the usage is unknown.
@@ -170,6 +174,11 @@ public final class AudioAttributes implements Parcelable {
*/
public final
static
int USAGE_VIRTUAL_SOURCE =
15;
+
/**
+ * Usage value to use when the usage is A2DP input.
+ */
+
public final
static
int USAGE_A2DP =
16;
+
/**
* IMPORTANT: when adding new usage types, add them to SDK_USAGES and update SUPPRESSIBLE_USAGES
* if applicable.
@@ -227,7 +236,8 @@ public final class AudioAttributes implements Parcelable {
USAGE_ASSISTANCE_ACCESSIBILITY,
USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
USAGE_ASSISTANCE_SONIFICATION,
- USAGE_GAME
+ USAGE_GAME,
+ USAGE_A2DP
};
/**
@@ -476,7 +486,8 @@ public final class AudioAttributes implements Parcelable {
* {@link AudioAttributes#USAGE_ASSISTANCE_ACCESSIBILITY},
* {@link AudioAttributes#USAGE_ASSISTANCE_NAVIGATION_GUIDANCE},
* {@link AudioAttributes#USAGE_ASSISTANCE_SONIFICATION},
- * {@link AudioAttributes#USAGE_GAME}.
+ * {@link AudioAttributes#USAGE_GAME},
+ * {@link AudioAttributes#USAGE_A2DP}.
* @return the same Builder instance.
*/
public Builder setUsage(@AttributeUsage
int usage) {
@@
-496,
6 +
507,
7 @@
public final class AudioAttributes implements Parcelable {
case USAGE_ASSISTANCE_NAVIGATION_GUIDANCE:
case USAGE_ASSISTANCE_SONIFICATION:
case USAGE_GAME:
+
case USAGE_A2DP:
case USAGE_VIRTUAL_SOURCE:
mUsage = usage;
break;
@@
-513,
6 +
525,
7 @@
public final class AudioAttributes implements Parcelable {
* {@link AudioAttributes#CONTENT_TYPE_MUSIC},
* {@link AudioAttributes#CONTENT_TYPE_SONIFICATION},
* {@link AudioAttributes#CONTENT_TYPE_SPEECH},
+ * {@link AudioAttributes#CONTENT_TYPE_A2DP},
* {@link AudioAttributes#CONTENT_TYPE_UNKNOWN}.
* @
return the same Builder instance.
*/
@@
-523,
6 +
536,
7 @@
public final class AudioAttributes implements Parcelable {
case CONTENT_TYPE_MUSIC:
case CONTENT_TYPE_SONIFICATION:
case CONTENT_TYPE_SPEECH:
+
case CONTENT_TYPE_A2DP:
mContentType = contentType;
break;
default:
@@
-626,
6 +
640,
9 @@
public final class AudioAttributes implements Parcelable {
case AudioSystem.STREAM_TTS:
mContentType = CONTENT_TYPE_SPEECH;
break;
+
case AudioSystem.STREAM_A2DP:
+ mContentType = CONTENT_TYPE_A2DP;
+
break;
default:
Log.e(TAG,
"Invalid stream type " + streamType +
" for AudioAttributes");
}
@@
-837,
6 +
854,
8 @@
public final class AudioAttributes implements Parcelable {
return
new String(
"USAGE_ASSISTANCE_SONIFICATION");
case USAGE_GAME:
return
new String(
"USAGE_GAME");
+
case USAGE_A2DP:
+
return
new String(
"USAGE_A2DP");
default:
return
new String(
"unknown usage " + usage);
}
@@
-864,
6 +
883,
8 @@
public final class AudioAttributes implements Parcelable {
return USAGE_VOICE_COMMUNICATION_SIGNALLING;
case AudioSystem.STREAM_TTS:
return USAGE_ASSISTANCE_ACCESSIBILITY;
+
case AudioSystem.STREAM_A2DP:
+
return USAGE_A2DP;
default:
return USAGE_UNKNOWN;
}
@@
-935,
6 +
956,
8 @@
public final class AudioAttributes implements Parcelable {
case USAGE_NOTIFICATION_COMMUNICATION_DELAYED:
case USAGE_NOTIFICATION_EVENT:
return AudioSystem.STREAM_NOTIFICATION;
+
case USAGE_A2DP:
+
return AudioSystem.STREAM_A2DP;
case USAGE_UNKNOWN:
return fromGetVolumeControlStream ?
AudioManager.USE_DEFAULT_STREAM_TYPE : AudioSystem.STREAM_MUSIC;
@@
-964,
7 +
987,
8 @@
public final class AudioAttributes implements Parcelable {
USAGE_ASSISTANCE_ACCESSIBILITY,
USAGE_ASSISTANCE_NAVIGATION_GUIDANCE,
USAGE_ASSISTANCE_SONIFICATION,
- USAGE_GAME
+ USAGE_GAME,
+ USAGE_A2DP
})
@Retention(RetentionPolicy.SOURCE)
public @interface AttributeUsage {}
@@
-975,
7 +
999,
8 @@
public final class AudioAttributes implements Parcelable {
CONTENT_TYPE_SPEECH,
CONTENT_TYPE_MUSIC,
CONTENT_TYPE_MOVIE,
- CONTENT_TYPE_SONIFICATION
+ CONTENT_TYPE_SONIFICATION,
+ CONTENT_TYPE_A2DP
})
@Retention(RetentionPolicy.SOURCE)
public @interface AttributeContentType {}
diff --git a/frameworks/base/media/java/android/media/AudioManager.java b/frameworks/base/media/java/android/media/AudioManager.java
old mode
100644
new mode
100755
index bc8a1c2.
.5c0e2ce
--- a/frameworks/base/media/java/android/media/AudioManager.java
+++ b/frameworks/base/media/java/android/media/AudioManager.java
@@
-332,
6 +
332,
8 @@
public class AudioManager {
public
static final
int STREAM_DTMF = AudioSystem.STREAM_DTMF;
/** @hide The audio stream for text to speech (TTS) */
public
static final
int STREAM_TTS = AudioSystem.STREAM_TTS;
+
/** The audio stream for A2DP sound */
+
public
static final
int STREAM_A2DP = AudioSystem.STREAM_A2DP;
/** Number of audio streams */
/**
* @deprecated Use AudioSystem.getNumStreamTypes() instead
@@ -3232,6 +3234,7 @@ public class AudioManager {
case STREAM_ALARM:
case STREAM_NOTIFICATION:
case STREAM_DTMF:
+ case STREAM_A2DP:
return AudioSystem.getDevicesForStream(streamType);
default:
return 0;
diff --git a/frameworks/base/media/java/android/media/AudioSystem.java b/frameworks/base/media/java/android/media/AudioSystem.java
index f597440..1d36ac0 100755
--- a/frameworks/base/media/java/android/media/AudioSystem.java
+++ b/frameworks/base/media/java/android/media/AudioSystem.java
@@ -61,13 +61,15 @@ public class AudioSystem
public static final int STREAM_DTMF = 8;
/* @hide The audio stream for text to speech (TTS) */
public
static final
int STREAM_TTS =
9;
+
/* The audio stream for A2DP sound */
+
public
static final
int STREAM_A2DP =
10;
/**
* @deprecated Use {@link #numStreamTypes() instead}
*/
public
static final
int NUM_STREAMS =
5;
// Expose only the getter method publicly so we can change it in the future
-
private
static final
int NUM_STREAM_TYPES =
10;
+
private
static final
int NUM_STREAM_TYPES =
11;
public
static final
int getNumStreamTypes() {
return NUM_STREAM_TYPES; }
public
static final String[] STREAM_NAMES =
new String[] {
@@
-80,
7 +
82,
8 @@
public class AudioSystem
"STREAM_BLUETOOTH_SCO",
"STREAM_SYSTEM_ENFORCED",
"STREAM_DTMF",
-
"STREAM_TTS"
+
"STREAM_TTS",
+
"STREAM_A2DP"
};
/*
@@ -771,7 +774,8 @@ public class AudioSystem
7, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
11, // STREAM_DTMF
- 11 // STREAM_TTS
+ 11, // STREAM_TTS
+ 11, // STREAM_A2DP
};
public static String streamToString(int stream) {
@@ -809,7 +813,8 @@ public class AudioSystem
(1 << STREAM_MUSIC) |
(1 << STREAM_RING) |
(1 << STREAM_NOTIFICATION) |
- (1 << STREAM_SYSTEM);
+ (1 << STREAM_SYSTEM)|
+ (1 << STREAM_A2DP);
/**
* Event posted by AudioTrack and AudioRecord JNI (JNIDeviceCallback) when routing changes.
diff --git a/frameworks/base/media/java/android/media/AudioTrack.java b/frameworks/base/media/java/android/media/AudioTrack.java
old mode 100644
new mode 100755
diff --git a/frameworks/base/media/java/android/media/MediaPlayer.java b/frameworks/base/media/java/android/media/MediaPlayer.java
old mode 100644
new mode 100755
diff --git a/frameworks/base/media/jni/android_media_MediaPlayer.cpp b/frameworks/base/media/jni/android_media_MediaPlayer.cpp
old mode 100644
new mode 100755
diff --git a/frameworks/base/services/core/java/com/android/server/audio/AudioService.java b/frameworks/base/services/core/java/com/android/server/audio/AudioService.java
index b94089d..12dd6dd 100755
--- a/frameworks/base/services/core/java/com/android/server/audio/AudioService.java
+++ b/frameworks/base/services/core/java/com/android/server/audio/AudioService.java
@@ -271,7 +271,8 @@ public class AudioService extends IAudioService.Stub {
15, // STREAM_BLUETOOTH_SCO
7, // STREAM_SYSTEM_ENFORCED
15, // STREAM_DTMF
- 15 // STREAM_TTS
+ 15, // STREAM_TTS
+ 15 // STREAM_A2DP
};
/** Minimum volume index values for audio streams */
@@
-285,
7 +
286,
8 @@
public class AudioService extends IAudioService.Stub {
0,
// STREAM_BLUETOOTH_SCO
0,
// STREAM_SYSTEM_ENFORCED
0,
// STREAM_DTMF
-
0
// STREAM_TTS
+
0,
// STREAM_TTS
+
0
// STREAM_A2DP
};
/* mStreamVolumeAlias[] indicates for each stream if it uses the volume settings
@@ -307,7 +309,8 @@ public class AudioService extends IAudioService.Stub {
AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO
AudioSystem.STREAM_RING, // STREAM_SYSTEM_ENFORCED
AudioSystem.STREAM_RING, // STREAM_DTMF
- AudioSystem.STREAM_MUSIC // STREAM_TTS
+ AudioSystem.STREAM_MUSIC, // STREAM_TTS
+ AudioSystem.STREAM_A2DP // STREAM_A2DP
};
private final int[] STREAM_VOLUME_ALIAS_TELEVISION = new int[] {
AudioSystem.STREAM_MUSIC, // STREAM_VOICE_CALL
@@ -319,7 +322,8 @@ public class AudioService extends IAudioService.Stub {
AudioSystem.STREAM_MUSIC, // STREAM_BLUETOOTH_SCO
AudioSystem.STREAM_MUSIC, // STREAM_SYSTEM_ENFORCED
AudioSystem.STREAM_MUSIC, // STREAM_DTMF
- AudioSystem.STREAM_MUSIC // STREAM_TTS
+ AudioSystem.STREAM_MUSIC, // STREAM_TTS
+ AudioSystem.STREAM_MUSIC // STREAM_A2DP
};
private final int[] STREAM_VOLUME_ALIAS_DEFAULT = new int[] {
AudioSystem.STREAM_VOICE_CALL, // STREAM_VOICE_CALL
@@ -331,7 +335,8 @@ public class AudioService extends IAudioService.Stub {
AudioSystem.STREAM_BLUETOOTH_SCO, // STREAM_BLUETOOTH_SCO
AudioSystem.STREAM_RING, // STREAM_SYSTEM_ENFORCED
AudioSystem.STREAM_RING, // STREAM_DTMF
- AudioSystem.STREAM_MUSIC // STREAM_TTS
+ AudioSystem.STREAM_MUSIC, // STREAM_TTS
+ AudioSystem.STREAM_MUSIC // STREAM_A2DP
};
private int[] mStreamVolumeAlias;
@@ -350,6 +355,7 @@ public class AudioService extends IAudioService.Stub {
AppOpsManager.OP_AUDIO_MEDIA_VOLUME, // STREAM_SYSTEM_ENFORCED
AppOpsManager.OP_AUDIO_MEDIA_VOLUME, // STREAM_DTMF
AppOpsManager.OP_AUDIO_MEDIA_VOLUME, // STREAM_TTS
+ AppOpsManager.OP_AUDIO_MEDIA_VOLUME // STREAM_A2DP
};
private final boolean mUseFixedVolume;
diff --git a/hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp b/hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp
old mode 100644
new mode 100755
index 74ee22a..5a9fc50
--- a/hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp
+++ b/hardware/libhardware_legacy/audio/AudioPolicyManagerBase.cpp
@@ -2514,6 +2514,7 @@ AudioPolicyManagerBase::routing_strategy AudioPolicyManagerBase::getStrategy(
// while key clicks are played produces a poor result
case AudioSystem::TTS:
case AudioSystem::MUSIC:
+ case AudioSystem::A2DP:
return STRATEGY_MEDIA;
case AudioSystem::ENFORCED_AUDIBLE:
return STRATEGY_ENFORCED_AUDIBLE;
@@ -3206,6 +3207,11 @@ const AudioPolicyManagerBase::VolumeCurvePoint
sSpeakerMediaVolumeCurve, // DEVICE_CATEGORY_SPEAKER
sDefaultMediaVolumeCurve // DEVICE_CATEGORY_EARPIECE
},
+ { // AUDIO_STREAM_A2DP
+ sDefaultMediaVolumeCurve, // DEVICE_CATEGORY_HEADSET
+ sSpeakerMediaVolumeCurve, // DEVICE_CATEGORY_SPEAKER
+ sDefaultMediaVolumeCurve // DEVICE_CATEGORY_EARPIECE
+ },
};
void AudioPolicyManagerBase::initializeVolumeCurves()
diff --git a/hardware/libhardware_legacy/include/hardware_legacy/AudioSystemLegacy.h b/hardware/libhardware_legacy/include/hardware_legacy/AudioSystemLegacy.h
old mode 100644
new mode 100755
index 524e798..99180a0
--- a/hardware/libhardware_legacy/include/hardware_legacy/AudioSystemLegacy.h
+++ b/hardware/libhardware_legacy/include/hardware_legacy/AudioSystemLegacy.h
@@ -80,6 +80,7 @@ public:
ENFORCED_AUDIBLE = 7, // Sounds that cannot be muted by user and must be routed to speaker
DTMF = 8,
TTS = 9,
+ A2DP = 10,
NUM_STREAM_TYPES
};
diff --git a/system/media/audio/include/system/audio.h b/system/media/audio/include/system/audio.h
old mode 100644
new mode 100755
index 3bda199..d39c425
--- a/system/media/audio/include/system/audio.h
+++ b/system/media/audio/include/system/audio.h
@@ -73,10 +73,11 @@ typedef enum {
AUDIO_STREAM_TTS = 9, /* Transmitted Through Speaker.
* Plays over speaker only, silent on other devices.
*/
- AUDIO_STREAM_ACCESSIBILITY =
10,
/* For accessibility talk back prompts */
- AUDIO_STREAM_REROUTING =
11,
/* For dynamic policy output mixes */
- AUDIO_STREAM_PATCH =
12,
/* For internal audio flinger tracks. Fixed volume */
- AUDIO_STREAM_PUBLIC_CNT = AUDIO_STREAM_TTS +
1,
+ AUDIO_STREAM_A2DP =
10,
/* For A2DP sound */
+ AUDIO_STREAM_ACCESSIBILITY =
11,
/* For accessibility talk back prompts */
+ AUDIO_STREAM_REROUTING =
12,
/* For dynamic policy output mixes */
+ AUDIO_STREAM_PATCH =
13,
/* For internal audio flinger tracks. Fixed volume */
+ AUDIO_STREAM_PUBLIC_CNT = AUDIO_STREAM_A2DP +
1,
AUDIO_STREAM_FOR_POLICY_CNT = AUDIO_STREAM_PATCH,
/* number of streams considered by
audio policy for volume and routing */
AUDIO_STREAM_CNT = AUDIO_STREAM_PATCH +
1,
@@
-91,
6 +
92,
7 @@
typedef
enum {
AUDIO_CONTENT_TYPE_MUSIC =
2,
AUDIO_CONTENT_TYPE_MOVIE =
3,
AUDIO_CONTENT_TYPE_SONIFICATION =
4,
+ AUDIO_CONTENT_TYPE_A2DP =
5,
AUDIO_CONTENT_TYPE_CNT,
AUDIO_CONTENT_TYPE_MAX = AUDIO_CONTENT_TYPE_CNT -
1,
@@
-116,
6 +
118,
7 @@
typedef
enum {
AUDIO_USAGE_ASSISTANCE_SONIFICATION =
13,
AUDIO_USAGE_GAME =
14,
AUDIO_USAGE_VIRTUAL_SOURCE =
15,
+ AUDIO_USAGE_A2DP =
16,
AUDIO_USAGE_CNT,
AUDIO_USAGE_MAX = AUDIO_USAGE_CNT -
1,
diff --git a/system/media/audio_effects/include/audio_effects/audio_effects_conf.h b/system/media/audio_effects/include/audio_effects/audio_effects_conf.h
index
79f08a6..a67424c
100755
--- a/system/media/audio_effects/include/audio_effects/audio_effects_conf.h
+++ b/system/media/audio_effects/include/audio_effects/audio_effects_conf.h
@@
-65,
5 +
65,
6 @@
#define AUDIO_STREAM_ENFORCED_AUDIBLE_TAG
"enforced_audible"
#define AUDIO_STREAM_DTMF_TAG
"dtmf"
#define AUDIO_STREAM_TTS_TAG
"tts"
+#define AUDIO_STREAM_A2DP_TAG
"a2dp"
#endif
// ANDROID_AUDIO_EFFECTS_CONF_H
04-13
3320
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)