1 /*
2  * Copyright (C) 2015 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 
17 package com.android.incallui;
18 
19 import android.content.BroadcastReceiver;
20 import android.content.Context;
21 import android.content.Intent;
22 import android.telecom.VideoProfile;
23 
24 /**
25  * Accepts broadcast Intents which will be prepared by {@link StatusBarNotifier} and thus
26  * sent from the notification manager.
27  * This should be visible from outside, but shouldn't be exported.
28  */
29 public class NotificationBroadcastReceiver extends BroadcastReceiver {
30 
31     /**
32      * Intent Action used for hanging up the current call from Notification bar. This will
33      * choose first ringing call, first active call, or first background call (typically in
34      * STATE_HOLDING state).
35      */
36     public static final String ACTION_DECLINE_INCOMING_CALL =
37             "com.android.incallui.ACTION_DECLINE_INCOMING_CALL";
38     public static final String ACTION_HANG_UP_ONGOING_CALL =
39             "com.android.incallui.ACTION_HANG_UP_ONGOING_CALL";
40     public static final String ACTION_ANSWER_VIDEO_INCOMING_CALL =
41             "com.android.incallui.ACTION_ANSWER_VIDEO_INCOMING_CALL";
42     public static final String ACTION_ANSWER_VOICE_INCOMING_CALL =
43             "com.android.incallui.ACTION_ANSWER_VOICE_INCOMING_CALL";
44     public static final String ACTION_ACCEPT_VIDEO_UPGRADE_REQUEST =
45             "com.android.incallui.ACTION_ACCEPT_VIDEO_UPGRADE_REQUEST";
46     public static final String ACTION_DECLINE_VIDEO_UPGRADE_REQUEST =
47             "com.android.incallui.ACTION_DECLINE_VIDEO_UPGRADE_REQUEST";
48 
49     @Override
onReceive(Context context, Intent intent)50     public void onReceive(Context context, Intent intent) {
51         final String action = intent.getAction();
52         Log.i(this, "Broadcast from Notification: " + action);
53 
54         // TODO: Commands of this nature should exist in the CallList.
55         if (action.equals(ACTION_ANSWER_VIDEO_INCOMING_CALL)) {
56             InCallPresenter.getInstance().answerIncomingCall(
57                     context, VideoProfile.STATE_BIDIRECTIONAL);
58         } else if (action.equals(ACTION_ANSWER_VOICE_INCOMING_CALL)) {
59             InCallPresenter.getInstance().answerIncomingCall(
60                     context, VideoProfile.STATE_AUDIO_ONLY);
61         } else if (action.equals(ACTION_DECLINE_INCOMING_CALL)) {
62             InCallPresenter.getInstance().declineIncomingCall(context);
63         } else if (action.equals(ACTION_HANG_UP_ONGOING_CALL)) {
64             InCallPresenter.getInstance().hangUpOngoingCall(context);
65         } else if (action.equals(ACTION_ACCEPT_VIDEO_UPGRADE_REQUEST)) {
66             //TODO: Change calltype after adding support for TX and RX
67             InCallPresenter.getInstance().acceptUpgradeRequest(
68                     VideoProfile.STATE_BIDIRECTIONAL, context);
69         } else if (action.equals(ACTION_DECLINE_VIDEO_UPGRADE_REQUEST)) {
70             InCallPresenter.getInstance().declineUpgradeRequest(context);
71         }
72     }
73 
74 }
75