Ringtone: add support for volume control and looping
Bug 22182606
Change-Id: Ied910b9fe02a5da9c4822a107ee884677c8b4991
diff --git a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
index 7eed7f2..e9a256c 100644
--- a/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/media/RingtonePlayer.java
@@ -92,7 +92,8 @@
private IRingtonePlayer mCallback = new IRingtonePlayer.Stub() {
@Override
- public void play(IBinder token, Uri uri, AudioAttributes aa) throws RemoteException {
+ public void play(IBinder token, Uri uri, AudioAttributes aa, float volume, boolean looping)
+ throws RemoteException {
if (LOGD) {
Log.d(TAG, "play(token=" + token + ", uri=" + uri + ", uid="
+ Binder.getCallingUid() + ")");
@@ -107,6 +108,8 @@
mClients.put(token, client);
}
}
+ client.mRingtone.setLooping(looping);
+ client.mRingtone.setVolume(volume);
client.mRingtone.play();
}
@@ -138,6 +141,19 @@
}
@Override
+ public void setPlaybackProperties(IBinder token, float volume, boolean looping) {
+ Client client;
+ synchronized (mClients) {
+ client = mClients.get(token);
+ }
+ if (client != null) {
+ client.mRingtone.setVolume(volume);
+ client.mRingtone.setLooping(looping);
+ }
+ // else no client for token when setting playback properties but will be set at play()
+ }
+
+ @Override
public void playAsync(Uri uri, UserHandle user, boolean looping, AudioAttributes aa) {
if (LOGD) Log.d(TAG, "playAsync(uri=" + uri + ", user=" + user + ")");
if (Binder.getCallingUid() != Process.SYSTEM_UID) {