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 }