Merge "NotificationPlayer: fix error listener, sync in playback thread"
diff --git a/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java b/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java
index 5cd7e41..0a2ff2e 100644
--- a/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/media/NotificationPlayer.java
@@ -91,6 +91,8 @@
                     player.setAudioAttributes(mCmd.attributes);
                     player.setDataSource(mCmd.context, mCmd.uri);
                     player.setLooping(mCmd.looping);
+                    player.setOnCompletionListener(NotificationPlayer.this);
+                    player.setOnErrorListener(NotificationPlayer.this);
                     player.prepare();
                     if ((mCmd.uri != null) && (mCmd.uri.getEncodedPath() != null)
                             && (mCmd.uri.getEncodedPath().length() > 0)) {
@@ -118,12 +120,15 @@
                     //  can lead to AudioFocus being released too early, before the second sound is
                     //  done playing. This class should be modified to use a single thread, on which
                     //  command are issued, and on which it receives the completion callbacks.
-                    player.setOnCompletionListener(NotificationPlayer.this);
-                    player.setOnErrorListener(NotificationPlayer.this);
                     if (DEBUG)  { Log.d(mTag, "notification will be delayed by "
                             + mNotificationRampTimeMs + "ms"); }
-                    player.setStartDelayMs(mNotificationRampTimeMs);
-                    player.start();
+                    try {
+                        Thread.sleep(mNotificationRampTimeMs);
+                        player.start();
+                    } catch (InterruptedException e) {
+                        Log.e(mTag, "Exception while sleeping to sync notification playback "
+                                + " with ducking", e);
+                    }
                     if (mPlayer != null) {
                         mPlayer.release();
                     }