public class AudioService extends IAudioService.Stub implements PendingIntent.OnFinished
This implementation focuses on delivering a responsive UI. Most methods are asynchronous to external calls. For example, the task of setting a volume will update our internal state, but in a separate thread will set the system volume and later persist to the database. Similarly, setting the ringer mode will update the state and broadcast a change and in a separate thread later persist the ringer mode.
Modifier and Type | Class and Description |
---|---|
class |
AudioService.VolumeStreamState |
Modifier and Type | Field and Description |
---|---|
protected static boolean |
DEBUG_RC
Debug remote control client/display feature
|
protected static boolean |
DEBUG_VOL
Debug volumes
|
static String |
IN_VOICE_COMM_FOCUS_ID |
static int |
STREAM_REMOTE_MUSIC
A fake stream type to match the notion of remote media playback
|
Constructor and Description |
---|
AudioService(Context context) |
Modifier and Type | Method and Description |
---|---|
int |
abandonAudioFocus(IAudioFocusDispatcher fl,
String clientId) |
void |
adjustLocalOrRemoteStreamVolume(int streamType,
int direction) |
void |
adjustMasterVolume(int steps,
int flags) |
void |
adjustStreamVolume(int streamType,
int direction,
int flags) |
void |
adjustSuggestedStreamVolume(int direction,
int suggestedStreamType,
int flags) |
void |
adjustVolume(int direction,
int flags) |
void |
clearAllScoClients(int exceptPid,
boolean stopSco) |
void |
disableSafeMediaVolume() |
void |
dispatchMediaKeyEvent(KeyEvent keyEvent) |
void |
dispatchMediaKeyEventUnderWakelock(KeyEvent keyEvent) |
protected void |
dump(FileDescriptor fd,
PrintWriter pw,
String[] args) |
void |
forceVolumeControlStream(int streamType,
IBinder cb) |
int |
getLastAudibleMasterVolume()
Get last audible master volume before it was muted.
|
int |
getLastAudibleStreamVolume(int streamType)
Get last audible volume before stream was muted.
|
int |
getMasterMaxVolume() |
int |
getMasterStreamType() |
int |
getMasterVolume() |
int |
getMode() |
int |
getRemoteStreamMaxVolume() |
int |
getRemoteStreamVolume() |
int |
getRingerMode() |
IRingtonePlayer |
getRingtonePlayer() |
int |
getStreamMaxVolume(int streamType) |
int |
getStreamVolume(int streamType) |
static int |
getValueForVibrateSetting(int existingValue,
int vibrateType,
int vibrateSetting) |
int |
getVibrateSetting(int vibrateType) |
boolean |
isBluetoothA2dpOn() |
boolean |
isBluetoothScoOn() |
boolean |
isCameraSoundForced() |
boolean |
isMasterMute()
get master mute state.
|
boolean |
isSpeakerphoneOn() |
boolean |
isStreamAffectedByMute(int streamType) |
boolean |
isStreamAffectedByRingerMode(int streamType) |
boolean |
isStreamMute(int streamType)
get stream mute state.
|
boolean |
loadSoundEffects()
Loads samples into the soundpool.
|
void |
onSendFinished(PendingIntent pendingIntent,
Intent intent,
int resultCode,
String resultData,
Bundle resultExtras)
Called when a send operation as completed.
|
void |
playSoundEffect(int effectType) |
void |
playSoundEffectVolume(int effectType,
float volume) |
void |
registerMediaButtonEventReceiverForCalls(ComponentName c)
see AudioManager.registerMediaButtonEventReceiverForCalls(ComponentName c)
precondition: c != null
|
void |
registerMediaButtonIntent(PendingIntent mediaIntent,
ComponentName eventReceiver)
see AudioManager.registerMediaButtonIntent(PendingIntent pi, ComponentName c)
precondition: mediaIntent != null, target != null
|
int |
registerRemoteControlClient(PendingIntent mediaIntent,
IRemoteControlClient rcClient,
String callingPackageName)
see AudioManager.registerRemoteControlClient(ComponentName eventReceiver, ...)
|
void |
registerRemoteControlDisplay(IRemoteControlDisplay rcd)
Register an IRemoteControlDisplay.
|
void |
registerRemoteVolumeObserverForRcc(int rccId,
IRemoteVolumeObserver rvo) |
void |
reloadAudioSettings() |
void |
remoteControlDisplayUsesBitmapSize(IRemoteControlDisplay rcd,
int w,
int h) |
int |
requestAudioFocus(int mainStreamType,
int focusChangeHint,
IBinder cb,
IAudioFocusDispatcher fd,
String clientId,
String callingPackageName) |
int |
setBluetoothA2dpDeviceConnectionState(BluetoothDevice device,
int state) |
void |
setBluetoothA2dpOn(boolean on) |
void |
setBluetoothA2dpOnInt(boolean on) |
void |
setBluetoothScoOn(boolean on) |
void |
setMasterMute(boolean state,
int flags,
IBinder cb) |
void |
setMasterVolume(int volume,
int flags) |
void |
setMode(int mode,
IBinder cb) |
void |
setPlaybackInfoForRcc(int rccId,
int what,
int value) |
void |
setRemoteStreamVolume(int vol) |
void |
setRemoteSubmixOn(boolean on,
int address)
see AudioManager.setRemoteSubmixOn(boolean on)
|
void |
setRingerMode(int ringerMode) |
void |
setRingtonePlayer(IRingtonePlayer player) |
void |
setSpeakerphoneOn(boolean on) |
void |
setStreamMute(int streamType,
boolean state,
IBinder cb) |
void |
setStreamSolo(int streamType,
boolean state,
IBinder cb) |
void |
setStreamVolume(int streamType,
int index,
int flags) |
void |
setVibrateSetting(int vibrateType,
int vibrateSetting) |
void |
setWiredDeviceConnectionState(int device,
int state,
String name) |
boolean |
shouldVibrate(int vibrateType) |
void |
startBluetoothSco(IBinder cb) |
AudioRoutesInfo |
startWatchingRoutes(IAudioRoutesObserver observer) |
void |
stopBluetoothSco(IBinder cb) |
void |
unloadSoundEffects()
Unloads samples from the sound pool.
|
void |
unregisterAudioFocusClient(String clientId) |
void |
unregisterMediaButtonEventReceiverForCalls()
see AudioManager.unregisterMediaButtonEventReceiverForCalls()
|
void |
unregisterMediaButtonIntent(PendingIntent mediaIntent,
ComponentName eventReceiver)
see AudioManager.unregisterMediaButtonIntent(PendingIntent mediaIntent)
precondition: mediaIntent != null, eventReceiver != null
|
void |
unregisterRemoteControlClient(PendingIntent mediaIntent,
IRemoteControlClient rcClient)
see AudioManager.unregisterRemoteControlClient(PendingIntent pi, ...)
rcClient is guaranteed non-null
|
void |
unregisterRemoteControlDisplay(IRemoteControlDisplay rcd)
Unregister an IRemoteControlDisplay.
|
protected static final boolean DEBUG_RC
protected static final boolean DEBUG_VOL
public static final int STREAM_REMOTE_MUSIC
public static final String IN_VOICE_COMM_FOCUS_ID
public AudioService(Context context)
public void adjustVolume(int direction, int flags)
AudioManager.adjustVolume(int, int)
public void adjustLocalOrRemoteStreamVolume(int streamType, int direction)
public void adjustSuggestedStreamVolume(int direction, int suggestedStreamType, int flags)
AudioManager#adjustVolume(int, int, int)
public void adjustStreamVolume(int streamType, int direction, int flags)
public void adjustMasterVolume(int steps, int flags)
AudioManager#adjustMasterVolume(int)
public void setStreamVolume(int streamType, int index, int flags)
public void forceVolumeControlStream(int streamType, IBinder cb)
public void setStreamSolo(int streamType, boolean state, IBinder cb)
public void setStreamMute(int streamType, boolean state, IBinder cb)
public boolean isStreamMute(int streamType)
public void setMasterMute(boolean state, int flags, IBinder cb)
AudioManager#setMasterMute(boolean, IBinder)
public boolean isMasterMute()
public int getStreamVolume(int streamType)
AudioManager.getStreamVolume(int)
public int getMasterVolume()
public void setMasterVolume(int volume, int flags)
public int getStreamMaxVolume(int streamType)
AudioManager.getStreamMaxVolume(int)
public int getMasterMaxVolume()
public int getLastAudibleStreamVolume(int streamType)
public int getLastAudibleMasterVolume()
public int getMasterStreamType()
AudioManager#getMasterStreamType(int)
public int getRingerMode()
AudioManager.getRingerMode()
public void setRingerMode(int ringerMode)
AudioManager.setRingerMode(int)
public boolean shouldVibrate(int vibrateType)
AudioManager.shouldVibrate(int)
public int getVibrateSetting(int vibrateType)
AudioManager.getVibrateSetting(int)
public void setVibrateSetting(int vibrateType, int vibrateSetting)
public static int getValueForVibrateSetting(int existingValue, int vibrateType, int vibrateSetting)
setVibrateSetting(int, int)
public void setMode(int mode, IBinder cb)
AudioManager.setMode(int)
public int getMode()
AudioManager.getMode()
public void playSoundEffect(int effectType)
AudioManager.playSoundEffect(int)
public void playSoundEffectVolume(int effectType, float volume)
public boolean loadSoundEffects()
public void unloadSoundEffects()
public void reloadAudioSettings()
AudioManager.reloadAudioSettings()
public void setSpeakerphoneOn(boolean on)
AudioManager#setSpeakerphoneOn()
public boolean isSpeakerphoneOn()
AudioManager.isSpeakerphoneOn()
public void setBluetoothScoOn(boolean on)
AudioManager#setBluetoothScoOn()
public boolean isBluetoothScoOn()
AudioManager.isBluetoothScoOn()
public void setBluetoothA2dpOn(boolean on)
AudioManager#setBluetoothA2dpOn()
public boolean isBluetoothA2dpOn()
AudioManager.isBluetoothA2dpOn()
public void startBluetoothSco(IBinder cb)
AudioManager.startBluetoothSco()
public void stopBluetoothSco(IBinder cb)
AudioManager.stopBluetoothSco()
public void clearAllScoClients(int exceptPid, boolean stopSco)
public void setRemoteSubmixOn(boolean on, int address)
public boolean isStreamAffectedByRingerMode(int streamType)
public boolean isStreamAffectedByMute(int streamType)
public void setWiredDeviceConnectionState(int device, int state, String name)
public int setBluetoothA2dpDeviceConnectionState(BluetoothDevice device, int state)
public int requestAudioFocus(int mainStreamType, int focusChangeHint, IBinder cb, IAudioFocusDispatcher fd, String clientId, String callingPackageName)
AudioManager#requestAudioFocus(IAudioFocusDispatcher, int, int)
public int abandonAudioFocus(IAudioFocusDispatcher fl, String clientId)
AudioManager#abandonAudioFocus(IAudioFocusDispatcher)
public void unregisterAudioFocusClient(String clientId)
public void dispatchMediaKeyEvent(KeyEvent keyEvent)
public void dispatchMediaKeyEventUnderWakelock(KeyEvent keyEvent)
public void onSendFinished(PendingIntent pendingIntent, Intent intent, int resultCode, String resultData, Bundle resultExtras)
PendingIntent.OnFinished
onSendFinished
in interface PendingIntent.OnFinished
pendingIntent
- The PendingIntent this operation was sent through.intent
- The original Intent that was sent.resultCode
- The final result code determined by the send.resultData
- The final data collected by a broadcast.resultExtras
- The final extras collected by a broadcast.public void registerMediaButtonIntent(PendingIntent mediaIntent, ComponentName eventReceiver)
public void unregisterMediaButtonIntent(PendingIntent mediaIntent, ComponentName eventReceiver)
public void registerMediaButtonEventReceiverForCalls(ComponentName c)
public void unregisterMediaButtonEventReceiverForCalls()
public int registerRemoteControlClient(PendingIntent mediaIntent, IRemoteControlClient rcClient, String callingPackageName)
public void unregisterRemoteControlClient(PendingIntent mediaIntent, IRemoteControlClient rcClient)
public void registerRemoteControlDisplay(IRemoteControlDisplay rcd)
rcd
- the IRemoteControlDisplay to register. No effect if null.public void unregisterRemoteControlDisplay(IRemoteControlDisplay rcd)
rcd
- the IRemoteControlDisplay to unregister. No effect if null.public void remoteControlDisplayUsesBitmapSize(IRemoteControlDisplay rcd, int w, int h)
public void setPlaybackInfoForRcc(int rccId, int what, int value)
public void registerRemoteVolumeObserverForRcc(int rccId, IRemoteVolumeObserver rvo)
public int getRemoteStreamMaxVolume()
public int getRemoteStreamVolume()
public void setRemoteStreamVolume(int vol)
public void setBluetoothA2dpOnInt(boolean on)
public void setRingtonePlayer(IRingtonePlayer player)
public IRingtonePlayer getRingtonePlayer()
public AudioRoutesInfo startWatchingRoutes(IAudioRoutesObserver observer)
public void disableSafeMediaVolume()
public boolean isCameraSoundForced()
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args)