| /* |
| * Copyright 2014, The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package com.android.server.telecom; |
| |
| import android.net.Uri; |
| import android.os.UserHandle; |
| import android.telecom.PhoneAccountHandle; |
| |
| import com.android.internal.telephony.CallerInfo; |
| |
| /** |
| * Creates a notification for calls that the user missed (neither answered nor rejected). |
| */ |
| public interface MissedCallNotifier extends CallsManager.CallsManagerListener { |
| class CallInfoFactory { |
| public CallInfo makeCallInfo(CallerInfo callerInfo, PhoneAccountHandle phoneAccountHandle, |
| Uri handle, long creationTimeMillis) { |
| return new CallInfo(callerInfo, phoneAccountHandle, handle, creationTimeMillis); |
| } |
| } |
| |
| class CallInfo { |
| private CallerInfo mCallerInfo; |
| private PhoneAccountHandle mPhoneAccountHandle; |
| private Uri mHandle; |
| private long mCreationTimeMillis; |
| |
| public CallInfo(CallerInfo callerInfo, PhoneAccountHandle phoneAccountHandle, Uri handle, |
| long creationTimeMillis) { |
| mCallerInfo = callerInfo; |
| mPhoneAccountHandle = phoneAccountHandle; |
| mHandle = handle; |
| mCreationTimeMillis = creationTimeMillis; |
| } |
| |
| public CallInfo(Call call) { |
| mCallerInfo = call.getCallerInfo(); |
| mPhoneAccountHandle = call.getTargetPhoneAccount(); |
| mHandle = call.getHandle(); |
| mCreationTimeMillis = call.getCreationTimeMillis(); |
| } |
| |
| public CallerInfo getCallerInfo() { |
| return mCallerInfo; |
| } |
| |
| public PhoneAccountHandle getPhoneAccountHandle() { |
| return mPhoneAccountHandle; |
| } |
| |
| public Uri getHandle() { |
| return mHandle; |
| } |
| |
| public String getHandleSchemeSpecificPart() { |
| return mHandle == null ? null : mHandle.getSchemeSpecificPart(); |
| } |
| |
| public long getCreationTimeMillis() { |
| return mCreationTimeMillis; |
| } |
| |
| public String getPhoneNumber() { |
| return mCallerInfo == null ? null : mCallerInfo.phoneNumber; |
| } |
| |
| public String getName() { |
| return mCallerInfo == null ? null : mCallerInfo.name; |
| } |
| } |
| |
| void clearMissedCalls(UserHandle userHandle); |
| |
| void showMissedCallNotification(CallInfo call); |
| |
| void reloadAfterBootComplete(CallerInfoLookupHelper callerInfoLookupHelper, |
| CallInfoFactory callInfoFactory); |
| |
| void reloadFromDatabase(CallerInfoLookupHelper callerInfoLookupHelper, |
| CallInfoFactory callInfoFactory, UserHandle userHandle); |
| |
| void setCurrentUserHandle(UserHandle userHandle); |
| } |