Home | History | Annotate | Download | only in lightbringer
      1 /*
      2  * Copyright (C) 2017 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.videotech.lightbringer;
     18 
     19 import android.content.Context;
     20 import android.support.annotation.NonNull;
     21 import android.telecom.Call;
     22 import com.android.dialer.common.Assert;
     23 import com.android.dialer.lightbringer.Lightbringer;
     24 import com.android.dialer.lightbringer.LightbringerListener;
     25 import com.android.incallui.video.protocol.VideoCallScreen;
     26 import com.android.incallui.video.protocol.VideoCallScreenDelegate;
     27 import com.android.incallui.videotech.VideoTech;
     28 import com.android.incallui.videotech.utils.SessionModificationState;
     29 
     30 public class LightbringerTech implements VideoTech, LightbringerListener {
     31   private final Lightbringer lightbringer;
     32   private final VideoTechListener listener;
     33   private final String callingNumber;
     34   private int callState = Call.STATE_NEW;
     35 
     36   public LightbringerTech(
     37       @NonNull Lightbringer lightbringer,
     38       @NonNull VideoTechListener listener,
     39       @NonNull String callingNumber) {
     40     this.lightbringer = Assert.isNotNull(lightbringer);
     41     this.listener = Assert.isNotNull(listener);
     42     this.callingNumber = Assert.isNotNull(callingNumber);
     43 
     44     lightbringer.registerListener(this);
     45   }
     46 
     47   @Override
     48   public boolean isAvailable(Context context) {
     49     return callState == Call.STATE_ACTIVE && lightbringer.isReachable(context, callingNumber);
     50   }
     51 
     52   @Override
     53   public boolean isTransmittingOrReceiving() {
     54     return false;
     55   }
     56 
     57   @Override
     58   public boolean isSelfManagedCamera() {
     59     return false;
     60   }
     61 
     62   @Override
     63   public boolean shouldUseSurfaceView() {
     64     return false;
     65   }
     66 
     67   @Override
     68   public VideoCallScreenDelegate createVideoCallScreenDelegate(
     69       Context context, VideoCallScreen videoCallScreen) {
     70     throw Assert.createUnsupportedOperationFailException();
     71   }
     72 
     73   @Override
     74   public void onCallStateChanged(Context context, int newState) {
     75     if (newState == Call.STATE_DISCONNECTING) {
     76       lightbringer.unregisterListener(this);
     77     }
     78 
     79     callState = newState;
     80   }
     81 
     82   @Override
     83   public int getSessionModificationState() {
     84     return SessionModificationState.NO_REQUEST;
     85   }
     86 
     87   @Override
     88   public void upgradeToVideo() {
     89     // TODO: upgrade to a video call
     90   }
     91 
     92   @Override
     93   public void acceptVideoRequest() {
     94     throw Assert.createUnsupportedOperationFailException();
     95   }
     96 
     97   @Override
     98   public void acceptVideoRequestAsAudio() {
     99     throw Assert.createUnsupportedOperationFailException();
    100   }
    101 
    102   @Override
    103   public void declineVideoRequest() {
    104     throw Assert.createUnsupportedOperationFailException();
    105   }
    106 
    107   @Override
    108   public boolean isTransmitting() {
    109     return false;
    110   }
    111 
    112   @Override
    113   public void stopTransmission() {
    114     throw Assert.createUnsupportedOperationFailException();
    115   }
    116 
    117   @Override
    118   public void resumeTransmission() {
    119     throw Assert.createUnsupportedOperationFailException();
    120   }
    121 
    122   @Override
    123   public void pause() {
    124     throw Assert.createUnsupportedOperationFailException();
    125   }
    126 
    127   @Override
    128   public void unpause() {
    129     throw Assert.createUnsupportedOperationFailException();
    130   }
    131 
    132   @Override
    133   public void setCamera(String cameraId) {
    134     throw Assert.createUnsupportedOperationFailException();
    135   }
    136 
    137   @Override
    138   public void setDeviceOrientation(int rotation) {
    139     throw Assert.createUnsupportedOperationFailException();
    140   }
    141 
    142   @Override
    143   public void onLightbringerStateChanged() {
    144     listener.onVideoTechStateChanged();
    145   }
    146 }
    147