1 /**
2  * Copyright (c) 2016, 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 android.service.vr;
18 
19 import android.app.Vr2dDisplayProperties;
20 import android.content.ComponentName;
21 import android.service.vr.IVrStateCallbacks;
22 import android.service.vr.IPersistentVrStateCallbacks;
23 
24 /** @hide */
25 interface IVrManager {
26 
27     /**
28      * Add a callback to be notified when VR mode state changes.
29      *
30      * @param cb the callback instance to add.
31      */
registerListener(in IVrStateCallbacks cb)32     void registerListener(in IVrStateCallbacks cb);
33 
34     /**
35      * Remove the callack from the current set of registered callbacks.
36      *
37      * @param cb the callback to remove.
38      */
unregisterListener(in IVrStateCallbacks cb)39     void unregisterListener(in IVrStateCallbacks cb);
40 
41     /**
42      * Add a callback to be notified when persistent VR mode state changes.
43      *
44      * @param cb the callback instance to add.
45      */
registerPersistentVrStateListener(in IPersistentVrStateCallbacks cb)46     void registerPersistentVrStateListener(in IPersistentVrStateCallbacks cb);
47 
48     /**
49      * Remove the callack from the current set of registered callbacks.
50      *
51      * @param cb the callback to remove.
52      */
unregisterPersistentVrStateListener(in IPersistentVrStateCallbacks cb)53     void unregisterPersistentVrStateListener(in IPersistentVrStateCallbacks cb);
54 
55     /**
56      * Return current VR mode state.
57      *
58      * @return {@code true} if VR mode is enabled.
59      */
getVrModeState()60     boolean getVrModeState();
61 
62     /**
63      * Returns the current Persistent VR mode state.
64      *
65      * @return {@code true} if Persistent VR mode is enabled.
66      */
getPersistentVrModeEnabled()67     boolean getPersistentVrModeEnabled();
68 
69     /**
70      * Sets the persistent VR mode state of a device. When a device is in persistent VR mode it will
71      * remain in VR mode even if the foreground does not specify VR mode being enabled. Mainly used
72      * by VR viewers to indicate that a device is placed in a VR viewer.
73      *
74      * @param enabled true if the device should be placed in persistent VR mode.
75      */
setPersistentVrModeEnabled(in boolean enabled)76     void setPersistentVrModeEnabled(in boolean enabled);
77 
78     /**
79      * Sets the resolution and DPI of the vr2d virtual display used to display
80      * 2D applications in VR mode.
81      *
82      * <p>Requires {@link android.Manifest.permission#ACCESS_VR_MANAGER} permission.</p>
83      *
84      * @param vr2dDisplayProperties Vr2d display properties to be set for
85      * the VR virtual display
86      */
setVr2dDisplayProperties( in Vr2dDisplayProperties vr2dDisplayProperties)87     void setVr2dDisplayProperties(
88             in Vr2dDisplayProperties vr2dDisplayProperties);
89 
90     /**
91      * Return current virtual display id.
92      *
93      * @return {@link android.view.Display.INVALID_DISPLAY} if there is no virtual display
94      * currently, else return the display id of the virtual display
95      */
getVr2dDisplayId()96     int getVr2dDisplayId();
97 
98     /**
99      * Set the component name of the compositor service to bind.
100      *
101      * @param componentName flattened string representing a ComponentName of a Service in the
102      * application's compositor process to bind to, or null to clear the current binding.
103      */
setAndBindCompositor(in String componentName)104     void setAndBindCompositor(in String componentName);
105 
106     /**
107      * Sets the current standby status of the VR device. Standby mode is only used on standalone vr
108      * devices. Standby mode is a deep sleep state where it's appropriate to turn off vr mode.
109      *
110      * @param standy True if the device is entering standby, false if it's exiting standby.
111      */
setStandbyEnabled(boolean standby)112     void setStandbyEnabled(boolean standby);
113 
114     /**
115      * Start VR Input method for the given packageName in {@param componentName}.
116      * This method notifies InputMethodManagerService to use VR IME instead of
117      * regular phone IME.
118      */
setVrInputMethod(in ComponentName componentName)119     void setVrInputMethod(in ComponentName componentName);
120 
121 }
122 
123