Android8 新增加音频流类型

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值