#if PICO_SDK || PXR_SDK
using Unity.XR.PICO.TOBSupport;
using Unity.XR.PXR;
using UnityEngine;
using UnityEngine.XR;
public class PicoAPI : MonoBehaviour
{
public static PicoAPI _Instance;
private void Awake()
{
if (_Instance == null)
_Instance = this;
// PXR_Enterprise.InitEnterpriseService();
// PXR_Enterprise.BindEnterpriseService();
}
private void OnDestroy()
{
PXR_Enterprise.UnBindEnterpriseService();
}
///
/// ���WakeLock��
///
public void AcquireWakeLock()
{
PXR_Enterprise.AcquireWakeLock();
}
///
/// У���ӽ�
///
public void TryRecenter()
{
InputDevices.GetDeviceAtXRNode(XRNode.Head).subsystem.TryRecenter();//У���ӽ�
}
///
/// ����Ͷ��
///
public void OpenTouPing()
{
//AndroidProcessData.OpenPackage(packageNmae, activity);
PXR_Enterprise.StartActivity("com.pvr.picocast", "com.pvr.picocast.view.CastMainActivity", "", "", new string[] { }, new int[] { });
}
public void OpenApp(string pkgName)
{
PXR_Enterprise.StartActivity(pkgName, "", "", "", new string[] { }, new int[] { });
}
///
/// ����wifi
///
public void OpenWIFI()
{
PXR_Enterprise.StartVrSettingsItem(StartVRSettingsEnum.START_VR_SETTINGS_ITEM_WIFI, true, 0);
}
///
/// ����pico������
///
public void PlayPicoVideo(string fileName)
{
AndroidJavaObject context = new AndroidJavaClass("com.unity3d.player.UnityPlayer").GetStatic("currentActivity");
AndroidJavaObject videoPlayer = new AndroidJavaObject("com.picovr.picoplaymanager.PicovrLaunchPlayer");
videoPlayer.Call("uri", fileName, false).Call("playTime", 0).Call("scenes", 2).Call("launchVideoPlayer", context);
}
///
/// ����Ӧ�ó����Ծ
///
public void AppKeepAlive(string appPackageName)
{
PXR_Enterprise.AppKeepAlive(appPackageName, true, 0);
}
///
/// ����Ӧ����Ϊ��������
///
public void SetAppAsHome(string pkgName)
{
PXR_Enterprise.SetAPPAsHome(SwitchEnum.S_ON, pkgName);
}
///
/// ����USB����ģʽΪMTP
///
public void SetUSBConfigMode()
{
PXR_Enterprise.SwitchSetUsbConfigurationOption(USBConfigModeEnum.MTP);
}
///
/// ǿ���˳�Ӧ��
///
public void KillAppsByPidOrPackageName(string pkgName)
{
PXR_Enterprise.KillAppsByPidOrPackageName(new int[] { }, new string[] { pkgName });
}
///
/// �����̨Ӧ�ð�����
///
public void KillBackgroundAppsWithWhiteList(string pkgName)
{
PXR_Enterprise.KillBackgroundAppsWithWhiteList(new string[] { pkgName });
}
///
/// ����ͫ��
///
public void SetIpd(float ipd)
{
PXR_Enterprise.SetIPD(ipd, CallBack);
void CallBack(int code)
{
string installCode = code switch
{
1 => "ʧ��",
2 => "������Ч��Χ",
_ => "�ɹ�",
};
}
}
#region �ر���������
///
/// ͨ������������������
///
/// Ӧ�ð���
/// AndroidJavaObject
public void OpenPackage(string pkgName, AndroidJavaObject activity = null)
{
if (activity == null)
{
AndroidJavaClass UnityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
activity = UnityPlayer.GetStatic("currentActivity");
}
using (AndroidJavaObject joPackageManager = activity.Call("getPackageManager"))
{
using (AndroidJavaObject joIntent = joPackageManager.Call("getLaunchIntentForPackage", pkgName))
{
if (null != joIntent)
{
activity.Call("startActivity", joIntent);
}
else
{
Debug.Log("δ��װ��������" + pkgName);
}
}
}
}
///
/// �Ƿ�װ�˴�app
///
public bool IsAppInstalled(string packageName)
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity");
AndroidJavaObject packageManager = currentActivity.Call("getPackageManager");
AndroidJavaObject packageInfo = null;
try
{
packageInfo = packageManager.Call("getPackageInfo", packageName, 0);
}
catch (AndroidJavaException e)
{
// Application is not installed
}
if (packageInfo == null)
{
return false;
}
else
{
return true;
}
}
///
/// ��ȡapk����
///
public string GetPackageNameFromApk(string apkFilePath)
{
AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic("currentActivity");
AndroidJavaObject packageManager = currentActivity.Call("getPackageManager");
AndroidJavaObject packageInfo = packageManager.Call("getPackageArchiveInfo", apkFilePath, 0);
if (packageInfo != null)
{
AndroidJavaObject applicationInfo = packageInfo.Get("applicationInfo");
string packageName = applicationInfo.Get("packageName");
return packageName;
}
return null;
}
#endregion
#region �رհ�ȫ�߽�
///
/// �رձ߽�
///
public void OffBoundary()
{
PXR_Boundary.SetGuardianSystemDisable(false);
}
#endregion
#region �����ֱ���
///
/// �����ֱ���
///
/// �ֱ�
/// ���
/// ����ʱ��
/// ��Ƶ��
// public void SetControllerVibration(PXR_Input.VibrateType vibrateType, float amplitude, int duration, int frequency = 150)
// {
// PXR_Input.SendHapticImpulse(vibrateType, amplitude, duration, frequency);
// }
///
/// ����ֱ����� 0�����ֱ���1�����ֱ�
///
///
public int[] GetControllerBattery()
{
return PXR_Enterprise.GetControllerBattery();
}
#endregion
#region ��Ĭ��װ/ж��apk
///
/// ��Ĭ��װapk
///
public void InstallApk(string path)
{
if (!string.IsNullOrEmpty(path))
{
PXR_Enterprise.ControlAPPManager(PackageControlEnum.PACKAGE_SILENCE_INSTALL, path, CallBack);
}
void CallBack(int code)
{
string installCode = code switch
{
1 => "ʧ��",
2 => "�˲���Ȩ��",
_ => "�ɹ�",
};
Debug.Log($"��Ĭ��װapk��·��: {path}, code: {installCode}");
}
}
///
/// ��Ĭж��app
///
public void UnInstallApp(string appPackageName)
{
PXR_Enterprise.ControlAPPManager(PackageControlEnum.PACKAGE_SILENCE_UNINSTALL, appPackageName, CallBack);
void CallBack(int code)
{
string unInstallCode = code switch
{
1 => "ʧ��",
2 => "�˲���Ȩ��",
_ => "�ɹ�",
};
Debug.Log($"��Ĭж��app����: {appPackageName}, code: {unInstallCode}");
}
}
#endregion
#region ��ȡ�豸��Ϣ
///
/// pico�豸SN
///
public string PicoSN()
{
return StateGetDeviceInfo(SystemInfoEnum.EQUIPMENT_SN);
}
///
/// pico�豸����
///
public string PicoPower()
{
return StateGetDeviceInfo(SystemInfoEnum.ELECTRIC_QUANTITY);
}
///
/// ���״̬
///
/// ��2���dz���У���3����û���
public string ChargingStatus()
{
return StateGetDeviceInfo(SystemInfoEnum.CHARGING_STATUS);
}
///
/// pico�豸WIFI״̬
///
public string PicoWIFIState()
{
return StateGetDeviceInfo(SystemInfoEnum.DEVICE_WIFI_STATUS);
}
///
/// ��ȡ�豸��Ϣ
///
string StateGetDeviceInfo(SystemInfoEnum infoEnum)
{
return PXR_Enterprise.StateGetDeviceInfo(infoEnum);
}
///
/// ��������
///
void SetCommonBrightness(float Ilight)
{
PXR_System.SetCommonBrightness(int.Parse(Ilight.ToString()));
}
///
/// �������
///
int GetCommonBrightness()
{
return PXR_System.GetCommonBrightness();
}
#endregion
#region �����豸�ػ�������
///
/// �����豸�ػ�������
///
void ControlDeviceShutDownOrReboot(DeviceControlEnum deviceControlEnum)
{
PXR_Enterprise.ControlSetDeviceAction(deviceControlEnum, callback);
void callback(int obj)
{
string Code = obj switch
{
1 => "ʧ��",
2 => "�˲���Ȩ��",
_ => "�ɹ�",
};
}
}
///
/// �ػ�
///
public void ShutDown()
{
ControlDeviceShutDownOrReboot(DeviceControlEnum.DEVICE_CONTROL_SHUTDOWN);
}
///
/// ����
///
public void Reboot()
{
ControlDeviceShutDownOrReboot(DeviceControlEnum.DEVICE_CONTROL_REBOOT);
}
#endregion
#region ����Home��ť�¼�
///
/// ����home��ť��Ч
///
public void SetHomeNoAvail()
{
PropertySetHomeKey(HomeEventEnum.SINGLE_CLICK, HomeFunctionEnum.VALUE_HOME_DISABLE);
}
///
/// ����home��ťĬ��
///
public void RemoveControllerHomeKey()
{
PXR_Enterprise.RemoveControllerHomeKey(HomeEventEnum.SINGLE_CLICK);
}
///
/// ����Home��ť�¼�
///
public void PropertySetHomeKey(HomeEventEnum eventEnum, HomeFunctionEnum function)
{
PXR_Enterprise.PropertySetHomeKey(eventEnum, function, callback);
void callback(bool obj)
{
string Code = obj switch
{
false => "ʧ��",
_ => "�ɹ�",
};
}
}
#endregion
#region �����豸������������Ϣ��
///
/// �����豸��ʹ��ʱ��Ļ�رյ�ʱ��
///
void PropertySetScreenOffDelay(ScreenOffDelayTimeEnum timeEnum)
{
PXR_Enterprise.PropertySetScreenOffDelay(timeEnum, callback);
void callback(int obj)
{
string Code = obj switch
{
0 => "�ɹ�",
2 => "ʧ��",
10 => "ӦС��ϵͳ����ʱ��",
_ => "�쳣"
};
}
}
///
/// �����豸��ʹ��ʱϵͳ����ʱ��
///
void PropertySetSleepDelay(SleepDelayTimeEnum timeEnum)
{
PXR_Enterprise.PropertySetSleepDelay(timeEnum);
}
///
/// �����豸������������Ϣ��
///
public void NeverSleepScreenOff()
{
PropertySetSleepDelay(SleepDelayTimeEnum.NEVER);//��������
PropertySetScreenOffDelay(ScreenOffDelayTimeEnum.NEVER);//����Ϣ��
}
#endregion
#region ��/�ر�ָ����ϵͳ����
///
/// ��/�ر�ָ����ϵͳ����
///
void SwitchSystemFunction(SystemFunctionSwitchEnum systemFunctionSwitchEnum, SwitchEnum switchEnum)
{
PXR_Enterprise.SwitchSystemFunction(systemFunctionSwitchEnum, switchEnum);
}
///
/// �����ض�λ����
///
public void HandRecenter()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_GESTURE_RECOGNITION_RESET_ENABLE, SwitchEnum.S_OFF);
}
public void OpenHandRecenter()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_GESTURE_RECOGNITION_RESET_ENABLE, SwitchEnum.S_ON);
}
///
/// ����Home
///
public void HandHome()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_GESTURE_RECOGNITION_HOME_ENABLE, SwitchEnum.S_OFF);
}
public void OpenHandHome()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_GESTURE_RECOGNITION_HOME_ENABLE, SwitchEnum.S_ON);
}
///
/// ����USB����
///
public void OnUSBDebugging()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_USB, SwitchEnum.S_ON);
}
///
/// �ر��Զ�����
///
public void OffAutoSleep()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_AUTOSLEEP, SwitchEnum.S_OFF);
}
///
/// �ر�ϵͳ����
///
public void OffSystemUpdate()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SYSTEM_UPDATE, SwitchEnum.S_OFF);
}
///
/// ��ϵͳ����
///
public void OpenSystemUpdate()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SYSTEM_UPDATE, SwitchEnum.S_ON);
}
///
/// �ر��Զ�ɱ��̨VRӦ��
///
public void OffKillVRapp()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_BASIC_SETTING_KILL_BACKGROUND_VR_APP, SwitchEnum.S_OFF);
}
///
/// �����Զ�ɱ��̨VRӦ��
///
public void OpenKillVRapp()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_BASIC_SETTING_KILL_BACKGROUND_VR_APP, SwitchEnum.S_ON);
}
///
/// �رյ�����
///
public void OffNavgation()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_NAVGATION_SWITCH, SwitchEnum.S_OFF);
}
///
/// ������
///
public void OpenNavgation()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_NAVGATION_SWITCH, SwitchEnum.S_ON);
}
///
/// �豸����ر�ʱ������������
///
public void OnPowerCtrlWIFIEnable()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_POWER_CTRL_WIFI_ENABLE, SwitchEnum.S_ON);
}
///
/// �ر�ϵͳ��������
///
public void OffSystemUpdateApp()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SYSTEM_UPDATE_APP, SwitchEnum.S_OFF);
}
///
/// ��ϵͳ��������
///
public void OpenSystemUpdateApp()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SYSTEM_UPDATE_APP, SwitchEnum.S_ON);
}
///
/// �ر�Ӧ�ó����˳��Ի���
///
public void OffAppQuitConfirmDialog()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_BASIC_SETTING_SHOW_APP_QUIT_CONFIRM_DIALOG, SwitchEnum.S_OFF);
}
///
/// ��Ӧ�ó����˳��Ի���
///
public void OpenAppQuitConfirmDialog()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_BASIC_SETTING_SHOW_APP_QUIT_CONFIRM_DIALOG, SwitchEnum.S_ON);
}
///
/// �ر�6DoFλ�ø���
///
public void OffSixDof()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SIX_DOF_SWITCH, SwitchEnum.S_OFF);
}
public void OnSixDof()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SIX_DOF_SWITCH, SwitchEnum.S_ON);
}
///
/// ����Ͷ����ť
///
public void OffCastUI()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_SHORTCUT_SHOW_CAST_UI, SwitchEnum.S_OFF);
}
///
/// VRӦ����ʵʱ��Ӧͷ�����ؼ�
///
public void HMDBackKey()
{
//ͷ�����ؼ����·���DOWN�¼���̧��UP�¼�
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_REAL_TIME_RESPONSE_HMD_BACK_KEY_IN_VR_APP, SwitchEnum.S_ON);
}
#endregion
#region ��������
///
/// ��ȡ�������
///
public int GetMaxVolumeNumber()
{
return PXR_System.GetMaxVolumeNumber();
}
///
/// ��ȡ��ǰ����
///
public int GetCurrentVolumeNumber()
{
return PXR_System.GetCurrentVolumeNumber();
}
///
/// ��������
///
public void VolumeUp()
{
PXR_System.VolumeUp();
}
///
/// ������
///
public void VolumeDown()
{
PXR_System.VolumeDown();
}
///
/// ��������
///
public void SetVolumeNum(int volume)
{
PXR_System.SetVolumeNum(volume);
}
///
/// �������õ����ֵ
///
public void SetVolumeMaxNum()
{
SetVolumeNum(GetMaxVolumeNumber());
}
#endregion
#region Ͷ������
///
/// Ͷ����ַ
///
public string GetCastUrl()
{
PXR_Enterprise.PICOCastInit(null);
return PXR_Enterprise.PICOCastGetUrl(PICOCastUrlTypeEnum.NO_CONFIRM_URL);
}
///
/// ��ϼ����Ȩ��������
///
public void PICOCastSetShowAuthorization()
{
PXR_Enterprise.PICOCastSetShowAuthorization(1);
}
///
/// ����Ͷ��ʱ��ɫͼ��
///
public void OffCastNotification()
{
SwitchSystemFunction(SystemFunctionSwitchEnum.SFS_BASIC_SETTING_SHOW_CAST_NOTIFICATION, SwitchEnum.S_OFF);
}
///
/// Ͷ������-��������¼��
///
public void CastOption()
{
PICOCastSetOption(PICOCastOptionOrStatusEnum.OPTION_AUDIO_ENABLE, PICOCastOptionValueEnum.OPTION_VALUE_AUDIO_ON);
}
///
/// Ͷ������
///
void PICOCastSetOption(PICOCastOptionOrStatusEnum castOptionOrStatus, PICOCastOptionValueEnum castOptionValue)
{
PXR_Enterprise.PICOCastSetOption(castOptionOrStatus, castOptionValue);
}
#endregion
}
#else
using UnityEngine;
public class PicoAPI : MonoBehaviour
{
public static PicoAPI _Instance;
private void Awake()
{
if (_Instance == null)
{
_Instance = this;
}
}
public void AcquireWakeLock() { }
public void TryRecenter() { }
public void OpenTouPing() { }
public void OpenApp(string pkgName) { }
public void OpenWIFI() { }
public void PlayPicoVideo(string fileName) { }
public void AppKeepAlive(string appPackageName) { }
public void SetAppAsHome(string pkgName) { }
public void SetUSBConfigMode() { }
public void KillAppsByPidOrPackageName(string pkgName) { }
public void KillBackgroundAppsWithWhiteList(string pkgName) { }
public void SetIpd(float ipd) { }
public void OffBoundary() { }
public int[] GetControllerBattery() { return new int[0]; }
public void InstallApk(string path) { }
public void UnInstallApp(string appPackageName) { }
public string PicoSN() { return ""; }
public string PicoPower() { return "0"; }
public string ChargingStatus() { return ""; }
public string PicoWIFIState() { return ""; }
public void ShutDown() { }
public void Reboot() { }
public void SetHomeNoAvail() { }
public void RemoveControllerHomeKey() { }
public void OffSystemUpdateApp() { }
public void OffSystemUpdate() { }
public void OffNavgation() { }
public void OffKillVRapp() { }
public void OnPowerCtrlWIFIEnable() { }
public void OffAppQuitConfirmDialog() { }
public void OnSixDof() { }
public void HandRecenter() { }
public void HandHome() { }
public void OnUSBDebugging() { }
public void OffCastNotification() { }
public void PICOCastSetShowAuthorization() { }
public void CastOption() { }
public string GetCastUrl() { return ""; }
public void OpenSystemUpdateApp() { }
public void OpenSystemUpdate() { }
public void OpenNavgation() { }
public void OpenKillVRapp() { }
public void OpenAppQuitConfirmDialog() { }
public void OpenHandRecenter() { }
public void OpenHandHome() { }
public void SetVolumeNum(int volume) { }
}
#endif