.. _7 API接口函数一览: 7 API接口函数一览 =============================== 7.1 Unity相关 ------------------------------ 7.1 Unity相关 请参考 `UnityXR官方`_ 提供的相关API,目前支持如下模块:`XRDisplaySubsystem`_ 、`XRInputSubsystem`_ 、`XRNodeState`_ 、`XRSettings`_ 、`XRStats`_。 .. _UnityXR官方: https://docs.unity3d.com/Manual/VRReference.html .. _XRDisplaySubsystem: https://docs.unity3d.com/Manual/xrsdk-display.html .. _XRInputSubsystem: https://docs.unity3d.com/Manual/xrsdk-input.html .. _XRNodeState: https://docs.unity3d.com/ScriptReference/XR.XRNodeState.html .. _XRSettings: https://docs.unity3d.com/ScriptReference/XR.XRSettings.html .. _XRStats: https://docs.unity3d.com/ScriptReference/XR.XRStats.html 7.2 手柄相关 ------------------------------ **PXR_input:手柄接口类。** .. image:: _static/7.1.png 图7.1 Input脚本 IsControllerConnected ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static bool IsControllerConnected(Controller controller) **功能**:获取手柄连接状态 **参数**: - Controller controller:枚举值 .. code-block:: C# 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: 枚举值 .. code-block:: C# public enum Controller { LeftController, // 左手柄 RightController, // 右手柄 } **返回值**:无 **调用方式**:PXR_Input.SetControllerVibration(strength, time, controller); GetControllerPredictPosition ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static Vector3 GetControllerPredictPosition(Controller controller, double predictTime) **功能**:获取预测的指定手柄在指定时间后的位置 **参数**: - Controller controller:枚举值 .. code-block:: C# public enum Controller { LeftController, // 左手柄 RightController, // 右手柄 } - double predictTime:预测时间(单位毫秒) **返回值**:Vector3类型的位置数据 **调用方式**:PXR_Input.GetControllerPredictPosition(controller, predictTime); GetControllerPredictRotation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static Quaternion GetControllerPredictRotation(Controller controller, float predictTime) **功能**:获取预测的指定手柄在指定时间后的位置旋转四元数 **参数**: - Controller controller: 枚举值 .. code-block:: C# public enum Controller { LeftController, // 左手柄 RightController, // 右手柄 } - double predictTime:预测时间(单位毫秒) **返回值**:Quaternion类型的旋转角度数据 **调用方式**:PXR_Input.GetControllerPredictRotation(controller, predictTime); SetControllerOriginOffset ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void SetControllerOriginOffset(Controller controller, Vector3 offset) **功能**:设置手柄显示位置相对于手柄真实位置的偏移值 **参数**: - Controller controller:枚举值 .. code-block:: C# 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); 代码示例: .. code-block:: C# 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:注视点渲染接口类。** .. image:: _static/7.2.png 图7.2 注视点渲染脚本 GetFoveationLevel ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static FoveationLevel GetFoveationLevel() **功能**:获取当前的注视点渲染级别 **参数**:无 **返回值**:枚举值 .. code-block:: C# public enum FoveationLevel { None = -1, // 关闭 Low, Med, High, TopHigh } **调用方式**:PXR_FoveationRendering.GetFoveationLevel(); SetFoveationLevel ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void SetFoveationLevel(FoveationLevel level) **功能**:设置注视点渲染级别 **参数**: - FoveationLevel level .. code-block:: C# 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:安全区接口类。** .. image:: _static/7.3.1.png 图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:追踪节点,枚举值 .. code-block:: C# public enum BoundaryTrackingNode { HandLeft, // 左手柄 HandRight, // 右手柄 Head // 头戴 } - BoundaryType boundaryType:边界类型,枚举值 .. code-block:: C# public enum BoundaryType { OuterBoundary, // 安全区(即原地快速安全区或自定义安全区) PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形) } **返回值**:PxrBoundaryTriggerInfo测试结果结构体 .. code-block:: C# 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:边界类型,枚举值 .. code-block:: C# public enum BoundaryType { OuterBoundary, // 安全区(即原地快速安全区或自定义安全区) PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形) } **返回值**:PxrBoundaryTriggerInfo 测试结果结构体 .. code-block:: C# 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:边界类型,枚举值 .. code-block:: C# public enum BoundaryType { OuterBoundary, // 安全区(即原地快速安全区或自定义安全区) PlayArea // 自定义安全区边界的最大内接矩形(原地快速安全区无此矩形) } **返回值**:Vector3[]:该类型边界点的集合 **调用方式**:PXR_Boundary.GetGeometry(boundaryType); GetDimensions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static Vector3 GetDimensions(BoundaryType boundaryType) **功能**:获取自定义安全边界PlayArea的尺寸 **参数**: - BoundaryType boundaryType:边界类型,枚举值 .. code-block:: C# 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 PassThroughSystem ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **功能**:获取设备的相机成像 **调用方式**:参考 8.9章 PassThrough 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(); GetMaxVolumeNumber ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static int GetMaxVolumeNumber() **功能**:获取最大音量值(需要初始化音量设备:InitAudioDevice) **参数**:无 **返回值**:int类型,最大音量值 **调用方式**:PXR_System.GetMaxVolumeNumber(); GetCurrentVolumeNumber ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static int GetCurrentVolumeNumber() **功能**:获取当前音量值(需要初始化音量设备:InitAudioDevice) **参数**:无 **返回值**:int类型,当前音量值值(范围0-15) **调用方式**:PXR_System.GetCurrentVolumeNumber() VolumeUp ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static bool VolumeUp() **功能**:提高音量(需要初始化音量设备:InitAudioDevice) **参数**:无 **返回值**:bool值,true-提高音量成功,false-提高音量失败 **调用方式**:PXR_System.VolumeUp(); VolumeDown ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static bool VolumeDown() **功能**:降低音量(需要初始化音量设备:InitAudioDevice) **参数**:无 **返回值**:bool值,true-降低音量成功,false-降低音量失败 **调用方式**:PXR_System.VolumeDown(); SetVolumeNum ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static bool SetVolumeNum(int volume) **功能**:设置音量为指定值(需要初始化音量设备:InitAudioDevice) **参数**:int volume:设置的音量数值(范围0-15) **返回值**: - bool值,true-设置音量成功,false-设置音量失败 **调用方式**:PXR_System.SetVolumeNum(volume); 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为接收回调的物体名称** .. code-block:: C# private void Awake() { PXR_System.InitSystemService(objectName); PXR_System.BindSystemService(); } **解除绑定Service** .. code-block:: C# private void OnDestory() { PXR_System.UnBindSystemService(); } **增加4个类型接收回调方法** .. code-block:: C# 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成功后,此方法会被调用。 .. code-block:: C# public void toBServiceBind(string s) { Debug.Log("Bind success."); } 普通接口 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ .. image:: _static/7.4.png 图7.4 system脚本 StateGetDeviceInfo ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static string StateGetDeviceInfo(SystemInfoEnum type) **功能**:获取设备信息 **参数**:SystemInfoEnum type:枚举值 .. code-block:: C# 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 callback) **功能**:连接指定WiFi并将其设置为自动连接。 **参数**: - ssid:WiFi名称 - pwd:WiFi密码 - Action callback:是否连接成功的回调 **返回值**:无 **调用方式**:PXR_System.ControlSetAutoConnectWIFI(ssid, pwd, callback); ControlClearAutoConnectWIFI ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ControlClearAutoConnectWIFI(Action callback) **功能**:清除已记忆的可自动连接的WiFi **参数**: - Action callback:是否清除成功的回调 **返回值**:无 **调用方式**:PXR_System.ControlClearAutoConnectWIFI(callback); PropertySetHomeKey ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void PropertySetHomeKey(HomeEventEnum eventEnum, HomeFunctionEnum function, Action callback) **功能**:自定义Home键功能。会影响系统定义的Home键功能,请开发者酌情使用 **参数**: - HomeEventEnum eventEnum .. code-block:: C# public enum HomeEventEnum { SINGLE_CLICK, // 单击 DOUBLE_CLICK // 双击 } - HomeFunctionEnum function .. code-block:: C# 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 callback:设置是否成功的回调 **返回值**:无 **调用方式**:PXR_System.PropertySetHomeKey(eventEnum, function, callback); PropertySetHomeKeyAll ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void PropertySetHomeKeyAll(HomeEventEnum eventEnum, HomeFunctionEnum function, int timesetup, string pkg, string className, Action callback) **功能**:自定义Home按键扩展功能 **参数**: - HomeEventEnum eventEnum .. code-block:: C# public enum HomeEventEnum { SINGLE_CLICK, // 单击 DOUBLE_CLICK // 双击 } - HomeFunctionEnum function .. code-block:: C# 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 callback:是否设置成功的回调 **返回值**:无 **调用方式**:PXR_System.PropertySetHomeKeyAll(eventEnum,function, timesetup, pkg, className, callback); PropertyDisablePowerKey ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void PropertyDisablePowerKey(bool isSingleTap, bool enable,Action callback) **功能**:自定义Power按键功能 **参数**: - bool isSingleTap:单击事件-true,长按事件-false - bool enable:按键使能状态 - Action callback:设置是否成功,0-成功,1-失败,11-电源键长按时间不能超过5秒 **返回值**:无 **调用方式**:PXR_System.PropertyDisablePowerKey(isSingleTap, enable,callback); PropertySetScreenOffDelay ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void PropertySetScreenOffDelay(ScreenOffDelayTimeEnum timeEnum, Action callback) **功能**:设置灭屏的超时时间,设备在未佩戴状态超过此时间后将灭屏 **参数**: - ScreenOffDelayTimeEnum timeEnum:灭屏超时时间,不能大于系统休眠超时时间。 .. code-block:: C# 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 callback:是否设置成功的回调,0-成功,1-失败,10-此时间不能大于休眠时间 **返回值**:无 **调用方式**:PXR_System.PropertySetScreenOffDelay(timeEnum,callback); PropertySetSleepDelay ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void PropertySetSleepDelay(SleepDelayTimeEnum timeEnum) **功能**:设置系统休眠的超时时间,设备在未佩戴状态超过此时间后将进入休眠状态 **参数**: - SleepDelayTimeEnum timeEnum:系统休眠超时时间 .. code-block:: C# 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:功能类型,枚举值 .. code-block:: C# 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:是否开启,枚举值 .. code-block:: C# public enum SwitchEnum { S_ON, // 开启 S_OFF // 关闭 } **返回值**:无 **调用方式**:PXR_System.SwitchSystemFunction(systemFunction, switchEnum); SwitchSetUsbConfigurationOption ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void SwitchSetUsbConfigurationOption(USBConfigModeEnum uSBConfigModeEnum) **功能**:设置USB的配置模式(MTP模式或充电模式) **参数**: - USBConfigModeEnum uSBConfigModeEnum:USB配置模式,枚举值 .. code-block:: C# 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 callback) **功能**:向/data/local/tmp/目录下写配置文件 **参数**: - string path:配置文件路径(需传入绝对路径的全名,如:/data/local/tmp/config.txt) - string content:配置文件内容 - Action callback:是否成功写入的回调 **返回值**:无 **调用方式**:PXR_System.WriteConfigFileToDataLocal(path, content, callback); ResetAllKeyToDefault ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ResetAllKeyToDefault(Action 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(); StartScan ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void StartScan() **功能**:开始扫描可投屏设备 **参数**:无 **返回值**:无 **调用方式**:PXR_System.StartScan(); StopScan ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void StopScan() **功能**:停止扫描可投屏设备 **参数**:无 **返回值**:无 **调用方式**:PXR_System.StopScan(); SetWDJsonCallback ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void SetWDJsonCallback() **功能**:设定扫描结果callback,返回json字符串,包含过去连接过设备和扫描出的设备。执行此接口后,StringCallBack才可以被回调到。 **参数**:无 **返回值**:无 **调用方式**:PXR_System.SetWDJsonCallback(); ConnectWifiDisplay ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ConnectWifiDisplay(string modelJson) **功能**:投屏到指定设备 **参数**: - string modelJson:Callback返回的WifiDisplayModel .. code-block:: JSON { "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 callback) **功能**:手动更新可投屏的设备列表 **参数**: Action callback:string-可投屏的设备列表 **返回值**:无 **调用方式**:PXR_System.UpdateWifiDisplays(callback); GetConnectedWD ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static string GetConnectedWD() **功能**:获取当前连接的设备信息 **参数**:无 **返回值**:string类型,当前连接的设备信息 **调用方式**:PXR_System.GetConnectedWD(); 受保护接口 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 注意:调用以下接口需要在manifest里添加以下标签,添加此标签后无法上架Pico Store。 .. code-block:: XML ControlSetDeviceAction ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ControlSetDeviceAction(DeviceControlEnum deviceControl, Action callback) **功能**:控制设备关机、重启 **参数**: - DeviceControlEnum deviceControl:枚举值 .. code-block:: C# public enum DeviceControlEnum { DEVICE_CONTROL_REBOOT, // 重启 DEVICE_CONTROL_SHUTDOWN // 关机 } - Action callback:回调接口,1-关机、重启失败,2-无权限执行此操作 **返回值**:无 **调用方式**:PXR_System.ControlSetDeviceAction(deviceControl,callback); ControlAPPManager ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ControlAPPManager(PackageControlEnum packageControl, string path, Action callback) **功能**:应用控制静默安装,静默卸载 **参数**: - PackageControlEnum packageControl .. code-block:: C# public enum PackageControlEnum { PACKAGE_SILENCE_INSTALL, // 静默安装 PACKAGE_SILENCE_UNINSTALL // 静默卸载 } - string path:静默安装的安装包路径/静默卸载的应用包名 - Action callback:回调接口, 0-成功,1-失败,2-无权限执行此操作 **返回值**:无 **调用方式**:PXR_System.ControlAPPManager(packageControl, "com.foo.bar",callback); ScreenOn ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ScreenOn() **功能**:使设备亮屏 **参数**:无 **返回值**:无 **调用方式**:PXR_System.ScreenOn(); ScreenOff ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ScreenOff() **功能**:使设备灭屏 **参数**:无 **返回值**:无 **调用方式**:PXR_System.ScreenOff(); 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 成就系统相关 ------------------------------------------------------------ 准备工作 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 开发者可以从管理中心进入到创建应用阶段,点击创建应用,然后进入相应平台完善应用的相关信息。 开发者在接入成就系统时,需要在开发者平台创建应用并获取相应字符串。 申请流程如下: - 1. 在 `Pico 开发者平台`_ 页点击 `成为开发者`_ 按钮。 .. _Pico 开发者平台: https://developer.pico-interactive.com/ .. _成为开发者: https://devcenter.pico-interactive.com/#/organization - 2. 申请成为开发者 - 3. 创建应用 - 4.创建成就信息 点击 **查看** 进入应用详情页。如果您还没有任何应用,请先 **创建应用**。 开发者在接入成就系统时,需要在开发者平台创建应用并获取 **应用参数**,对应流程如下: 在 **平台服务** 菜单找到并点击 **成就**。 .. image:: _static/7.9.1.1.png 图7.9.1 开发者平台 在成就页面可以看到您已创建的所有成就。如果您还没有任何成就,请点击 **创建**。 按要求填写成就的信息。填入的API 名称(即API Name)必须代码中的保持一致。 - 5.成就类型 (1). 简单类型:通过单个事件或目标完成来解锁,无成就进展 (2). 计数器类型:到达指定目标个数时解锁(e.g. 完成5个解锁,target=5) (3). 位域类型:到达指定范围的指定目标个数时解锁(e.g. 完成指定7个目标中的3个解锁,Target=3,Bitfield Length=7) - 6. Platform Settings配置应用appid .. image:: _static/7.9.1.2.png 图7.9.2 Platform Settings面板 AndroidManifest配置详情请参考9.1.4章节 接口调用 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **使用注意事项** 1. 请先使用Pico账号登陆设备,再使用成就接口和功能 2. 为了避免由于设备账号切换、退登导致的成就数据出现误差,请在应用Resume()中重新调用一次初始化,以确保应用获取正确的用户登陆信息。 3. 开发调试阶段可以通过以下方式调试和测试 - Logcat - 通过开发者平台-应用-成就信息页查看数据 Init ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request Init() **功能**:初始化成就系统 **参数**:无 **返回值**:接口调用返回PXR_Request类型的消息 **调用方式**:PXR\_ Achievement.Init(); GetAllDefinitions ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request GetAllDefinitions() **功能**:获取所有成就定义信息 **参数**:无 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.GetAllDefinitions(); GetAllProgress ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request GetAllProgress() **功能**:获取所有已修改成就进度信息 **参数**:无 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.GetAllProgress(); GetDefinitionsByName ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request GetDefinitionsByName(string[] names) **功能**:根据name获取成就定义信息 **参数**: - string[] names:要获取定义信息的成就apiname数组 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.GetDefinitionsByName(names); GetProgressByName ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request GetProgressByName(string[] names) **功能**:根据name获取成就的解锁进度信息 **参数**: - string[] names:要获取定义信息的成就apiname数组 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.GetProgressByName(names); AddCount ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request AddCount(string name, long count) **功能**:增加计数成就的计数。 **参数**: - string name:成就apiname - long count:增加数 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.AddCount(name, count); AddFields ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request AddFields(string name, string fields) **功能**:在bitfield类型的成就中解锁一点。一旦某个bit被解锁,就不会再被改变。 **参数**: - string name:成就apiname - string fields:增加数 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.AddFields(name,bitfield); Unlock ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request Unlock(string name) **功能**:根据apiname解锁成就 **参数**: - string name:成就apiname **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.Unlock(name); GetNextAchievementDefinitionListPage ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request GetNextAchievementDefinitionListPage(PXR_AchievementDefinitionList list) **功能**:获取所有成就定义信息时,若存在多页,获取下一页 **参数**: - PXR_AchievementDefinitionList list:要获取成就的列表 **返回值**:接口调用结果PXR_Request **调用方式**:PXR\_ Achievement.GetNextAchievementDefinitionListPage(list); GetNextAchievementProgressListPage ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static PXR_Request GetNextAchievementProgressListPage(PXR_AchievementProgressList list) **功能**:获取所有已修改成就进度信息时,若存在多页,获取下一页 **参数**:无 **返回值**:接口调用结果 **调用方式**:PXR\_ Achievement.GetNextAchievementProgressListPage(achievementProgressList); 7.10 大空间相关 ----------------------------------------------- **使用场景**:将一台头戴创建的安全区,导出给其它头戴使用。支持最大面积10m*10m。 **使用流程**:用户使用一台头戴创建好地图后,把地图导出、拷贝至其他设备中。其他设备可以共用这一套地图,处于统一坐标系中,且头戴不需要统一真实世界的某一个位置唤醒(头戴在真实世界中任一位置唤醒后,可以识别到地图,且虚拟场景中的位置与真实世界的位置一致,不会以头戴位置为坐标原点)。如下图: .. image:: _static/7.10.png 使用大空间功能时,需将PXR_LargeSpaceServes脚本挂载到XR Rig下。并调用以下接口:PXR_Plugin.System.UPxr_SetLargeSpaceEnable(true) 设置当前应用在大空间模式下运行。 注意: - 使用大空间相关接口需 **初始化并绑定Service**,具体操作方式请参考 **7.8系统相关**。 - 大空间功能需要设备系统软件版本为 **c000_rf01_bv1.0.1_sv1.192_20211116_b346** 及以上。系统软件版本号可以在设备内选项 设置 - 通用 处查看。 .. image:: _static/7.10.1.png :align: center :scale: 65 % 图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 callback) **功能**:开关大空间 **参数**: - bool open:true-开启,false-关闭 - Action callback:回调函数,true-成功,false-失败。 **返回值**:无。 **调用方式**:PXR_System.SwitchLargeSpaceScene(open, callback); 注意事项:在绘制安全区时,请多走动一段时间,确保获取到足够的特征点。 GetSwitchLargeSpaceStatus ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void GetSwitchLargeSpaceStatus(Action callback) **功能**:获取当前大空间状态。 **参数**: - Action callback:回调函数,1-打开,0-关闭。 **返回值**:无。 **调用方式**:PXR_System.GetSwitchLargeSpaceStatus(Action); SaveLargeSpaceMaps ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static bool SaveLargeSpaceMaps() **功能**:保存大空间地图 **参数**:无 **返回值**:bool值,true-成功,false-失败 **调用方式**:PXR_System.SaveLargeSpaceMaps(); ExportMaps ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ExportMaps(Action callback) **功能**:导出地图文件,导出的文件在内部储存/maps/export 路径下 **参数**: - Action callback:回调函数,true-成功,false-失败 **返回值**:无 **调用方式**:PXR_System.ExportMaps(callback); ImportMaps ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static void ImportMaps (Action callback) **功能**:导入地图文件,需先将地图文件拷贝到内部存储/maps/文件夹中,再导入。 **参数**: - Action callback:回调函数,true-成功,false-失败 **返回值**:无 **调用方式**:PXR_System.ImportMaps(callback); GetPredictedMainSensorStateNew ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **函数名**:public static int GetPredictedMainSensorStateNew(ref PxrSensorState2 sensorState, ref int sensorFrameIndex) **功能**:获取固定坐标系下头戴设备的姿态数据。 **参数**: - ref PxrSensorState2 sensorState .. code-block:: C# 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);