第七章 API接口函数一览

7.1 获取版本信息

UPvr_GetUnitySDKVersion

函数名

  • public static string UPvr_GetUnitySDKVersion ()

功能

  • 获取SDK版本号

参数

返回值

  • SDK版本号

调用方式

  • Pvr_UnitySDKAPI.System.UPvr_GetUnitySDKVersion()

7.2 Sensor跟踪相关

UPvr_StartSensor

函数名

  • public static int UPvr_StartSensor(int index)

功能

  • 开启sensor跟踪

参数

  • index:0,主sensor;1,副sensor。
  • 主sensor为Pico Neo及Goblin、Goblin2,Viewer上HMD的Sensor,即头部跟踪的Sensor;viewer 没有副 sensor,下同。

返回值

  • 0: 调用成功;1:调用失败

调用方式

  • Pvr_UnitySDKAPI.Sensor.UPvr_StartSensor(index)
  • Viewer预留接口,暂时不可用

UPvr_ResetSensor

函数名

  • public static int UPvr_ResetSensor(int index)

功能

  • 重置sensor跟踪

参数

  • index:0,主sensor;1,副sensor。

返回值

  • 0: 调用成功;1:调用失败

调用方式

  • Pvr_UnitySDKAPI.Sensor.UPvr_ResetSensor(index)
  • Viewer 重置 sensor 跟踪水平方向

UPvr_ResetSensorAll

函数名

  • public static int UPvr_ResetSensorAll(int index)

功能

  • 重置sensor跟踪水平垂直方向

参数

  • index:0,主sensor;1,副sensor。

返回值

  • 0: 调用成功;1:调用失败

调用方式

  • Pvr_UnitySDKAPI. Sensor. UPvr_ResetSensorAll(index)
  • Viewer 独有

UPvr_OptionalResetSensor

函数名

  • public static int UPvr_OptionalResetSensor(int index, int resetRot, int resetPos)

功能

  • 重置sensor姿态和位置

参数

  • index:0,主sensor;1,副sensor resetRot:姿态 resetPos:位置 0:不重置 1:重置

返回值

  • 0: 调用成功;1:调用失败

调用方式

  • Pvr_UnitySDKAPI. Sensor. UPvr_OptionalResetSensor (0,1,1)

7.3 手柄相关 (Viewer不支持)

StartScan

函数名

  • public static void StartScan ()

功能

  • 搜索3dof手柄

参数

返回值

调用方式

  • Pvr_ControllerManager.StartScan()

StopScan

函数名

  • public static void StopScan ()

功能

  • 停止搜索3dof手柄

参数

返回值

调用方式

  • Pvr_ControllerManager.StopScan()

ConnectBLE

函数名

  • public static void ConnectBLE ()

功能

  • 开始连接3dof手柄

参数

返回值

调用方式

  • Pvr_ControllerManager.ConnectBLE ()

UPvr_GetControllerPower

函数名

  • public static int UPvr_GetControllerPower(int hand)

功能

  • 获取手柄电量

参数

  • 对于Goblin和Goblin2,请传入0;对于Pico Neo,则对应相应的手柄0/1
  • (对于Pico Neo,0/1为手柄的索引号,0代表第一个绑定的手柄,1代表第二个绑定的手柄,下同)

返回值

  • Goblin、Goblin2 0-4,Pico Neo 1-9

调用方式

  • Pvr_ControllerAPI. Controller .UPvr_GetControllerPower(int hand)

changeMainControllerCallback

函数名

  • public static void changeMainControllerCallback(string index)

功能

  • 主控手改变的回调

参数

  • 0/1代表当前主控手柄改变为哪个
  • (主控手柄为为启用射线参与UI交互的手柄,其与手柄的索引号并无特定关系,下同。)

返回值

调用方式

  • 主控手柄改变时回调

setControllerServiceBindState

函数名

  • public static void setControllerServiceBindState (string state)

功能

  • Pico Neo手柄绑定的回调

参数

  • 0为bind失败,1为bind成功

返回值

调用方式

  • Pico Neo手柄绑定的回调

UPvr_GetControllerAbility

函数名

  • public static int UPvr_GetControllerAbility(int hand)

功能

  • 获取当前Pico Neo手柄支持3Dof还是6Dof

