7 API接口函数一览¶
7.1 Unity相关¶
7.1 Unity相关 请参考 UnityXR官方 提供的相关API,目前支持如下模块:XRDisplaySubsystem 、XRInputSubsystem 、XRNodeState 、XRSettings 、XRStats。
7.2 手柄相关¶
PXR_input:手柄接口类。
图7.1 Input脚本
IsControllerConnected¶
函数名:public static bool IsControllerConnected(Controller controller)
功能:获取手柄连接状态
参数:
- Controller controller:枚举值
public enum Controller
{
LeftController, // 左手柄
RightController, // 右手柄
}
返回值:bool值,true-已连接,false-未连接
调用方式:PXR_Input.IsControllerConnected(controller);
SetControllerVibration¶
函数名:public static void SetControllerVibration(float strength, int time, Controller controller)
功能:使指定手柄按照指定时长、指定强度进行震动。若要中途停止震动,再次调用该接口并传入strength=0。
参数:
float strength:震动强度:0-1
- int time:震动持续时间,0-65535毫秒
- Controller controller: 枚举值
public enum Controller
{
LeftController, // 左手柄
RightController, // 右手柄
}
返回值:无
调用方式:PXR_Input.SetControllerVibration(strength, time, controller);
GetControllerPredictPosition¶
函数名:public static Vector3 GetControllerPredictPosition(Controller controller, double predictTime)
功能:获取预测的指定手柄在指定时间后的位置
参数:
- Controller controller:枚举值
public enum Controller
{
LeftController, // 左手柄
RightController, // 右手柄
}
- double predictTime:预测时间(单位毫秒)
返回值:Vector3类型的位置数据
调用方式:PXR_Input.GetControllerPredictPosition(controller, predictTime);
GetControllerPredictRotation¶
函数名:public static Quaternion GetControllerPredictRotation(Controller controller, float predictTime)
功能:获取预测的指定手柄在指定时间后的位置旋转四元数
参数:
- Controller controller: 枚举值
public enum Controller
{
LeftController, // 左手柄
RightController, // 右手柄
}
- double predictTime:预测时间(单位毫秒)
返回值:Quaternion类型的旋转角度数据
调用方式:PXR_Input.GetControllerPredictRotation(controller, predictTime);
SetControllerOriginOffset¶
函数名:public static void SetControllerOriginOffset(Controller controller, Vector3 offset)
功能:设置手柄显示位置相对于手柄真实位置的偏移值
参数:
- Controller controller:枚举值
public enum Controller
{
LeftController, // 左手柄
RightController, // 右手柄
}
- Vector3 offset:位置偏移值(单位米)
返回值:无
调用方式:PXR_Input.SetControllerOriginOffset(controller, offset);
7.3 眼球追踪相关¶
由于只有Neo3 Pro Eye版本的头戴才具有眼球追踪功能,故本节只适用于Neo3 Pro Eye设备。
GetCombineEyeGazePoint¶
函数名:public static bool GetCombineEyeGazePoint(out Vector3 point)
功能:获取左右眼当前共同注视点的位置值
参数:
- out Vector3 point:接收获取到的注视点的坐标
返回值:bool值,true-获取成功,false-获取失败
调用方式: PXR_EyeTracking.GetCombineEyeGazePoint(out Vector3 vector);
GetCombineEyeGazeVector¶
函数名:public static bool GetCombineEyeGazeVector(out Vector3 vector)
功能:获取左右眼当前共同的注视方向(即从双眼的中间点到注视点的向量)
参数:
- out Vector3 vector:接收获取到的注视方向
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetCombineEyeGazeVector(out Vector3 vector);
GetLeftEyeGazeOpenness¶
函数名:public static bool GetLeftEyeGazeOpenness(out float openness)
功能:获取左眼当前的睁闭程度
参数:
- out float openness:0-完全闭眼,1-睁眼
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetLeftEyeGazeOpenness(out float openness);
GetRightEyeGazeOpenness¶
函数名:public static bool GetRightEyeGazeOpenness(out float openness)
功能:获取右眼当前的睁闭程度
参数:
- out float openness:0-完全闭眼,1-睁眼
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetRightEyeGazeOpenness(out float openness);
GetLeftEyePoseStatus¶
函数名:public static bool GetLeftEyePoseStatus(out uint status)
功能:获取当前左眼的数据是否可用
参数:
- out uint status:接收返回的int值,0-数据不可用,1-数据可用
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetLeftEyePoseStatus(out uint status);
GetRightEyePoseStatus¶
函数名:public static bool GetRightEyePoseStatus(out uint status)
功能:获取当前右眼的数据是否可用
参数:
- out uint status:接收返回的int值,0-数据不可用,1-数据可用
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetRightEyePoseStatus(out uint status);
GetCombinedEyePoseStatus¶
函数名:public static bool GetCombinedEyePoseStatus(out uint status)
功能:获取当前左右眼混合的数据是否可用
参数:
- out uint status:接收返回的int值,0-数据不可用,1-数据可用
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetCombinedEyePoseStatus(out uint status);
代码示例:
private enum pvrEyePoseStatus
{
gazePointValid = (1 << 0),
gazeVectorValid = (1 << 1),
eyeOpennessValid = (1 << 2),
eyePupilDilationValid = (1 << 3),
eyePositionGuideValid = (1 << 4)
};
private void GetEyeTrackingGazeRay(ref EyeTrackingGazeRay gazeRay)
{
PXR_EyeTracking.GetCombinedEyePoseStatus(out combinedStatus);
PXR_EyeTracking.GetCombineEyeGazeVector(out combinedGazeVector);
PXR_EyeTracking.GetCombineEyeGazePoint(out combinedGazePoint);
gazeRay.isValid = (combinedStatus & (int)pvrEyePoseStatus.gazePointValid) != 0 && (combinedStatus & (int)pvrEyePoseStatus.gazeVectorValid) != 0;
if (gazeRay.isValid)
{
gazeRay.direction = combinedGazeVector;
gazeRay.origin = combinedGazePoint;
gazeRay.origin = Matrix.MultiplyPoint(gazeRay.origin);
gazeRay.direction = Matrix.MultiplyVector(gazeRay.direction);
}
}
GetLeftEyePositionGuide¶
函数名:public static bool GetLeftEyePositionGuide(out Vector3 position)
功能:获取左眼当前的位置指引:以sensor的右上角位为原点(0,0)生成一个坐标系,其中左下角坐标为(1,1),获取到眼球在这个坐标系中的位置。
- 参数:
- out Vector3 position:接收获取到的位置
返回值:bool值,true-获取成功,false-获取失败
调用方式: PXR_EyeTracking.GetLeftEyePositionGuide(out Vector3 position);
GetRightEyePositionGuide¶
函数名:public static bool GetRightEyePositionGuide(out Vector3 position)
功能:获取右眼当前的位置指引:以sensor的右上角位为原点(0,0)生成一个坐标系,其中左下角坐标为(1,1),获取到眼球在这个坐标系中的位置。
参数:
- out Vector3 position:接收获取到的位置
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetRightEyePositionGuide(out Vector3 position);
GetFoveatedGazeDirection¶
函数名:public static bool GetFoveatedGazeDirection(out Vector3 direction)
功能:获取注视点渲染(FFR的中心点)的视线方向,有关FFR描述请参考相关章节
- 参数:
- out Vector3 direction:接收获取到的视线方向
返回值:bool值,true-获取成功,false-获取失败
调用方式:PXR_EyeTracking.GetFoveatedGazeDirection(out Vector3 direction);
7.4 注视点渲染FFR相关¶
PXR_FoveationRendering:注视点渲染接口类。
图7.2 注视点渲染脚本
GetFoveationLevel¶
函数名:public static FoveationLevel GetFoveationLevel()
功能:获取当前的注视点渲染级别
参数:无
返回值:枚举值
public enum FoveationLevel
{
None = -1, // 关闭
Low,
Med,
High,
TopHigh
}
调用方式:PXR_FoveationRendering.GetFoveationLevel();
SetFoveationLevel¶
函数名:public static void SetFoveationLevel(FoveationLevel level)
功能:设置注视点渲染级别
参数:
- FoveationLevel level
public enum FoveationLevel
{
None = -1, // 关闭
Low,
Med,
High,
TopHigh
}
返回值:无
调用方式:PXR_FoveationRendering.SetFoveationLevel(level);
SetFoveationParameters¶
函数名:public static void SetFoveationParameters(float foveationGainX, float foveationGainY, float foveationArea, float foveationMinimum)
功能:设置当前注视点渲染参数
参数:
float foveationGainX/Y:X/Y轴方向外围像素的缩减率,值越大缩减越多,范围1.0-10.0
- float foveationArea:注视点周围不降分辨率的范围,值越大,中心清晰区域越大,范围0.0-4.0
- float foveationMinimum:默认最小像素密度,实际像素密度将大于等于foveationMinimum,一般为1/32、1/16、1/8、1/4、1/2
返回值:无
调用方式:PXR_FoveationRendering.SetFoveationParameters(foveationGainX, foveationGainY, foveationArea, foveationMinimum);
7.5 安全区防护边界相关¶
PXR_Boundary:安全区接口类。
图7.3 安全区脚本
GetEnabled¶
函数名:public static bool GetEnabled()
功能:获取当前安全区防护系统是否开启
参数:无
返回值:bool值,true-开启,false-关闭
调用方式:PXR_Boundary.GetEnabled();
GetConfigured¶
函数名:public static bool GetConfigured()
功能:获取当前安全区防护系统是否配置成功,配置后才可正常使用安全区的相关接口
参数:无
返回值:bool值,true-已配置成功,false-配置失败
调用方式:PXR_Boundary.GetConfigured();
SetVisible¶
函数名:public static void SetVisible(bool value)
功能:强制设置安全区防护边界是否可见(注意:安全区正常触发或用户通过系统设置安全区将会覆盖该接口的操作)
参数:
- bool value:true-可见,false-不可见
返回值:无
调用方式:PXR_Boundary.SetVisible(value);
GetVisible¶
函数名:public static bool GetVisible()
功能:获取安全区防护边界是否可见
参数:无
返回值:bool值,true-安全区可见,false-不可见
调用方式:PXR_Boundary.GetVisible();
TestNode¶
函数名:public static PxrBoundaryTriggerInfo TestNode(BoundaryTrackingNode node, BoundaryType boundaryType)
功能:返回追踪节点对指定边界类型的测试结果
参数:
- BoundaryTrackingNode node:追踪节点,枚举值
public enum BoundaryTrackingNode
{
HandLeft, // 左手柄
HandRight, // 右手柄
Head // 头戴
}
- BoundaryType boundaryType:边界类型,枚举值
public enum BoundaryType
{
OuterBoundary, // 安全区(即原地快速安全区或自定义安全区)
PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形)
}
返回值:PxrBoundaryTriggerInfo测试结果结构体
public struct PxrBoundaryTriggerInfo
{
public bool IsTriggering; // 是否触发边界
public float ClosestDistance; // 追踪节点与边界的最近距离
public PxrVector3f ClosestPoint; // 追踪节点与边界的最近点位置
public PxrVector3f ClosestPointNormal; // 最近点法线
public bool valid; // true: 该结果有效,false:无效
}
调用方式:PXR_Boundary.TestNode(node, boundaryType);
TestPoint¶
函数名:public static PxrBoundaryTriggerInfo TestPoint(PxrVector3f point, BoundaryType boundaryType)
功能:返回指定的3D点坐标对指定的边界类型的测试结果
参数:
PxrVector3f point:3D点坐标
- BoundaryType boundaryType:边界类型,枚举值
public enum BoundaryType
{
OuterBoundary, // 安全区(即原地快速安全区或自定义安全区)
PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形)
}
返回值:PxrBoundaryTriggerInfo 测试结果结构体
public struct PxrBoundaryTriggerInfo
{
public bool IsTriggering; // 是否触发边界
public float ClosestDistance; // 追踪节点与边界的最近距离
public PxrVector3f ClosestPoint; // 追踪节点与边界的最近点位置
public PxrVector3f ClosestPointNormal; // 最近点法线
public bool valid; // true: 该结果有效,false:无效
}
调用方式:PXR_Boundary.TestPoint(point, boundaryType);
GetGeometry¶
函数名:public static Vector3[] GetGeometry(BoundaryType boundaryType)
功能:返回安全区边界的点的集合
参数:
- BoundaryType boundaryType:边界类型,枚举值
public enum BoundaryType
{
OuterBoundary, // 安全区(即原地快速安全区或自定义安全区)
PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形)
}
返回值:Vector3[]:该类型边界点的集合
调用方式:PXR_Boundary.GetGeometry(boundaryType);
GetDimensions¶
函数名:public static Vector3 GetDimensions(BoundaryType boundaryType)
功能:获取自定义安全边界PlayArea的尺寸
参数:
- BoundaryType boundaryType:边界类型,枚举值
public enum BoundaryType
{
OuterBoundary, // 安全区(即原地快速安全区或自定义安全区)
PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形)
}
返回值:Vector3类型,x:PlayArea长边,y:恒为1,z:PlayArea短边。由于原地安全区无此矩形,所以结果为(0, 0, 0)
调用方式:PXR_Boundary.GetDimensions(boundaryType);
GetDialogState¶
函数名:public static int GetDialogState()
功能:获取Boundary对话框状态(即弹出对话框的原因)
参数:无
返回值:int类型
数值 | 状态 | 说明 |
---|---|---|
-1 | NothingDialog | 定位追踪关闭时,无Dialog |
0 | GobackDialog | 头戴离开安全区时显示,回到安全区内消失 |
1 | ToofarDialog | 头戴离开安全区超过了3米 |
2 | LostDialog | 预留UI,系统配置当6Dof丢失时不显示原因,只显示该UI |
3 | LostNoReason | 6Dof丢失,但系统未上报原因 |
4 | LostCamera | 摄像头校准数据错误,引起6Dof丢失 |
5 | LostHighLight | 环境光过亮 |
6 | LostLowLight | 环境光过暗 |
7 | LostLowFeatureCount | 环境特征点少 |
8 | LostReLocation | 系统正在恢复定位追踪,此时系统处于6Dof丢失状态 |
调用方式:PXR_Boundary.GetDialogState();
7.6 SeeThrough Camera相关¶
EnableSeeThroughManual¶
函数名:public static void EnableSeeThroughManual(bool value)
功能:获取设备的相机画面并作为环境背景
参数:
- bool value:是否SeeThrough开启,true开启,false关闭
返回值:无
调用方式:PXR_Boundary.EnableSeeThroughManual(value);
调用前置条件:
- Camera 的clear flags 设置为solid color
- Camera 的background 颜色alpha通道设置为0
7.7 设备相关¶
注意: 在使用电量音量亮度等服务前请首先调用接口InitAudioDevice进行初始化。
InitAudioDevice¶
函数名:public static bool InitAudioDevice()
功能:初始化音量设备
参数:无
返回值:bool值,true-初始化成功,false-初始化失败
调用方式:PXR_System.InitAudioDevice();
StartAudioReceiver¶
函数名:public static bool StartAudioReceiver(string objName)
功能:开启音量服务
参数:
- string objName:开启音量服务的gameobject名字
返回值:bool值,true-开启服务成功,false-开启服务失败
调用方式:PXR_System.StartAudioReceiver(objName);
setAudio¶
函数名:public void setAudio(string s)
功能:音量发生变化时的回调。
参数:
- string s:当前音量
返回值:无
调用方式:可在此方法内直接增加逻辑或者使用delegate来调用
StopAudioReceiver¶
函数名:public static bool StopAudioReceiver()
功能:关闭音量服务
参数:无
返回值:bool值,true-关闭服务成功,false-关闭服务失败
调用方式:PXR_System.StopAudioReceiver();
StartBatteryReceiver¶
函数名:public static bool StartBatteryReceiver(string objName)
功能:开启电量服务
- 参数:
- string objName:开启电量的gameobject名字
返回值:bool值,true-开启服务成功,false-开启服务失败
调用方式:PXR_System.StartBatteryReceiver(objName);
setBattery¶
函数名:public void setBattery(string s)
功能:电量发生变化时的回调。
参数:
- string s:当前的电量(范围是0.00-1.00)
返回值:无
调用方式:可在此方法内直接增加逻辑或者使用delegate来调用
StopBatteryReceiver¶
函数名:public static bool StopBatteryReceiver()
功能:关闭电量服务
参数:无
返回值:bool值,true-关闭服务成功,false-关闭服务失败
调用方式:PXR_System.StopBatteryReceiver();
VolumeUp¶
函数名:public static bool VolumeUp()
功能:提高音量(需要初始化音量设备:InitAudioDevice)
参数:无
返回值:bool值,true-提高音量成功,false-提高音量失败
调用方式:PXR_System.VolumeUp();
VolumeDown¶
函数名:public static bool VolumeDown()
功能:降低音量(需要初始化音量设备:InitAudioDevice)
参数:无
返回值:bool值,true-降低音量成功,false-降低音量失败
调用方式:PXR_System.VolumeDown();
GetCommonBrightness¶
函数名:public static int GetCommonBrightness()
功能:获取当前设备亮度值
参数:无
返回值:int类型,当前亮度值(范围0-255)
调用方式:PXR_System.GetCommonBrightness();
SetCommonBrightness¶
函数名:public static bool SetCommonBrightness(int brightness)
功能:设置当前通用设备亮度值
参数:
- int brightness:亮度值(范围0-255)
返回值:bool值,true-设置亮度成功,false-设置亮度失败
调用方式:PXR_System.SetCommonBrightness(brightness);
GetPredictedDisplayTime¶
函数名:public static double GetPredictedDisplayTime()
功能:获取上屏的预测时间(从图像生成到上屏的延迟时间)
参数:无
返回值:double类型:时间,单位毫秒
调用方式:PXR_System.GetPredictedDisplayTime();
GetSensorStatus¶
函数名:public static int GetSensorStatus()
功能:获取6dof状态
参数:无
返回值:int类型:值为0/1/3,分别对应null(获取失败)/3dof/6dof
调用方式:PXR_System.GetSensorStatus()
7.8 系统相关¶
通过系统相关接口,开发者可以在Pico企业版设备上获取、设置部分系统配置。
支持设备:Neo 3 Pro系列。
使用本章节接口前,请进行System Service初始化。具体方法如下
初始化并绑定Service,其中objectName为接收回调的物体名称
private void Awake()
{
PXR_System.InitSystemService(objectName);
PXR_System.BindSystemService();
}
解除绑定Service
private void OnDestory()
{
PXR_System.UnBindSystemService();
}
增加4个类型接收回调方法
private void BoolCallback(string value)
{
if (PXR_Plugin.System.BoolCallback != null) PXR_Plugin.System.BoolCallback(bool.Parse(value));
PXR_Plugin.System.BoolCallback = null;
}
private void IntCallback(string value)
{
if (PXR_Plugin.System.IntCallback != null) PXR_Plugin.System.IntCallback(int.Parse(value));
PXR_Plugin.System.IntCallback = null;
}
private void LongCallback(string value)
{
if (PXR_Plugin.System.LongCallback != null) PXR_Plugin.System.LongCallback(int.Parse(value));
PXR_Plugin.System.LongCallback = null;
}
private void StringCallback(string value)
{
if (PXR_Plugin.System.StringCallback != null) PXR_Plugin.System.StringCallback(value);
PXR_Plugin.System.StringCallback = null;
}
调用接口前需确保Service已绑定成功。关于Service绑定成功的回调,请将以下代码添加到初始化的脚本中,绑定Service成功后,此方法会被调用。
public void toBServiceBind(string s)
{
Debug.Log("Bind success.");
}
普通接口¶
图7.4 system脚本
StateGetDeviceInfo¶
函数名:public static string StateGetDeviceInfo(SystemInfoEnum type)
功能:获取设备信息
参数:SystemInfoEnum type:枚举值
public enum SystemInfoEnum
{
ELECTRIC_QUANTITY, // 电量
PUI_VERSION, // PUI版本号
EQUIPMENT_MODEL, // 设备型号
EQUIPMENT_SN, // 设备SN
CUSTOMER_SN, // 客户SN
INTERNAL_STORAGE_SPACE_OF_THE_DEVICE, // 设备存储空间
DEVICE_BLUETOOTH_STATUS, // 蓝牙状态
BLUETOOTH_NAME_CONNECTED, // 蓝牙连接名称
BLUETOOTH_MAC_ADDRESS, // 蓝牙Mac地址
DEVICE_WIFI_STATUS, // WIFI连接状态
WIFI_NAME_CONNECTED, // 已连接WIFI名称
WLAN_MAC_ADDRESS, // WLAN的MAC地址
DEVICE_IP, // 设备IP地址
CHARGING_STATUS // 设备是否充电,充电返回2;未充电返回3
}
返回值:string类型,对应的设备信息
调用方式:PXR_System.StateGetDeviceInfo(SystemInfoEnum.PUI_VERSION);
ControlSetAutoConnectWIFI¶
函数名:public static void ControlSetAutoConnectWIFI(string ssid, string pwd, Action<bool> callback)
功能:连接指定WiFi并将其设置为自动连接。
参数:
ssid:WiFi名称
- pwd:WiFi密码
- Action<bool> callback:是否连接成功的回调
返回值:无
调用方式:PXR_System.ControlSetAutoConnectWIFI(ssid, pwd, callback);
ControlClearAutoConnectWIFI¶
函数名:public static void ControlClearAutoConnectWIFI(Action<bool> callback)
功能:清除已记忆的可自动连接的WiFi
参数:
- Action<bool> callback:是否清除成功的回调
返回值:无
调用方式:PXR_System.ControlClearAutoConnectWIFI(callback);
PropertySetHomeKey¶
函数名:public static void PropertySetHomeKey(HomeEventEnum eventEnum, HomeFunctionEnum function, Action<bool> callback)
功能:自定义Home键功能。会影响系统定义的Home键功能,请开发者酌情使用
参数:
- HomeEventEnum eventEnum
public enum HomeEventEnum
{
SINGLE_CLICK, // 单击
DOUBLE_CLICK // 双击
}
- HomeFunctionEnum function
public enum HomeFunctionEnum
{
VALUE_HOME_GO_TO_SETTING = 0, // 打开设置界面
VALUE_HOME_RECENTER = 2, // 校准
VALUE_HOME_DISABLE = 4, // 禁用HOME建
VALUE_HOME_GO_TO_HOME = 5 // 打开Launcher
}
- Action<bool> callback:设置是否成功的回调
返回值:无
调用方式:PXR_System.PropertySetHomeKey(eventEnum, function, callback);
PropertySetHomeKeyAll¶
函数名:public static void PropertySetHomeKeyAll(HomeEventEnum eventEnum, HomeFunctionEnum function, int timesetup, string pkg, string className, Action<bool> callback)
功能:自定义Home按键扩展功能
参数:
- HomeEventEnum eventEnum
public enum HomeEventEnum
{
SINGLE_CLICK, // 单击
DOUBLE_CLICK // 双击
}
- HomeFunctionEnum function
public enum HomeFunctionEnum
{
VALUE_HOME_GO_TO_SETTING = 0, // 打开设置界面
VALUE_HOME_RECENTER = 2, // 校准
VALUE_HOME_DISABLE = 4, // 禁用HOME建
VALUE_HOME_GO_TO_HOME = 5 // 打开Launcher
}
- int timesetup:只有双击和长按事件有事件才设置按键间隔时间;短按传0即可
- string pkg:传入null
- string className:传入null
- Action<bool> callback:是否设置成功的回调
返回值:无
调用方式:PXR_System.PropertySetHomeKeyAll(eventEnum,function, timesetup, pkg, className, callback);
PropertyDisablePowerKey¶
函数名:public static void PropertyDisablePowerKey(bool isSingleTap, bool enable,Action<int> callback)
功能:自定义Power按键功能
参数:
bool isSingleTap:单击事件-true,长按事件-false
- bool enable:按键使能状态
- Action<int> callback:设置是否成功,0-成功,1-失败,11-电源键长按时间不能超过5秒
返回值:无
调用方式:PXR_System.PropertyDisablePowerKey(isSingleTap, enable,callback);
PropertySetScreenOffDelay¶
函数名:public static void PropertySetScreenOffDelay(ScreenOffDelayTimeEnum timeEnum, Action<int> callback)
功能:设置灭屏的超时时间,设备在未佩戴状态超过此时间后将灭屏
- 参数:
- ScreenOffDelayTimeEnum timeEnum:灭屏超时时间,不能大于系统休眠超时时间。
public enum ScreenOffDelayTimeEnum
{
THREE = 3, // 3秒
TEN = 10, // 10秒
THIRTY = 30, // 30秒
SIXTY = 60, // 60秒
THREE_HUNDRED = 300, // 5分钟
SIX_HUNDRED = 600, // 10分钟
NEVER = -1 // 永不
}
- Action<int> callback:是否设置成功的回调,0-成功,1-失败,10-此时间不能大于休眠时间
返回值:无
调用方式:PXR_System.PropertySetScreenOffDelay(timeEnum,callback);
PropertySetSleepDelay¶
函数名:public static void PropertySetSleepDelay(SleepDelayTimeEnum timeEnum)
功能:设置系统休眠的超时时间,设备在未佩戴状态超过此时间后将进入休眠状态
参数:
- SleepDelayTimeEnum timeEnum:系统休眠超时时间
public enum SleepDelayTimeEnum
{
FIFTEEN = 15, // 15秒
THIRTY = 30, // 30秒
SIXTY = 60, // 1分钟
THREE_HUNDRED = 300, // 5分钟
SIX_HUNDRED = 600, // 10分钟
ONE_THOUSAND_AND_EIGHT_HUNDRED = 1800, // 30分钟
NEVER = -1 // 永不
}
返回值:无
调用方式:PXR_System.PropertySetSleepDelay(timeEnum);
SwitchSystemFunction¶
函数名:public static void SwitchSystemFunction(SystemFunctionSwitchEnum systemFunction, SwitchEnum switchEnum)
功能:常用系统开关设置,将指定systemFunction设置为开启或关闭
参数:
- SystemFunctionSwitchEnum systemFunction:功能类型,枚举值
public enum SystemFunctionSwitchEnum
{
SFS_USB, // USB调试开关
SFS_AUTOSLEEP, // 自动休眠开关
SFS_SCREENON_CHARGING, // 亮屏充电开关
SFS_OTG_CHARGING, // OTG充电开关
SFS_RETURN_MENU_IN_2DMODE, // 2D界面下返回图标显示开关
SFS_COMBINATION_KEY, // 组合键开关
SFS_CALIBRATION_WITH_POWER_ON, // 开机校准开关
SFS_SYSTEM_UPDATE, // 系统升级开关
SFS_CAST_SERVICE, // 手机投屏开关,行业解决方案开关打开时,该属性不生效
SFS_EYE_PROTECTION, // 护眼模式开关
SFS_SECURITY_ZONE_PERMANENTLY, // 6Dof安全区永久关闭开关
SFS_Auto_Calibration, // 自动校准开关
SFS_USB_BOOT, // USB插入启动开关
SFS_VOLUME_UI, // 音量全局UI提示开关
SFS_CONTROLLER_UI, // 手柄连接全局UI提示开关
SFS_NAVGATION_SWITCH, // 打开/关闭导航栏
SFS_SHORTCUT_SHOW_RECORD_UI, // 是否显示录屏按钮
SFS_SHORTCUT_SHOW_FIT_UI, // 是否显示Pico运动UI
SFS_SHORTCUT_SHOW_CAST_UI, // 是否显示投屏按钮
SFS_SHORTCUT_SHOW_CAPTURE_UI, // 是否显示截屏按钮
SFS_STOP_MEM_INFO_SERVICE, // 2D应用杀活开关
SFS_USB_FORCE_HOST // Neo3设备设置为host设备
}
- SwitchEnum switchEnum:是否开启,枚举值
public enum SwitchEnum
{
S_ON, // 开启
S_OFF // 关闭
}
返回值:无
调用方式:PXR_System.SwitchSystemFunction(systemFunction, switchEnum);
SwitchSetUsbConfigurationOption¶
函数名:public static void SwitchSetUsbConfigurationOption(USBConfigModeEnum uSBConfigModeEnum)
功能:设置USB的配置模式(MTP模式或充电模式)
参数:
- USBConfigModeEnum uSBConfigModeEnum:USB配置模式,枚举值
public enum USBConfigModeEnum
{
MTP, // MTP模式
CHARGE // 充电模式
}
返回值:无
调用方式:PXR_System.SwitchSetUsbConfigurationOption(uSBConfigModeEnum);
AcquireWakeLock¶
函数名:public static void AcquireWakeLock()
功能:请求wakelock接口,使系统不会进入睡眠状态。仅支持G2 4K。
参数:无
返回值:无
调用方式:PXR_System.AcquireWakeLock();
ReleaseWakeLock¶
函数名:public static void ReleaseWakeLock()
功能:释放wakelock接口,使系统可以进入睡眠状态。仅支持G2 4K。
参数:无
返回值:无
调用方式:PXR_System. ReleaseWakeLock();
EnableEnterKey¶
函数名:public static void EnableEnterKey()
功能:启用头戴确认键
参数:无
返回值:无
调用方式:PXR_System.EnableEnterKey();
DisableEnterKey¶
函数名:public static void DisableEnterKey()
功能:禁用头戴确认键
参数:无
返回值:无
调用方式:PXR_System.DisableEnterKey();
EnableVolumeKey¶
函数名:public static void EnableVolumeKey()
功能:启用音量键
参数:无
返回值:无
调用方式:PXR_System.EnableVolumeKey();
DisableVolumeKey¶
函数名:public static void DisableVolumeKey()
功能:禁用音量键
参数:无
返回值:无
调用方式:PXR_System.DisableVolumeKey();
EnableBackKey¶
函数名:public static void EnableBackKey()
功能:启用头戴返回键
参数:无
返回值:无
调用方式:PXR_System.EnableBackKey();
DisableBackKey¶
函数名:public static void DisableBackKey()
功能:禁用头戴返回键
参数:无
返回值:无
调用方式:PXR_System.DisableBackKey();
WriteConfigFileToDataLocal¶
函数名:public static void WriteConfigFileToDataLocal(string path, string content, Action<bool> callback)
功能:向/data/local/tmp/目录下写配置文件
参数:
string path:配置文件路径(需传入绝对路径的全名,如:/data/local/tmp/config.txt)
- string content:配置文件内容
- Action<bool> callback:是否成功写入的回调
返回值:无
调用方式:PXR_System.WriteConfigFileToDataLocal(path, content, callback);
ResetAllKeyToDefault¶
函数名:public static void ResetAllKeyToDefault(Action<bool> callback)
功能:恢复默认按键配置
参数:callback:是否成功恢复的回调
返回值:无
调用方式:PXR_System.ResetAllKeyToDefault(callback);
FreezeScreen¶
函数名:public static void FreezeScreen(bool freeze)
功能:把屏幕固定在正前方,屏幕随着头戴转动。仅支持G2 4K。
参数:freeze : true-冻结; false-解除冻结
返回值:无
调用方式:PXR_System.FreezeScreen(true);
OpenMiracast¶
函数名:public static void OpenMiracast()
功能:开启投屏功能
参数:无
返回值:无
调用方式:PXR_System.OpenMiracast();
IsMiracastOn¶
函数名:public static void IsMiracastOn()
功能:获取投屏开启状态
参数:无
返回值:bool值,true-开启,false-关闭
调用方式:PXR_System.IsMiracastOn();
CloseMiracast¶
函数名:public static void CloseMiracast()
功能:关闭投屏功能
参数:无
返回值:无
调用方式:PXR_System.CloseMiracast();
SetWDJsonCallback¶
函数名:public static void SetWDJsonCallback()
功能:设定扫描结果callback,返回json字符串,包含过去连接过设备和扫描出的设备。执行此接口后,StringCallBack才可以被回调到。
参数:无
返回值:无
调用方式:PXR_System.SetWDJsonCallback();
ConnectWifiDisplay¶
函数名:public static void ConnectWifiDisplay(string modelJson)
功能:投屏到指定设备
- 参数:
- string modelJson:Callback返回的WifiDisplayModel
{
"deviceAddress": "e2:37:bf:76:33:c6",
"deviceName": "\u5BA2\u5385\u7684\u5C0F\u7C73\u7535\u89C6",
"isAvailable": "true",
"canConnect": "true",
"isRemembered": "false",
"statusCode": "-1",
"status": "",
"description": ""
}
返回值:无
调用方式:PXR_System.ConnectWifiDisplay(modelJson);
DisConnectWifiDisplay¶
函数名:public static void DisConnectWifiDisplay()
功能:断开投屏
参数:无
返回值:无
调用方式:PXR_System.DisConnectWifiDisplay();
ForgetWifiDisplay¶
函数名:public static void ForgetWifiDisplay(string address)
功能:忘记已连接过设备
参数:string address:设备的MAC地址
返回值:无
调用方式:PXR_System.ForgetWifiDisplay(address);
RenameWifiDisplay¶
函数名:public static void RenameWifiDisplay (string address , string newName)
功能:修改已连接的投屏设备名称(显示在头戴中的名称)
参数:
string address:设备的MAC地址
- string newName:设备新名称
返回值:无
调用方式:PXR_System.RenameWifiDisplay (address,newName);
UpdateWifiDisplays¶
函数名:public static void UpdateWifiDisplays(Action<string> callback)
功能:手动更新可投屏的设备列表
参数:
Action<string> callback:string-可投屏的设备列表
返回值:无
调用方式:PXR_System.UpdateWifiDisplays(callback);
GetConnectedWD¶
函数名:public static string GetConnectedWD()
功能:获取当前连接的设备信息
参数:无
返回值:string类型,当前连接的设备信息
调用方式:PXR_System.GetConnectedWD();
受保护接口¶
注意:调用以下接口需要在manifest里添加以下标签,添加此标签后无法上架Pico Store。
<meta-data android:name="pico_advance_interface" android:value="0"/>
ControlSetDeviceAction¶
函数名:public static void ControlSetDeviceAction(DeviceControlEnum deviceControl, Action<int> callback)
功能:控制设备关机、重启
参数:
- DeviceControlEnum deviceControl:枚举值
public enum DeviceControlEnum
{
DEVICE_CONTROL_REBOOT, // 重启
DEVICE_CONTROL_SHUTDOWN // 关机
}
- Action<int> callback:回调接口,1-关机、重启失败,2-无权限执行此操作
返回值:无
调用方式:PXR_System.ControlSetDeviceAction(deviceControl,callback);
ControlAPPManager¶
函数名:public static void ControlAPPManager(PackageControlEnum packageControl, string path, Action<int> callback)
功能:应用控制静默安装,静默卸载
参数:
- PackageControlEnum packageControl
public enum PackageControlEnum
{
PACKAGE_SILENCE_INSTALL, // 静默安装
PACKAGE_SILENCE_UNINSTALL // 静默卸载
}
- string path:静默安装的安装包路径/静默卸载的应用包名
- Action<int> callback:回调接口, 0-成功,1-失败,2-无权限执行此操作
返回值:无
调用方式:PXR_System.ControlAPPManager(packageControl, “com.foo.bar”,callback);
KillAppsByPidOrPackageName¶
函数名:public static void KillAppsByPidOrPackageName(int[] pids, string[] packageNames)
功能:通过传入应用pid或应用包名方式杀死应用
参数:
int[] pids:应用pid数组,不用时请传入空数组
- string[] packageNames:应用包名数组,不用时请传入空数组
返回值:无
调用方式:PXR_System.KillAppsByPidOrPackageName(pids, packageNames);
KillBackgroundAppsWithWhiteList¶
函数名:public static void KillBackgroundAppsWithWhiteList(string[] packageNames)
功能:清除后台应用,传入的白名单不会被清除
参数:
- string[] packageNames:白名单应用包名数组
返回值:无
调用方式:PXR_System.KillBackgroundAppsWithWhiteList(packageNames);
7.9 成就系统相关¶
准备工作¶
开发者可以从管理中心进入到创建应用阶段,点击创建应用,然后进入相应平台完善应用的相关信息。
开发者在接入成就系统时,需要在开发者平台创建应用并获取相应字符串。
申请流程如下:
- 在 Pico 开发者平台 页点击 成为开发者 按钮。
- 申请成为开发者
- 创建应用
- 4.创建成就信息
点击 查看 进入应用详情页。如果您还没有任何应用,请先 创建应用。
开发者在接入成就系统时,需要在开发者平台创建应用并获取 应用参数,对应流程如下:
在 平台服务 菜单找到并点击 成就。
图7.9.1 开发者平台
在成就页面可以看到您已创建的所有成就。如果您还没有任何成就,请点击 创建。
按要求填写成就的信息。填入的API 名称(即API Name)必须代码中的保持一致。
- 5.成就类型
(1). 简单类型:通过单个事件或目标完成来解锁,无成就进展
(2). 计数器类型:到达指定目标个数时解锁(e.g. 完成5个解锁,target=5)
(3). 位域类型:到达指定范围的指定目标个数时解锁(e.g. 完成指定7个目标中的3个解锁,Target=3,Bitfield Length=7)
- Platform Settings配置应用appid
图7.9.2 Platform Settings面板
AndroidManifest配置详情请参考9.1.4章节
接口调用¶
使用注意事项
请先使用Pico账号登陆设备,再使用成就接口和功能
为了避免由于设备账号切换、退登导致的成就数据出现误差,请在应用Resume()中重新调用一次初始化,以确保应用获取正确的用户登陆信息。
开发调试阶段可以通过以下方式调试和测试
- Logcat
- 通过开发者平台-应用-成就信息页查看数据
Init¶
函数名:public static PXR_Request<PXR_AchievementUpdate> Init()
功能:初始化成就系统
参数:无
返回值:接口调用返回PXR_Request<PXR_AchievementUpdate>类型的消息
调用方式:PXR_ Achievement.Init();
GetAllDefinitions¶
函数名:public static PXR_Request<PXR_AchievementDefinitionList> GetAllDefinitions()
功能:获取所有成就定义信息
参数:无
返回值:接口调用结果PXR_Request<PXR_AchievementDefinitionList>
调用方式:PXR_ Achievement.GetAllDefinitions();
GetAllProgress¶
函数名:public static PXR_Request<PXR_AchievementProgressList> GetAllProgress()
功能:获取所有已修改成就进度信息
参数:无
返回值:接口调用结果PXR_Request<PXR_AchievementProgressList>
调用方式:PXR_ Achievement.GetAllProgress();
GetDefinitionsByName¶
函数名:public static PXR_Request<PXR_AchievementDefinitionList> GetDefinitionsByName(string[] names)
功能:根据name获取成就定义信息
参数:
- string[] names:要获取定义信息的成就apiname数组
返回值:接口调用结果PXR_Request<PXR_AchievementDefinitionList>
调用方式:PXR_ Achievement.GetDefinitionsByName(names);
GetProgressByName¶
函数名:public static PXR_Request<PXR_AchievementProgressList> GetProgressByName(string[] names)
功能:根据name获取成就的解锁进度信息
参数:
- string[] names:要获取定义信息的成就apiname数组
返回值:接口调用结果PXR_Request<PXR_AchievementProgressList>
调用方式:PXR_ Achievement.GetProgressByName(names);
AddCount¶
函数名:public static PXR_Request<PXR_AchievementUpdate> AddCount(string name, long count)
功能:增加计数成就的计数。
参数:
string name:成就apiname
- long count:增加数
返回值:接口调用结果PXR_Request<PXR_AchievementUpdate>
调用方式:PXR_ Achievement.AddCount(name, count);
AddFields¶
函数名:public static PXR_Request<PXR_AchievementUpdate> AddFields(string name, string fields)
功能:在bitfield类型的成就中解锁一点。一旦某个bit被解锁,就不会再被改变。
参数:
string name:成就apiname
- string fields:增加数
返回值:接口调用结果PXR_Request<PXR_AchievementUpdate>
调用方式:PXR_ Achievement.AddFields(name,bitfield);
Unlock¶
函数名:public static PXR_Request<PXR_AchievementUpdate> Unlock(string name)
功能:根据apiname解锁成就
参数:
- string name:成就apiname
返回值:接口调用结果PXR_Request<PXR_AchievementUpdate>
调用方式:PXR_ Achievement.Unlock(name);
GetNextAchievementDefinitionListPage¶
函数名:public static PXR_Request<PXR_AchievementDefinitionList> GetNextAchievementDefinitionListPage(PXR_AchievementDefinitionList list)
功能:获取所有成就定义信息时,若存在多页,获取下一页
参数:
- PXR_AchievementDefinitionList list:要获取成就的列表
返回值:接口调用结果PXR_Request<PXR_AchievementDefinitionList>
调用方式:PXR_ Achievement.GetNextAchievementDefinitionListPage(list);
GetNextAchievementProgressListPage¶
函数名:public static PXR_Request<PXR_AchievementProgressList> GetNextAchievementProgressListPage(PXR_AchievementProgressList list)
功能:获取所有已修改成就进度信息时,若存在多页,获取下一页
参数:无
返回值:接口调用结果
调用方式:PXR_ Achievement.GetNextAchievementProgressListPage(achievementProgressList);
7.10 大空间相关¶
使用场景:将一台头戴创建的安全区,导出给其它头戴使用。支持最大面积10m*10m。
使用流程:用户使用一台头戴创建好地图后,把地图导出、拷贝至其他设备中。其他设备可以共用这一套地图,处于统一坐标系中,且头戴不需要统一真实世界的某一个位置唤醒(头戴在真实世界中任一位置唤醒后,可以识别到地图,且虚拟场景中的位置与真实世界的位置一致,不会以头戴位置为坐标原点)。如下图:
使用大空间功能时,需将PXR_LargeSpaceServes脚本挂载到XR Rig下。并调用以下接口:PXR_Plugin.System.UPxr_SetLargeSpaceEnable(true) 设置当前应用在大空间模式下运行。
注意:
- 使用大空间相关接口需 初始化并绑定Service,具体操作方式请参考 7.8系统相关。
- 大空间功能需要设备系统软件版本为 c000_rf01_bv1.0.1_sv1.192_20211116_b346 及以上。系统软件版本号可以在设备内选项 设置 - 通用 处查看。
图7.10.1 挂载PXR_LargeSpaceServes脚本
SetLargeSpaceEnable¶
函数名:public static void SetLargeSpaceEnable(bool value)
功能:设置当前应用是否支持大空间。
- 参数:
- bool value:true-支持,false-不支持
返回值:无
调用方式:PXR_System.SetLargeSpaceEnable(value);
SwitchLargeSpaceScene¶
函数名:public static void SwitchLargeSpaceScene(bool open, Action<bool> callback)
功能:开关大空间
参数:
bool open:true-开启,false-关闭
- Action<bool> callback:回调函数,true-成功,false-失败。
返回值:无。
调用方式:PXR_System.SwitchLargeSpaceScene(open, callback);
注意事项:在绘制安全区时,请多走动一段时间,确保获取到足够的特征点。
GetSwitchLargeSpaceStatus¶
函数名:public static void GetSwitchLargeSpaceStatus(Action<string> callback)
功能:获取当前大空间状态。
参数:
- Action<string> callback:回调函数,1-打开,0-关闭。
返回值:无。
调用方式:PXR_System.GetSwitchLargeSpaceStatus(Action);
SaveLargeSpaceMaps¶
函数名:public static bool SaveLargeSpaceMaps()
功能:保存大空间地图
参数:无
返回值:bool值,true-成功,false-失败
调用方式:PXR_System.SaveLargeSpaceMaps();
ExportMaps¶
函数名:public static void ExportMaps(Action<bool> callback)
功能:导出地图文件,导出的文件在内部储存/maps/export 路径下
- 参数:
- Action<bool> callback:回调函数,true-成功,false-失败
返回值:无
调用方式:PXR_System.ExportMaps(callback);
ImportMaps¶
函数名:public static void ImportMaps (Action<bool> callback)
功能:导入地图文件,需先将地图文件拷贝到内部存储/maps/文件夹中,再导入。
参数:
- Action<bool> callback:回调函数,true-成功,false-失败
返回值:无
调用方式:PXR_System.ImportMaps(callback);
GetPredictedMainSensorStateNew¶
函数名:public static int GetPredictedMainSensorStateNew(ref PxrSensorState2 sensorState, ref int sensorFrameIndex)
功能:获取固定坐标系下头戴设备的姿态数据。
- 参数:
- ref PxrSensorState2 sensorState
public struct PxrSensorState2
{
public int status; // 0:pose/globalPose的数据不可用
// 1: pose/globalPose只有姿态数据可用
// 3:pose/globalPose位置和姿态数据都可用
public PxrPosef pose; // 头戴的位置和姿态
public PxrPosef globalPose; // 头戴相对于Boundary的位置和姿态
public PxrVector3f angularVelocity; // 角速度
public PxrVector3f linearVelocity; // 线性角速度
public PxrVector3f angularAcceleration; // 角加速度
public PxrVector3f linearAcceleration; // 线性角加速度
public UInt64 poseTimeStampNs; // 取得上述数据的时间(纳秒)
}
- ref int sensorFrameIndex:当前帧对应的Sensor数据的索引
返回值:int类型
返回值 | 说明 |
---|---|
0 | 成功 |
-1 | 其他错误 |
-4 | 输入的指针不能为空 |
-5 | Session未创建 |
调用方式 :PXR_System.GetPredictedMainSensorStateNew(ref sensorState, ref sensorFrameIndex);