1e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk/** 2dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * Copyright (C) 2015 The Android Open Source Project 3dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * 4dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * Licensed under the Apache License, Version 2.0 (the "License"); 5dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * you may not use this file except in compliance with the License. 6dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * You may obtain a copy of the License at 7dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * 8dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * http://www.apache.org/licenses/LICENSE-2.0 9dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * 10dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * Unless required by applicable law or agreed to in writing, software 11dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * distributed under the License is distributed on an "AS IS" BASIS, 12dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * See the License for the specific language governing permissions and 14dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * limitations under the License. 15dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk */ 16dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunkpackage com.android.server.vr; 17dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk 18e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunkimport android.annotation.NonNull; 19e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunkimport android.content.ComponentName; 20e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk 21dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk/** 22e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk * Service for accessing the VR mode manager. 23dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * 24dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * @hide Only for use within system server. 25dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk */ 26dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunkpublic abstract class VrManagerInternal { 27dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk 28dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk /** 29e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk * The error code returned on success. 30e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk */ 31e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk public static final int NO_ERROR = 0; 32e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk 33e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk /** 348f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * Return {@code true} if the given package is the currently bound VrListenerService for the 358f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * given user. 368f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * 378f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * @param packageName The package name to check. 388f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * @param userId the user ID to check the package name for. 398f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * 408f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk * @return {@code true} if the given package is the currently bound VrListenerService. 418f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk */ 428f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk public abstract boolean isCurrentVrListener(String packageName, int userId); 438f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk 448f1d5cbabb3bc4ef61b9c2edc70fcfd5d75efec8Ruben Brunk /** 45dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * Set the current VR mode state. 46af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk * <p/> 47af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk * This may delay the mode change slightly during application transitions to avoid frequently 48af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk * tearing down VrListenerServices unless necessary. 49dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * 50dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk * @param enabled {@code true} to enable VR mode. 51e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk * @param packageName The package name of the requested VrListenerService to bind. 52e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk * @param userId the user requesting the VrListenerService component. 53c7354fe2d4d73808929d2087f2d18ee3d8fa47fcRuben Brunk * @param calling the component currently using VR mode, or null to leave unchanged. 54dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk */ 55e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk public abstract void setVrMode(boolean enabled, @NonNull ComponentName packageName, 56c7354fe2d4d73808929d2087f2d18ee3d8fa47fcRuben Brunk int userId, @NonNull ComponentName calling); 57dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk 58af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk /** 59040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * Set whether the system has acquired a sleep token. 60af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk * 61040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * @param isAsleep is {@code true} if the device is asleep, or {@code false} otherwise. 62af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk */ 63040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk public abstract void onSleepStateChanged(boolean isAsleep); 64af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk 65040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk /** 66040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * Set whether the display used for VR output is on. 67040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * 68040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * @param isScreenOn is {@code true} if the display is on and can receive commands, 69040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * or {@code false} otherwise. 70040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk */ 71040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk public abstract void onScreenStateChanged(boolean isScreenOn); 72af9f004f99d81bdc81a05e179ff04d6b3fcb1041Ruben Brunk 73040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk /** 74040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * Return NO_ERROR if the given package is installed on the device and enabled as a 75040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * VrListenerService for the given current user, or a negative error code indicating a failure. 76040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * 77040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * @param packageName the name of the package to check, or null to select the default package. 78040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * @return NO_ERROR if the given package is installed and is enabled, or a negative error code 79040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk * given in {@link android.service.vr.VrModeException} on failure. 80040484cf902d70d7c4b5af8f35cbf33f5c3ef4a7Ruben Brunk */ 81e24b9a6cfa4d565d7f49c9ae8f3aeca737d93312Ruben Brunk public abstract int hasVrPackage(@NonNull ComponentName packageName, int userId); 82dd18a0b69537954d1cc34929a1386deb54f12b14Ruben Brunk} 83