Adding implementation of TelecommService

First use of this service is to allow silencing of the ringer
(called from TelephonyManager)

Also updated Telecomm to run under the android.uid.phone userId.
This ID has special permission to add services and send protected
broadcast intents. We'll piggy back until telecomm moves into the
system server process.

Bug: 15125169

Change-Id: I9180797451dcb2e9029b20bed47f5d5cb8cddb9f
diff --git a/src/com/android/telecomm/CallsManager.java b/src/com/android/telecomm/CallsManager.java
index a4b2086..48aa525 100644
--- a/src/com/android/telecomm/CallsManager.java
+++ b/src/com/android/telecomm/CallsManager.java
@@ -85,6 +85,8 @@
 
     private final CallAudioManager mCallAudioManager;
 
+    private final Ringer mRinger;
+
     private final Set<CallsManagerListener> mListeners = Sets.newHashSet();
 
     /** Singleton accessor. */
@@ -99,12 +101,13 @@
         TelecommApp app = TelecommApp.getInstance();
 
         mCallAudioManager = new CallAudioManager();
-
         InCallTonePlayer.Factory playerFactory = new InCallTonePlayer.Factory(mCallAudioManager);
+        mRinger = new Ringer(mCallAudioManager, this, playerFactory, app);
+
         mListeners.add(new CallLogManager(app));
         mListeners.add(new PhoneStateBroadcaster());
         mListeners.add(new InCallController());
-        mListeners.add(new Ringer(mCallAudioManager, this, playerFactory, app));
+        mListeners.add(mRinger);
         mListeners.add(new RingbackPlayer(this, playerFactory));
         mListeners.add(new InCallToneMonitor(playerFactory, this));
         mListeners.add(mCallAudioManager);
@@ -158,6 +161,10 @@
         return mForegroundCall;
     }
 
+    Ringer getRinger() {
+        return mRinger;
+    }
+
     boolean hasEmergencyCall() {
         for (Call call : mCalls) {
             if (call.isEmergencyCall()) {