参数

  • 0/1(对于Pico Neo,0/1为手柄的索引号,0代表第一个绑定的手柄,1代表第二个绑定的手柄,下同)

返回值

  • 0为调用失败,1为6Dof,2为3Dof

调用方式

  • Pvr_UnitySDKAPI.Controller. UPvr_GetControllerAbility(int hand)

setControllerStateChanged

函数名

  • public static void setControllerStateChanged (string state)

功能

  • Pico Neo手柄连接状态变化的回调

参数

  • 两个字符的字符串,第一个数字是手柄序号,第二个数字是手柄连接状态,例如0,0 即为0手柄断开 0,1即为0手柄连接上

返回值

调用方式

  • Pico Neo 手柄连接状态变化的回调

setHbServiceBindState

函数名

  • public static void setHbServiceBindState (string state)

功能

  • 3dof手柄service bind绑定状态改变时回调

参数

  • 0-已解绑,1-已绑定,2-未知

返回值

调用方式

  • 3dof手柄service bind绑定状态改变时回调

isServiceExisted

函数名

  • public static bool isServiceExisted ()

功能

  • 判定Pico Controller Service是否存在

参数

  • true为存在,false为不存在

返回值

调用方式

  • 在Pvr_ControllerManager类中直接用

UPvr_GetControllerState

函数名

  • public static ControllerState UPvr_GetControllerState (int hand)

功能

  • 获取Pico Controller连接状态
  • (注意:对于Pico Neo使用一个手柄的情况,因当前手柄的索引不便确定,建议调用两次判定连接状态)

参数

  • 对于Goblin,Goblin2请传入0;对于Pico Neo,则对应相应的手柄0/1

返回值

  • 连接状态

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetControllerState(hand)

ResetController

函数名

  • public static void ResetController(int num)

功能

  • 重置手柄姿态

参数

  • 0/1,假如一个手柄或者使用3dof手柄,则传0

返回值

调用方式

  • Pvr_ControllerManager.ResetController(num)

RebackToLauncher

函数名

  • public static void RebackToLauncher ()

功能

  • 退回到Launcher界面

参数

返回值

调用方式

  • 在Pvr_ControllerManager类中直接用

StartUpgrade

函数名

  • public static bool StartUpgrade ()

功能

  • 开始升级

参数

返回值

  • 成功或失败

调用方式

  • Pvr_ControllerManager.StartUpgrade()

GetBLEVersion

函数名

  • public static long GetBLEVersion ()

功能

  • 获取BLE版本

参数

返回值

  • BLE版本

调用方式

  • Pvr_ControllerManager.GetBLEVersion()

setupdateFailed

函数名

  • public static void setupdateFailed ()

功能

  • 升级失败的回调

参数

返回值

调用方式

  • 在Pvr_ControllerManager类中直接用

setupdateSuccess

函数名

  • public static void setupdateSuccess ()

功能

  • 升级成功的回调

参数

返回值

调用方式

  • 在Pvr_ControllerManager类中直接用

setupdateProgress

函数名

  • public static void setupdateProgress (string progress)

功能

  • 升级进度的回调

参数

  • 进度0-100

返回值

调用方式

  • 在Pvr_ControllerManager类中直接用

UPvr_GetControllerQUA

函数名

  • public static Quaternion UPvr_GetControllerQUA (int hand)

功能

  • 获取手柄姿态

参数

  • 0/1——对于Goblin和Goblin2请传入0;对于Pico Neo,则对应相应的手柄

返回值

  • 四元数,手柄姿态

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetControllerQUA(hand)

UPvr_GetControllerPOS

函数名

  • public static Vector3 UPvr_GetControllerPOS (int hand)

功能

  • 获取手柄位置

参数

  • 仅适用Pico Neo,请传入对应手柄的索引

返回值

  • 3维向量,手柄位置

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetControllerPOS(hand)

UPvr_GetMainHandNess

函数名

  • public static int UPvr_GetMainHandNess()

功能

  • 获取当前的主控手柄索引
  • (注意:Pico Neo专有,在bind手柄服务成功之后才可返回正确值,我们的SDK会在应用启动时Bind手柄服务,建议开发者利用Bind回调函数判断是否bind成功)

参数

返回值

  • 0/1

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetMainHandNess()

UPvr_SetMainHandNess

函数名

  • public static void UPvr_SetMainHandNess(int hand)

