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