12c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer/* 22c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * Copyright (c) 2016, The Android Open Source Project 32c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * 42c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * Licensed under the Apache License, Version 2.0 (the "License"); 52c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * you may not use this file except in compliance with the License. 62c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * You may obtain a copy of the License at 72c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * 82c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * http://www.apache.org/licenses/LICENSE-2.0 92c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * 102c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * Unless required by applicable law or agreed to in writing, software 112c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * distributed under the License is distributed on an "AS IS" BASIS, 122c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 132c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * See the License for the specific language governing permissions and 142c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * limitations under the License. 152c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer */ 162c9394097967d01f79f76148bbaebed5324a529fRakesh Iyerpackage com.android.car.stream; 172c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 182c9394097967d01f79f76148bbaebed5324a529fRakesh Iyerimport android.app.PendingIntent; 192c9394097967d01f79f76148bbaebed5324a529fRakesh Iyerimport android.graphics.Bitmap; 202c9394097967d01f79f76148bbaebed5324a529fRakesh Iyerimport android.os.Bundle; 212c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 222c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer/** 232c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer * An extension to {@link StreamCard} that holds data specific to current call events. 242c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer */ 252c9394097967d01f79f76148bbaebed5324a529fRakesh Iyerpublic class CurrentCallExtension extends StreamCardExtension { 262c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final int INVALID_CALL_STATE = -1; 272c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 282c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String MUTE_ACTION_KEY = "mute_action"; 292c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String UNMUTE_ACTION_KEY = "unmute_action"; 302c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String ACCEPT_CALL_ACTION_KEY = "accept_call_action"; 312c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String HANGUP_CALL_ACTION_KEY = "hangup_call_action"; 322c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String CALL_START_TIME_KEY_KEY = "call_start_time"; 332c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String CALL_STATE_KEY = "call_state"; 342c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String IS_MUTED_KEY = "is_muted"; 352c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String DISPLAY_NAME_KEY = "display_name"; 362c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private static final String CONTACT_PHOTO_KEY = "contact_photo"; 372c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 382c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private long mCallStartTime; 392c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private String mDisplayName; 402c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private int mCallState = INVALID_CALL_STATE; 412c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private boolean mIsMuted; 422c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 432c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private Bitmap mContactPhoto; 442c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 452c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private PendingIntent mMuteAction; 462c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private PendingIntent mUnMuteAction; 472c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private PendingIntent mAcceptCallAction; 482c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer private PendingIntent mHangupCallAction; 492c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 502c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public static final Creator<CurrentCallExtension> CREATOR 512c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer = new BundleableCreator<>(CurrentCallExtension.class); 522c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 532c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public CurrentCallExtension() {} 542c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 552c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public CurrentCallExtension( 562c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer long callStartTime, 572c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer String displayName, 582c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer int callState, 592c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer boolean isMuted, 602c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer Bitmap contactPhoto, 612c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer PendingIntent muteAction, 622c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer PendingIntent unMuteAction, 632c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer PendingIntent acceptCallAction, 642c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer PendingIntent hangupCallAction) { 652c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mCallStartTime = callStartTime; 662c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mDisplayName = displayName; 672c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mCallState = callState; 682c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mIsMuted = isMuted; 692c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mContactPhoto = contactPhoto; 702c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mMuteAction = muteAction; 712c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mUnMuteAction = unMuteAction; 722c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mAcceptCallAction = acceptCallAction; 732c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mHangupCallAction = hangupCallAction; 742c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 752c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 762c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer @Override 772c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer protected void writeToBundle(Bundle bundle) { 782c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putString(DISPLAY_NAME_KEY, mDisplayName); 792c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putInt(CALL_STATE_KEY, mCallState); 802c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putBoolean(IS_MUTED_KEY, mIsMuted); 812c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putParcelable(CONTACT_PHOTO_KEY, mContactPhoto); 822c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putLong(CALL_START_TIME_KEY_KEY, mCallStartTime); 832c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 842c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putParcelable(MUTE_ACTION_KEY, mMuteAction); 852c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putParcelable(UNMUTE_ACTION_KEY, mUnMuteAction); 862c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putParcelable(ACCEPT_CALL_ACTION_KEY, mAcceptCallAction); 872c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer bundle.putParcelable(HANGUP_CALL_ACTION_KEY, mHangupCallAction); 882c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 892c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 902c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer @Override 912c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer protected void readFromBundle(Bundle bundle) { 922c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mDisplayName = bundle.getString(DISPLAY_NAME_KEY); 932c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mCallState = bundle.getInt(CALL_STATE_KEY, INVALID_CALL_STATE); 942c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 952c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mIsMuted = bundle.getBoolean(IS_MUTED_KEY); 962c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mContactPhoto = bundle.getParcelable(CONTACT_PHOTO_KEY); 972c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mCallStartTime = bundle.getLong(CALL_START_TIME_KEY_KEY); 982c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 992c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mMuteAction = bundle.getParcelable(MUTE_ACTION_KEY); 1002c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mUnMuteAction = bundle.getParcelable(UNMUTE_ACTION_KEY); 1012c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mAcceptCallAction = bundle.getParcelable(ACCEPT_CALL_ACTION_KEY); 1022c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer mHangupCallAction = bundle.getParcelable(HANGUP_CALL_ACTION_KEY); 1032c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1042c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1052c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public String getDisplayName() { 1062c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mDisplayName; 1072c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1082c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1092c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public PendingIntent getHangupCallAction() { 1102c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mHangupCallAction; 1112c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1122c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1132c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public PendingIntent getAcceptCallAction() { 1142c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mAcceptCallAction; 1152c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1162c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1172c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public PendingIntent getUnMuteAction() { 1182c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mUnMuteAction; 1192c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1202c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1212c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public PendingIntent getMuteAction() { 1222c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mMuteAction; 1232c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1242c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1252c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public int getCallState() { 1262c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mCallState; 1272c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1282c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1292c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public long getCallStartTime() { 1302c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mCallStartTime; 1312c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1322c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1332c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public boolean isMuted() { 1342c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mIsMuted; 1352c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1362c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer 1372c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer public Bitmap getContactPhoto() { 1382c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer return mContactPhoto; 1392c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer } 1402c9394097967d01f79f76148bbaebed5324a529fRakesh Iyer} 141