功能

  • 设置当前的主控手柄

参数

  • 0/1

返回值

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_SetMainHandNess()

UPvr_GetKey

函数名

  • public static bool UPvr_GetKey (int hand,Pvr_KeyCode key)

功能

  • 判断按键是否按住

参数

  • 0/1,Pvr_KeyCode

返回值

  • 是否按住

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetKey(hand , key)

UPvr_GetKeyDown

函数名

  • public static bool UPvr_GetKeyDown (int hand,Pvr_KeyCode key)

功能

  • 判断按键是否按下

参数

  • hand:手柄索引,key:指定的key

返回值

  • 是否按下

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetKeyDown(hand,key)

UPvr_GetKeyUp

函数名

  • public static bool UPvr_GetKeyUp(int hand,Pvr_KeyCode key)

功能

  • 判断按键是否抬起

参数

  • hand:手柄索引,key:指定的key

返回值

  • 是否抬起

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetKeyUp(hand ,key)

UPvr_GetKeyLongPressed

函数名

  • public static bool UPvr_GetKeyLongPressed (int hand,Pvr_KeyCode key)

功能

  • 判断按键是否被长按

参数

  • hand:手柄索引,key:指定的key

返回值

  • 是否长按

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetKeyLongPressed(hand,key)

UPvr_IsTouching

函数名

  • public static bool UPvr_IsTouching (int hand)

功能

  • 判断是否触摸了触摸板

参数

  • hand:手柄索引

返回值

  • 是否被触摸

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_IsTouching()

UPvr_GetSwipeDirection

函数名

  • public static SwipeDirection UPvr_GetSwipeDirection(int hand)

功能

  • 获取滑动手势的状态

参数

  • hand:手柄索引

返回值

  • SwipeDirection

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetSwipeDirection(hand)

UPvr_GetTouchPadPosition

函数名

  • public static Vector2 UPvr_GetTouchPadPosition (int hand)

功能

  • 获取触摸板的touch值

参数

  • 手柄索引,0/1

返回值

  • 触摸板的touch值,Pico Goblin与Pico Neo相同,详见 图6.4

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetTouchPadPosition(hand)

UPvr_GetTouchPadClick

函数名

  • public static TouchPadClick UPvr_GetTouchPadClick(int hand)

