Merge "Set docking ringtone to be played from builtin speaker." into tm-qpr-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
ee54e6170a
@@ -89,6 +89,7 @@ public class Ringtone {
|
|||||||
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
|
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
|
||||||
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
|
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
|
||||||
.build();
|
.build();
|
||||||
|
private boolean mPreferBuiltinDevice;
|
||||||
// playback properties, use synchronized with mPlaybackSettingsLock
|
// playback properties, use synchronized with mPlaybackSettingsLock
|
||||||
private boolean mIsLooping = false;
|
private boolean mIsLooping = false;
|
||||||
private float mVolume = 1.0f;
|
private float mVolume = 1.0f;
|
||||||
@@ -156,8 +157,40 @@ public class Ringtone {
|
|||||||
mAudioAttributes = attributes;
|
mAudioAttributes = attributes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finds the output device of type {@link AudioDeviceInfo#TYPE_BUILTIN_SPEAKER}. This device is
|
||||||
|
* the one on which outgoing audio for SIM calls is played.
|
||||||
|
*
|
||||||
|
* @param audioManager the audio manage.
|
||||||
|
* @return the {@link AudioDeviceInfo} corresponding to the builtin device, or {@code null} if
|
||||||
|
* none can be found.
|
||||||
|
*/
|
||||||
|
private AudioDeviceInfo getBuiltinDevice(AudioManager audioManager) {
|
||||||
|
AudioDeviceInfo[] deviceList = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS);
|
||||||
|
for (AudioDeviceInfo device : deviceList) {
|
||||||
|
if (device.getType() == AudioDeviceInfo.TYPE_BUILTIN_SPEAKER) {
|
||||||
|
return device;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Sets the preferred device of the ringtong playback to the built-in device.
|
||||||
|
*
|
||||||
|
* @hide
|
||||||
|
*/
|
||||||
|
public boolean preferBuiltinDevice(boolean enable) {
|
||||||
|
mPreferBuiltinDevice = enable;
|
||||||
|
if (mLocalPlayer == null) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return mLocalPlayer.setPreferredDevice(getBuiltinDevice(mAudioManager));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates a local media player for the ringtone using currently set attributes.
|
* Creates a local media player for the ringtone using currently set attributes.
|
||||||
|
*
|
||||||
* @hide
|
* @hide
|
||||||
*/
|
*/
|
||||||
public void createLocalMediaPlayer() {
|
public void createLocalMediaPlayer() {
|
||||||
@@ -172,6 +205,8 @@ public class Ringtone {
|
|||||||
try {
|
try {
|
||||||
mLocalPlayer.setDataSource(mContext, mUri);
|
mLocalPlayer.setDataSource(mContext, mUri);
|
||||||
mLocalPlayer.setAudioAttributes(mAudioAttributes);
|
mLocalPlayer.setAudioAttributes(mAudioAttributes);
|
||||||
|
mLocalPlayer.setPreferredDevice(
|
||||||
|
mPreferBuiltinDevice ? getBuiltinDevice(mAudioManager) : null);
|
||||||
synchronized (mPlaybackSettingsLock) {
|
synchronized (mPlaybackSettingsLock) {
|
||||||
applyPlaybackProperties_sync();
|
applyPlaybackProperties_sync();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -302,6 +302,7 @@ final class DockObserver extends SystemService {
|
|||||||
getContext(), soundUri);
|
getContext(), soundUri);
|
||||||
if (sfx != null) {
|
if (sfx != null) {
|
||||||
sfx.setStreamType(AudioManager.STREAM_SYSTEM);
|
sfx.setStreamType(AudioManager.STREAM_SYSTEM);
|
||||||
|
sfx.preferBuiltinDevice(true);
|
||||||
sfx.play();
|
sfx.play();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user