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
196cddf46812634fadc194830774110780f14e9462Tyler Gunnimport android.telecom.InCallService;
206cddf46812634fadc194830774110780f14e9462Tyler Gunnimport android.telecom.Phone;
214549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal
224549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal/**
234549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Used to receive updates about calls from the Telecomm component.  This service is bound to
244549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * Telecomm while there exist calls which potentially require UI. This includes ringing (incoming),
254549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * dialing (outgoing), and active calls. When the last call is disconnected, Telecomm will unbind to
264549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal * the service triggering InCallActivity (via CallList) to finish soon after.
274549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal */
284bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordonpublic class InCallServiceImpl extends InCallService {
29df06e232852a93d8238f3cacaab4d704de7e1216Ihab Awad
304bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    @Override
314bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    public void onPhoneCreated(Phone phone) {
324bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        Log.v(this, "onPhoneCreated");
334bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        CallList.getInstance().setPhone(phone);
344bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        AudioModeProvider.getInstance().setPhone(phone);
356cddf46812634fadc194830774110780f14e9462Tyler Gunn        TelecomAdapter.getInstance().setPhone(phone);
364bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        InCallPresenter.getInstance().setPhone(phone);
374bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        InCallPresenter.getInstance().setUp(
384bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon                getApplicationContext(),
394bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon                CallList.getInstance(),
404bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon                AudioModeProvider.getInstance());
416cddf46812634fadc194830774110780f14e9462Tyler Gunn        TelecomAdapter.getInstance().setContext(InCallServiceImpl.this);
424bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    }
434549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal
444e2f655895460f3a300832e79a32501d5606a717Santos Cordon    @Override
454bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon    public void onPhoneDestroyed(Phone phone) {
464bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        Log.v(this, "onPhoneDestroyed");
474bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        // Tear down the InCall system
484bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        CallList.getInstance().clearPhone();
494bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        AudioModeProvider.getInstance().clearPhone();
506cddf46812634fadc194830774110780f14e9462Tyler Gunn        TelecomAdapter.getInstance().clearPhone();
516cddf46812634fadc194830774110780f14e9462Tyler Gunn        TelecomAdapter.getInstance().setContext(null);
524bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        CallList.getInstance().clearOnDisconnect();
534bd6a95aabbf389a6399feb0c16d18ed98382a27Santos Cordon        InCallPresenter.getInstance().tearDown();
540e7d8b3f2a18171087b3fe4aa9cc3bf4449ad5b3Yorke Lee    }
554549f54d6799f549fa60cfe32949c640135480e4Sailesh Nepal}
56