diff options
Diffstat (limited to 'java/com/android/incallui/videotech/utils')
-rw-r--r-- | java/com/android/incallui/videotech/utils/SessionModificationState.java | 46 | ||||
-rw-r--r-- | java/com/android/incallui/videotech/utils/VideoUtils.java | 60 |
2 files changed, 106 insertions, 0 deletions
diff --git a/java/com/android/incallui/videotech/utils/SessionModificationState.java b/java/com/android/incallui/videotech/utils/SessionModificationState.java new file mode 100644 index 000000000..24b0ca369 --- /dev/null +++ b/java/com/android/incallui/videotech/utils/SessionModificationState.java @@ -0,0 +1,46 @@ +/* + * Copyright (C) 2017 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.incallui.videotech.utils; + +import android.support.annotation.IntDef; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +/** + * Defines different states of session modify requests, which are used to upgrade to video, or + * downgrade to audio. + */ +@Retention(RetentionPolicy.SOURCE) +@IntDef({ + SessionModificationState.NO_REQUEST, + SessionModificationState.WAITING_FOR_UPGRADE_TO_VIDEO_RESPONSE, + SessionModificationState.REQUEST_FAILED, + SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST, + SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT, + SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_FAILED, + SessionModificationState.REQUEST_REJECTED, + SessionModificationState.WAITING_FOR_RESPONSE +}) +public @interface SessionModificationState { + int NO_REQUEST = 0; + int WAITING_FOR_UPGRADE_TO_VIDEO_RESPONSE = 1; + int REQUEST_FAILED = 2; + int RECEIVED_UPGRADE_TO_VIDEO_REQUEST = 3; + int UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT = 4; + int UPGRADE_TO_VIDEO_REQUEST_FAILED = 5; + int REQUEST_REJECTED = 6; + int WAITING_FOR_RESPONSE = 7; +} diff --git a/java/com/android/incallui/videotech/utils/VideoUtils.java b/java/com/android/incallui/videotech/utils/VideoUtils.java new file mode 100644 index 000000000..527654030 --- /dev/null +++ b/java/com/android/incallui/videotech/utils/VideoUtils.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2015 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.incallui.videotech.utils; + +import android.content.Context; +import android.content.pm.PackageManager; +import android.support.annotation.NonNull; +import android.support.v4.content.ContextCompat; +import com.android.dialer.util.DialerUtils; + +public class VideoUtils { + + private static final String PREFERENCE_CAMERA_ALLOWED_BY_USER = "camera_allowed_by_user"; + + public static boolean hasSentVideoUpgradeRequest(@SessionModificationState int state) { + return state == SessionModificationState.WAITING_FOR_UPGRADE_TO_VIDEO_RESPONSE + || state == SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_FAILED + || state == SessionModificationState.REQUEST_REJECTED + || state == SessionModificationState.UPGRADE_TO_VIDEO_REQUEST_TIMED_OUT; + } + + public static boolean hasReceivedVideoUpgradeRequest(@SessionModificationState int state) { + return state == SessionModificationState.RECEIVED_UPGRADE_TO_VIDEO_REQUEST; + } + + public static boolean hasCameraPermissionAndAllowedByUser(@NonNull Context context) { + return isCameraAllowedByUser(context) && hasCameraPermission(context); + } + + public static boolean hasCameraPermission(@NonNull Context context) { + return ContextCompat.checkSelfPermission(context, android.Manifest.permission.CAMERA) + == PackageManager.PERMISSION_GRANTED; + } + + public static boolean isCameraAllowedByUser(@NonNull Context context) { + return DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context) + .getBoolean(PREFERENCE_CAMERA_ALLOWED_BY_USER, false); + } + + public static void setCameraAllowedByUser(@NonNull Context context) { + DialerUtils.getDefaultSharedPreferenceForDeviceProtectedStorageContext(context) + .edit() + .putBoolean(PREFERENCE_CAMERA_ALLOWED_BY_USER, true) + .apply(); + } +} |