InCallServiceImpl.java revision 4bd6a95aabbf389a6399feb0c16d18ed98382a27
14549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal/*
24549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Copyright (C) 2014 The Android Open Source Project
34549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal *
44549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Licensed under the Apache License, Version 2.0 (the "License");
54549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * you may not use this file except in compliance with the License.
64549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * You may obtain a copy of the License at
74549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal *
84549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal *      http://www.apache.org/licenses/LICENSE-2.0
94549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal *
104549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Unless required by applicable law or agreed to in writing, software
114549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * distributed under the License is distributed on an "AS IS" BASIS,
124549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
134549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * See the License for the specific language governing permissions and
144549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * limitations under the License
154549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal */
164549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal
174549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepalpackage com.android.incallui;
184549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal
19df06e232852a93d8238f3cacaab4d704de7e1216Ihab Awadimport android.app.Service;
20df06e232852a93d8238f3cacaab4d704de7e1216Ihab Awadimport android.content.Intent;
21df06e232852a93d8238f3cacaab4d704de7e1216Ihab Awadimport android.os.IBinder;
22c7f8ba27e0fa19f748bef2060f5473bd07d068bfEvan Charltonimport android.telecomm.InCallService;
23df06e232852a93d8238f3cacaab4d704de7e1216Ihab Awadimport android.telecomm.Phone;
244549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal
254549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal/**
264549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Used to receive updates about calls from the Telecomm component.  This service is bound to
274549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Telecomm while there exist calls which potentially require UI. This includes ringing (incoming),
284549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * dialing (outgoing), and active calls. When the last call is disconnected, Telecomm will unbind to
294549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * the service triggering InCallActivity (via CallList) to finish soon after.
304549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal */
314bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordonpublic class InCallServiceImpl extends InCallService {
32df06e232852a93d8238f3cacaab4d704de7e1216Ihab Awad
334bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    @Override
344bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    public void onPhoneCreated(Phone phone) {
354bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        Log.v(this, "onPhoneCreated");
364bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        CallList.getInstance().setPhone(phone);
374bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        AudioModeProvider.getInstance().setPhone(phone);
384bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        TelecommAdapter.getInstance().setPhone(phone);
394bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        InCallPresenter.getInstance().setPhone(phone);
404bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        InCallPresenter.getInstance().setUp(
414bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon                getApplicationContext(),
424bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon                CallList.getInstance(),
434bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon                AudioModeProvider.getInstance());
444bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        TelecommAdapter.getInstance().setContext(InCallServiceImpl.this);
454bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    }
464549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal
474e2f655895460f3a300832e79a32501d5606a717Santos Cordon    @Override
484bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    public void onPhoneDestroyed(Phone phone) {
494bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        Log.v(this, "onPhoneDestroyed");
504bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        // Tear down the InCall system
514bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        CallList.getInstance().clearPhone();
524bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        AudioModeProvider.getInstance().clearPhone();
534bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        TelecommAdapter.getInstance().clearPhone();
544bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        TelecommAdapter.getInstance().setContext(null);
554bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        CallList.getInstance().clearOnDisconnect();
564bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        InCallPresenter.getInstance().tearDown();
570e7d8b3f2a18171087b3fe4aa9cc3bf4449ad5b3Yorke Lee    }
584549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal}
59