功能

  • 触摸板的模拟点击功能(把触摸板分为4块,模拟游戏手柄的上下左右功能

参数

  • 手柄索引,0/1

返回值

  • 模仿上下左右按键的功能

调用方式

  • Pvr_UnitySDKAPI.Controller.UPvr_GetTouchPadClick (hand)

AutoConnectHbController

函数名

  • public static void AutoConnectHbController (int scans)

功能

  • 自动搜索连接手柄

参数

  • 搜索时间(毫秒)

返回值

调用方式

  • Pvr_ControllerManager.AutoConnectHbController(scans)

setHbAutoConnectState

函数名

  • public static void setHbAutoConnectState (string state)

功能

  • 自动搜索手柄的回调

参数

返回值

  • UNKNOW:默认值
  • NO_DEVICE:没有扫描到HB手柄
  • ONLY_ON:只扫描到一只HB手柄
  • MORE_THAN_ONE:扫描到多只HB手柄
  • LAST_CONNECTED:扫描到上一次连接过的HB手柄
  • FACTORY_DEFAULT:扫描到工厂绑定的HB手柄(暂时未启用)

调用方式

  • Pvr_ControllerManager.setHbAutoConnectState(state)

Upvr_GetControllerTriggerValue

函数名

  • public static int Upvr_GetControllerTriggerValue(int hand)

功能

  • 获取扳机的输入值(仅适用于Goblin2和Neo Controller)

参数

  • 0/1

返回值

  • 0~255

调用方式

  • Pvr_UnitySDKAPI.Controller.Upvr_GetControllerTriggerValue(hand)

VibateController

函数名

  • public void VibateController(int hand, int strength)

功能

  • Neo手柄的振动接口

参数

  • 手柄编号hand:0,1 振动强度strength:0-255

返回值

调用方式

  • Pvr_ControllerManager.controllerlink. VibateController(hand,strength);

UPvr_GetDeviceType

函数名

  • public static int UPvr_GetDeviceType ()

功能

  • 获取已连接的手柄类型(假如返回值为0,需要同时调用下手柄连接状态,两个值配合来决定是否启用头控)

参数

返回值

  • 0:无连接 1:Goblin 2:Neo 3:Goblin2

调用方式

  • Pvr_UnitySDKAPI.Controller. UPvr_GetDeviceType ();

7.4 电量音量亮度服务相关

UPvr_InitBatteryVolClass

函数名

  • public bool UPvr_InitBatteryVolClass()

功能

  • 初始化电量音量亮度服务
  • (在使用电量音量亮度等服务前请首先调用此接口初始化)

参数

返回值

  • 是否初始化成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_InitBatteryVolClass()

UPvr_StartAudioReceiver

函数名

  • public bool UPvr_StartAudioReceiver ()

功能

  • 开启音量服务

参数

返回值

  • 是否开启成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_StartAudioReceiver()

UPvr_SetAudio

函数名

  • public void UPvr_SetAudio(string s)

功能

  • 音量发生变化时通知unity当前音量值

参数

  • 变化之后的音量值

返回值

调用方式

  • 该接口为底层android调用,unity无需调用,如果需要在音量发生变化时做操作,可在此方法内部写入相关逻辑。

UPvr_StopAudioReceiver

函数名

  • public bool UPvr_StopAudioReceiver ()

功能

  • 关闭音量服务

参数

返回值

  • 是否关闭成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_StopAudioReceiver()

UPvr_StartBatteryReceiver

函数名

  • public bool UPvr_StartBatteryReceiver ()

功能

  • 开启电量服务

参数

返回值

  • 是否开启成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_StartBatteryReceiver()

UPvr_SetBattery

函数名

  • public void UPvr_SetBattery(string s)

功能

  • 电池电量发生变化时通知unity当前电量值

参数

  • 变化之后的电量值(范围是0.00~1.00)

返回值

调用方式

  • 该接口为底层android调用,unity无需调用,如果需要在电量发生变化时做操作,可在此方法内部写入相关逻辑。

UPvr_StopBatteryReceiver

函数名

  • public bool UPvr_StopBatteryReceiver ()

功能

  • 关闭电量服务

参数

返回值

  • 是否关闭成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_StopBatteryReceiver()

UPvr_GetMaxVolumeNumber

函数名

  • public int UPvr_GetMaxVolumeNumber ()

功能

  • 获取最大音量

参数

返回值

  • 音量最大值

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_GetMaxVolumeNumber()

UPvr_GetCurrentVolumeNumber

函数名

  • public int UPvr_GetCurrentVolumeNumber ()

功能

  • 获取当前音量

参数

返回值

  • 当前音量值(范围是0~15)

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_GetCurrentVolumeNumber()

UPvr_VolumeUp

函数名

  • public bool UPvr_VolumeUp ()

功能

  • 提高音量

参数

返回值

  • 是否成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_VolumeUp()

UPvr_VolumeDown

函数名

  • public bool UPvr_VolumeDown ()

功能

  • 降低音量

参数

返回值

  • 是否成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_VolumeDown()

UPvr_SetVolumeNum

函数名

  • public bool UPvr_SetVolumeNum(int volume)

功能

  • 设置音量

参数

  • 设置的音量大小数值(音量值的范围是0~15)

返回值

  • 是否设置成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetVolumeNum(volume)

UPvr_SetBrightness

函数名

  • public bool UPvr_SetBrightness(int brightness)

功能

  • 设置亮度(普通手机版本,不适用于PicoNeo,适用于Pico Goblin)

参数

  • 亮度值(亮度值的范围是0~255)

返回值

  • 是否设置成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetBrightness(bn)

UPvr_GetScreenBrightnessLevel

函数名

  • public static int[] UPvr_GetScreenBrightnessLevel()

功能

  • 获取当前屏幕亮度等级(仅适用于Goblin)

参数

返回值

  • int 数组。第一位是支持的总亮度级别,第二位是当前亮度等级,从第三位开始至结束位是亮度等级区间值

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_GetScreenBrightnessLevel()

UPvr_SetScreenBrightnessLevel

函数名

  • public static void UPvr_SetScreenBrightnessLevel(int vrBrightness, int level)

功能

  • 设置屏幕亮度(仅适用于Goblin)

参数

  • vrBrightness:亮度模式;level:亮度值(亮度等级值)
  • 如果vrBrightness传入1,level 传入亮度等级; 如果vrBrightness传入0, 代表采用系统 默认的亮度设置模式,level可以设置1~255之间的值。

返回值

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetScreenBrightnessLevel(vrBrightness,level)

UPvr_IsHmdExist

函数名

  • public bool UPvr_IsHmdExist()

功能

  • 判断是否是HMD头戴设备

参数

返回值

  • true是HMD , false不是HMD

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_IsHmdExist()

UPvr_GetHmdScreenBrightness

函数名

  • public int UPvr_GetHmdScreenBrightness()

功能

  • 获取当前HMD设备亮度值(仅适用于PicoNeo)

参数

返回值

  • int 当前亮度值(亮度值的范围是0~255)

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_GetHmdScreenBrightness()

UPvr_SetHmdScreenBrightness

函数名

  • public bool UPvr_SetHmdScreenBrightness(int brightness)

功能

  • 设置HMD设备亮度值(仅适用于PicoNeo)

参数

  • 亮度值(亮度值的范围是0~255)

返回值

  • 是否设置成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetHmdScreenBrightness(brightness)

UPvr_GetCommonBrightness

函数名

  • public int UPvr_GetCommonBrightness()

功能

  • 获取当前通用设备亮度值(Pico Neo和普通手机均适用)

参数

返回值

  • 当前亮度值(亮度值的范围是0~255)

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_GetCommonBrightness()

UPvr_SetCommonBrightness

函数名

  • public bool UPvr_SetCommonBrightness(int brightness)

功能

  • 设置通用设备亮度值(Pico Neo和普通手机均适用)

参数

  • 亮度值(亮度值的范围是0~255)

返回值

  • 是否设置成功

调用方式

  • Pvr_UnitySDKAPI.VolumePowerBrightness.UPvr_SetCommonBrightness(brightness)

7.5 头戴距离传感器相关

UPvr_InitPsensor

函数名

  • public static void UPvr_InitPsensor()

功能

  • 初始化距离传感器

参数

返回值

调用方式

  • Pvr_UnitySDKAPI. Sensor. UPvr_InitPsensor ()

UPvr_GetPsensorState

函数名

  • public static int UPvr_GetPsensorState()

功能

  • 获得头戴距离传感器的状态

参数

返回值

  • 带上头戴时返回值是0,远离时返回值是1

调用方式

  • Pvr_UnitySDKAPI. Sensor. UPvr_GetPsensorState()
  • 注意:获得Psensor的状态之前需要调用UPvr_InitPsensor进行初始化(初始化一次即可)

UPvr_UnregisterPsensor

函数名

  • public static void UPvr_UnregisterPsensor ()

功能

  • 释放距离传感器

参数

返回值

调用方式

  • Pvr_UnitySDKAPI. Sensor. UPvr_UnregisterPsensor ()

7.6 硬件设备相关

UPvr_GetDeviceMode

函数名

  • public static string UPvr_GetDeviceMode ()

功能

  • 获得设备类型

参数

返回值

  • SystemInfo.deviceModel

调用方式

  • Pvr_UnitySDKAPI.System.UPvr_GetDeviceMode ()

UPvr_GetDeviceSN

函数名

  • public static string UPvr_GetDeviceSN ()

功能

  • 获得设备SN串号

参数

返回值

  • 获得设备SN串号

调用方式

  • Pvr_UnitySDKAPI.System.UPvr_GetDeviceSN ()

UPvr_ShutDown

函数名

  • public static void UPvr_ShutDown()

功能

  • 关机

参数

返回值

调用方式

  • Pvr_UnitySDKAPI.System.UPvr_ShutDown ()

UPvr_Reboot

函数名

  • public static void UPvr_Reboot ()

功能

  • 重启

参数

返回值

调用方式

  • Pvr_UnitySDKAPI.System.UPvr_Reboot ()

UPvr_Sleep

函数名

  • public static void UPvr_Sleep ()

功能

  • 关屏

参数

返回值

调用方式

  • Pvr_UnitySDKAPI. System. UPvr_Sleep ()

注意:用UPvr_ShutDown、UPvr_Reboot、UPvr_Sleep接口,需要在AndroidManifest中添加如下权限,并且需要系统签名:

android:sharedUserId="android.uid.system"
<uses-permission android:name="android.permission.DEVICE_POWER" />