/**@class android.bluetooth.BluetoothA2dp
 implements android.bluetooth.BluetoothProfile

@extends java.lang.Object

 This class provides the public APIs to control the Bluetooth A2DP
 profile.

 <p>BluetoothA2dp is a proxy object for controlling the Bluetooth A2DP
 Service via IPC. Use {@link android.bluetooth.BluetoothAdapter#getProfileProxy} to get
 the BluetoothA2dp proxy object.

 <p> Android only supports one connected Bluetooth A2dp device at a time.
 Each method is protected with its appropriate permission.
*/
var BluetoothA2dp = {

/** Intent used to broadcast the change in connection state of the A2DP
 profile.

 <p>This intent will have 3 extras:
 <ul>
 <li> {@link #EXTRA_STATE} - The current state of the profile. </li>
 <li> {@link #EXTRA_PREVIOUS_STATE}- The previous state of the profile.</li>
 <li> {@link android.bluetooth.BluetoothDevice#EXTRA_DEVICE} - The remote device. </li>
 </ul>

 <p>{@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} can be any of
 {@link #STATE_DISCONNECTED}, {@link #STATE_CONNECTING},
 {@link #STATE_CONNECTED}, {@link #STATE_DISCONNECTING}.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
 receive.
*/
ACTION_CONNECTION_STATE_CHANGED : "android.bluetooth.a2dp.profile.action.CONNECTION_STATE_CHANGED",
/** Intent used to broadcast the change in the Playing state of the A2DP
 profile.

 <p>This intent will have 3 extras:
 <ul>
 <li> {@link #EXTRA_STATE} - The current state of the profile. </li>
 <li> {@link #EXTRA_PREVIOUS_STATE}- The previous state of the profile. </li>
 <li> {@link android.bluetooth.BluetoothDevice#EXTRA_DEVICE} - The remote device. </li>
 </ul>

 <p>{@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} can be any of
 {@link #STATE_PLAYING}, {@link #STATE_NOT_PLAYING},

 <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
 receive.
*/
ACTION_PLAYING_STATE_CHANGED : "android.bluetooth.a2dp.profile.action.PLAYING_STATE_CHANGED",
/**@hide */
ACTION_AVRCP_CONNECTION_STATE_CHANGED : "android.bluetooth.a2dp.profile.action.AVRCP_CONNECTION_STATE_CHANGED",
/** Intent used to broadcast the selection of a connected device as active.

 <p>This intent will have one extra:
 <ul>
 <li> {@link android.bluetooth.BluetoothDevice#EXTRA_DEVICE} - The remote device. It can
 be null if no device is active. </li>
 </ul>

 <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
 receive.

 @hide
*/
ACTION_ACTIVE_DEVICE_CHANGED : "android.bluetooth.a2dp.profile.action.ACTIVE_DEVICE_CHANGED",
/** Intent used to broadcast the change in the Audio Codec state of the
 A2DP Source profile.

 <p>This intent will have 2 extras:
 <ul>
 <li> {@link android.bluetooth.BluetoothCodecStatus#EXTRA_CODEC_STATUS} - The codec status. </li>
 <li> {@link android.bluetooth.BluetoothDevice#EXTRA_DEVICE} - The remote device if the device is currently
 connected, otherwise it is not included.</li>
 </ul>

 <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission to
 receive.

 @hide
*/
ACTION_CODEC_CONFIG_CHANGED : "android.bluetooth.a2dp.profile.action.CODEC_CONFIG_CHANGED",
/** A2DP sink device is streaming music. This state can be one of
 {@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} of
 {@link #ACTION_PLAYING_STATE_CHANGED} intent.
*/
STATE_PLAYING : "10",
/** A2DP sink device is NOT streaming music. This state can be one of
 {@link #EXTRA_STATE} or {@link #EXTRA_PREVIOUS_STATE} of
 {@link #ACTION_PLAYING_STATE_CHANGED} intent.
*/
STATE_NOT_PLAYING : "11",
/** We don't have a stored preference for whether or not the given A2DP sink device supports
 optional codecs.

 @hide
*/
OPTIONAL_CODECS_SUPPORT_UNKNOWN : "-1",
/** The given A2DP sink device does not support optional codecs.

 @hide
*/
OPTIONAL_CODECS_NOT_SUPPORTED : "0",
/** The given A2DP sink device does support optional codecs.

 @hide
*/
OPTIONAL_CODECS_SUPPORTED : "1",
/** We don't have a stored preference for whether optional codecs should be enabled or disabled
 for the given A2DP device.

 @hide
*/
OPTIONAL_CODECS_PREF_UNKNOWN : "-1",
/** Optional codecs should be disabled for the given A2DP device.

 @hide
*/
OPTIONAL_CODECS_PREF_DISABLED : "0",
/** Optional codecs should be enabled for the given A2DP device.

 @hide
*/
OPTIONAL_CODECS_PREF_ENABLED : "1",
/**
*/
finalize : function(  ) {},

/**Initiate connection to a profile of the remote Bluetooth device.

 <p> This API returns false in scenarios like the profile on the
 device is already connected or Bluetooth is not turned on.
 When this API returns true, it is guaranteed that
 connection state intent for the profile will be broadcasted with
 the state. Users can get the connection state of the profile
 from this intent.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
 permission.
@param {Object {BluetoothDevice}} device Remote Bluetooth Device
@return {Boolean} false on immediate error, true otherwise
@hide 
*/
connect : function(  ) {},

/**Initiate disconnection from a profile

 <p> This API will return false in scenarios like the profile on the
 Bluetooth device is not in connected state etc. When this API returns,
 true, it is guaranteed that the connection state change
 intent will be broadcasted with the state. Users can get the
 disconnection state of the profile from this intent.

 <p> If the disconnection is initiated by a remote device, the state
 will transition from {@link #STATE_CONNECTED} to
 {@link #STATE_DISCONNECTED}. If the disconnect is initiated by the
 host (local) device the state will transition from
 {@link #STATE_CONNECTED} to state {@link #STATE_DISCONNECTING} to
 state {@link #STATE_DISCONNECTED}. The transition to
 {@link #STATE_DISCONNECTING} can be used to distinguish between the
 two scenarios.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
 permission.
@param {Object {BluetoothDevice}} device Remote Bluetooth Device
@return {Boolean} false on immediate error, true otherwise
@hide 
*/
disconnect : function(  ) {},

/**{@inheritDoc}
*/
getConnectedDevices : function(  ) {},

/**{@inheritDoc}
*/
getDevicesMatchingConnectionStates : function(  ) {},

/**{@inheritDoc}
*/
getConnectionState : function(  ) {},

/**Select a connected device as active.

 The active device selection is per profile. An active device's
 purpose is profile-specific. For example, A2DP audio streaming
 is to the active A2DP Sink device. If a remote device is not
 connected, it cannot be selected as active.

 <p> This API returns false in scenarios like the profile on the
 device is not connected or Bluetooth is not turned on.
 When this API returns true, it is guaranteed that the
 {@link #ACTION_ACTIVE_DEVICE_CHANGED} intent will be broadcasted
 with the active device.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
 permission.
@param {Object {BluetoothDevice}} device the remote Bluetooth device. Could be null to clear
 the active device and stop streaming audio to a Bluetooth device.
@return {Boolean} false on immediate error, true otherwise
@hide 
*/
setActiveDevice : function(  ) {},

/**Get the connected device that is active.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH}
 permission.
@return {Object {android.bluetooth.BluetoothDevice}} the connected device that is active or null if no device
 is active
@hide 
*/
getActiveDevice : function(  ) {},

/**Set priority of the profile

 <p> The device should already be paired.
 Priority can be one of {@link #PRIORITY_ON} orgetBluetoothManager
 {@link #PRIORITY_OFF},

 <p>Requires {@link android.Manifest.permission#BLUETOOTH_ADMIN}
 permission.
@param {Object {BluetoothDevice}} device Paired bluetooth device
@param {Number} priority
@return {Boolean} true if priority is set, false on error
@hide 
*/
setPriority : function(  ) {},

/**Get the priority of the profile.

 <p> The priority can be any of:
 {@link #PRIORITY_AUTO_CONNECT}, {@link #PRIORITY_OFF},
 {@link #PRIORITY_ON}, {@link #PRIORITY_UNDEFINED}
@param {Object {BluetoothDevice}} device Bluetooth device
@return {Number} priority of the device
@hide 
*/
getPriority : function(  ) {},

/**Checks if Avrcp device supports the absolute volume feature.
@return {Boolean} true if device supports absolute volume
@hide 
*/
isAvrcpAbsoluteVolumeSupported : function(  ) {},

/**Tells remote device to set an absolute volume. Only if absolute volume is supported
@param {Number} volume Absolute volume to be set on AVRCP side
@hide 
*/
setAvrcpAbsoluteVolume : function(  ) {},

/**Check if A2DP profile is streaming music.

 <p>Requires {@link android.Manifest.permission#BLUETOOTH} permission.
@param {Object {BluetoothDevice}} device BluetoothDevice device
*/
isA2dpPlaying : function(  ) {},

/**This function checks if the remote device is an AVCRP
 target and thus whether we should send volume keys
 changes or not.
@hide 
*/
shouldSendVolumeKeys : function(  ) {},

/**Gets the current codec status (configuration and capability).
@param {Object {BluetoothDevice}} device the remote Bluetooth device. If null, use the current
 active A2DP Bluetooth device.
@return {Object {android.bluetooth.BluetoothCodecStatus}} the current codec status
@hide 
*/
getCodecStatus : function(  ) {},

/**Sets the codec configuration preference.
@param {Object {BluetoothDevice}} device the remote Bluetooth device. If null, use the current
 active A2DP Bluetooth device.
@param {Object {BluetoothCodecConfig}} codecConfig the codec configuration preference
@hide 
*/
setCodecConfigPreference : function(  ) {},

/**Enables the optional codecs.
@param {Object {BluetoothDevice}} device the remote Bluetooth device. If null, use the currect
 active A2DP Bluetooth device.
@hide 
*/
enableOptionalCodecs : function(  ) {},

/**Disables the optional codecs.
@param {Object {BluetoothDevice}} device the remote Bluetooth device. If null, use the currect
 active A2DP Bluetooth device.
@hide 
*/
disableOptionalCodecs : function(  ) {},

/**Returns whether this device supports optional codecs.
@param {Object {BluetoothDevice}} device The device to check
@return {Number} one of OPTIONAL_CODECS_SUPPORT_UNKNOWN, OPTIONAL_CODECS_NOT_SUPPORTED, or
 OPTIONAL_CODECS_SUPPORTED.
@hide 
*/
supportsOptionalCodecs : function(  ) {},

/**Returns whether this device should have optional codecs enabled.
@param {Object {BluetoothDevice}} device The device in question.
@return {Number} one of OPTIONAL_CODECS_PREF_UNKNOWN, OPTIONAL_CODECS_PREF_ENABLED, or
 OPTIONAL_CODECS_PREF_DISABLED.
@hide 
*/
getOptionalCodecsEnabled : function(  ) {},

/**Sets a persistent preference for whether a given device should have optional codecs enabled.
@param {Object {BluetoothDevice}} device The device to set this preference for.
@param {Number} value Whether the optional codecs should be enabled for this device.  This should be
 one of OPTIONAL_CODECS_PREF_UNKNOWN, OPTIONAL_CODECS_PREF_ENABLED, or
 OPTIONAL_CODECS_PREF_DISABLED.
@hide 
*/
setOptionalCodecsEnabled : function(  ) {},

/**Helper for converting a state to a string.

 For debug use only - strings are not internationalized.
@hide 
*/
stateToString : function(  ) {},


};