605 lines
24 KiB
XML
605 lines
24 KiB
XML
|
|
<?xml version="1.0" encoding="utf-8"?>
|
|||
|
|
<!--
|
|||
|
|
Copyright® 2015-2023 PICO Technology Co., Ltd. All rights reserved.
|
|||
|
|
This plugin incorporates portions of the Unreal® Engine. Unreal® is a trademark or registered trademark of Epic Games, Inc. in the United States of America and elsewhere.
|
|||
|
|
Unreal® Engine, Copyright 1998 – 2023, Epic Games, Inc. All rights reserved.
|
|||
|
|
-->
|
|||
|
|
<!--PICOXR plugin additions-->
|
|||
|
|
<root xmlns:android="http://schemas.android.com/apk/res/android">
|
|||
|
|
<!-- init section is always evaluated once per architecture -->
|
|||
|
|
<init>
|
|||
|
|
<log text="PICOXRHMD init"/>
|
|||
|
|
<setBoolFromProperty result="bEnablePSensor" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnablePSensor" default="false"/>
|
|||
|
|
<setStringFromProperty result="HandTrackingSupport" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="HandTrackingSupport" default="ControllersOnly"/>
|
|||
|
|
<setBoolFromProperty result="bEnableEyeTracking" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableEyeTracking" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableEyeTrackingFoveationRendering" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableEyeTrackingFoveationRendering" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableEyeTrackingCalibration" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableEyeTrackingCalibration" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableFaceTracking" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableFaceTracking" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableBodyTracking" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableBodyTracking" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bUsingOSSplash" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bUsingOSSplash" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bHighFrequencyTracking" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bHighFrequencyTracking" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bAdaptiveHandModel" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bAdaptiveHandModel" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableMRSafeguard" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableMRSafeguard" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableVST" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableVST" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableAnchor" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableAnchor" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableCloudAnchor" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableCloudAnchor" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableSceneCapture" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableSceneCapture" default="false"/>
|
|||
|
|
<setBoolFromProperty result="bEnableMesh" ini="Engine" section="/Script/PICOXRHMD.PICOXRSettings" property="bEnableMesh" default="false"/>
|
|||
|
|
</init>
|
|||
|
|
|
|||
|
|
<!-- optional updates applied to AndroidManifest.xml -->
|
|||
|
|
<androidManifestUpdates>
|
|||
|
|
|
|||
|
|
<addPermission android:name="android.permission.CHANGE_CONFIGURATION" />
|
|||
|
|
<addPermission android:name="android.permission.WRITE_SETTINGS" />
|
|||
|
|
<setElement result="AuthActivityElement" value="activity"/>
|
|||
|
|
<addAttribute tag="$AuthActivityElement" name="android:name" value="com.pico.loginpaysdk.auth.TransferStationActivity"/>
|
|||
|
|
<addAttribute tag="$AuthActivityElement" name="android:theme" value="@android:style/Theme.Translucent.NoTitleBar"/>
|
|||
|
|
<addAttribute tag="$AuthActivityElement" name="android:excludeFromRecents" value="true"/>
|
|||
|
|
<addAttribute tag="$AuthActivityElement" name="android:exported" value="true"/>
|
|||
|
|
<addAttribute tag="$AuthActivityElement" name="android:launchMode" value="singleTask"/>
|
|||
|
|
|
|||
|
|
<setElement result="IntentFilterElement" value="intent-filter"/>
|
|||
|
|
<addElements tag="$IntentFilterElement">
|
|||
|
|
<action android:name="com.pico.loginpaysdk.intent.action.AuthCallback"/>
|
|||
|
|
<category android:name="android.intent.category.DEFAULT"/>
|
|||
|
|
</addElements>
|
|||
|
|
<addElement tag="$AuthActivityElement" name="IntentFilterElement"/>
|
|||
|
|
<addElement tag="application" name="AuthActivityElement"/>
|
|||
|
|
|
|||
|
|
<addAttribute tag="application" name="android:hardwareAccelerated" value="false" />
|
|||
|
|
<addAttribute tag="application" name="android:requestLegacyExternalStorage" value="true" />
|
|||
|
|
<addAttribute tag="activity" name="android:screenOrientation" value="landscape" />
|
|||
|
|
<addAttribute tag="activity" name="android:configChanges" value="screenSize|orientation|keyboardHidden|keyboard|navigation" android:hardwareAccelerated="false"/>
|
|||
|
|
<addAttribute tag="activity" name="android:hardwareAccelerated" value="false" />
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="pvr.app.type" android:value="vr" />
|
|||
|
|
<meta-data android:name="pvr.sdk.version" android:value="UE5_3.2.3" />
|
|||
|
|
<meta-data android:name="pxr.sdk.2dloading.flag" android:value="system" />
|
|||
|
|
<meta-data android:name="pxr.sdk.version_code" android:value="5130" />
|
|||
|
|
</addElements>
|
|||
|
|
|
|||
|
|
<!-- Add MR Flag -->
|
|||
|
|
<if condition="bEnableAnchor">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.SPATIAL_DATA" />
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<if condition="bEnableSceneCapture">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.SPATIAL_DATA" />
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<if condition="bEnableMesh">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.SPATIAL_DATA" />
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<if condition="bEnableMRSafeguard">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_mr_safeguard" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_mr_safeguard" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<if condition="bEnableVST">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_vst" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_vst" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<if condition="bEnableAnchor">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_spatial_anchor" android:value="1" />
|
|||
|
|
<meta-data android:name="mr_map_mgr_auto_start" android:value="1" />
|
|||
|
|
<meta-data android:name="enable_anchor" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
<if condition="bEnableCloudAnchor">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_cloud_anchor" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_cloud_anchor" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_spatial_anchor" android:value="0" />
|
|||
|
|
<meta-data android:name="enable_cloud_anchor" android:value="0" />
|
|||
|
|
<meta-data android:name="mr_map_mgr_auto_start" android:value="0" />
|
|||
|
|
<meta-data android:name="enable_anchor" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<if condition="bEnableSceneCapture">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_scene_anchor" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_scene_anchor" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<if condition="bEnableMesh">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_mesh_anchor" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="enable_mesh_anchor" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
<!-- Add MR Flag -->
|
|||
|
|
|
|||
|
|
<if condition="bUsingOSSplash">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="pvr.app.splash" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="pvr.app.splash" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<!-- Add Hand Tracking Flag -->
|
|||
|
|
<setBoolIsEqual result="bControllersOnly" arg1="$S(HandTrackingSupport)" arg2="ControllersOnly"/>
|
|||
|
|
<setBoolIsEqual result="bControllersAndHands" arg1="$S(HandTrackingSupport)" arg2="ControllersAndHands"/>
|
|||
|
|
<setBoolIsEqual result="bHandsOnly" arg1="$S(HandTrackingSupport)" arg2="HandsOnly"/>
|
|||
|
|
|
|||
|
|
<if condition="bControllersOnly">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="controller" android:value="1"/>
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
<if condition="bControllersAndHands">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.HAND_TRACKING" />
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="controller" android:value="1"/>
|
|||
|
|
<meta-data android:name="handtracking" android:value="1"/>
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
<if condition="bHandsOnly">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.HAND_TRACKING" />
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="handtracking" android:value="1"/>
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<setBoolOr result="bEnableHandTracking" arg1="$B(bControllersAndHands)" arg2="$B(bHandsOnly)"/>
|
|||
|
|
<if condition="bEnableHandTracking">
|
|||
|
|
<true>
|
|||
|
|
<if condition="bHighFrequencyTracking">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="Hand_Tracking_HighFrequency" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="Hand_Tracking_HighFrequency" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
<if condition="bAdaptiveHandModel">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="Enable_AdaptiveHandModel" android:value="1" />
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="Enable_AdaptiveHandModel" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="Hand_Tracking_HighFrequency" android:value="0" />
|
|||
|
|
<meta-data android:name="Enable_AdaptiveHandModel" android:value="0" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
<!-- Add ET FT Flag -->
|
|||
|
|
<setBool result="bEnableEyeTrackingPermission" value="false"/>
|
|||
|
|
<setBoolOr result="bEnableEyeTrackingPermission" arg1="$B(bEnableEyeTrackingPermission)" arg2="$B(bEnableEyeTracking)"/>
|
|||
|
|
<setBoolOr result="bEnableEyeTrackingPermission" arg1="$B(bEnableEyeTrackingPermission)" arg2="$B(bEnableEyeTrackingFoveationRendering)"/>
|
|||
|
|
<if condition="bEnableEyeTrackingPermission">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.EYE_TRACKING"/>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="picovr.software.eye_tracking" android:value=""/>
|
|||
|
|
</addElements>
|
|||
|
|
<if condition="bEnableEyeTrackingCalibration">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="eyetracking_calibration" android:value="true"/>
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="eyetracking_calibration" android:value="false"/>
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="eyetracking_calibration" android:value="false" />
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<if condition="bEnableFaceTracking">
|
|||
|
|
<true>
|
|||
|
|
<addPermission android:name="com.picovr.permission.FACE_TRACKING"/>
|
|||
|
|
<addPermission android:name="android.permission.RECORD_AUDIO"/>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="picovr.software.face_tracking" android:value="false/true"/>
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
|
|||
|
|
<!-- Add body Tracking Flag -->
|
|||
|
|
<if condition="bEnableBodyTracking">
|
|||
|
|
<true>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="PICO.swift.feature" android:value="1"/>
|
|||
|
|
</addElements>
|
|||
|
|
</true>
|
|||
|
|
<false>
|
|||
|
|
<addElements tag="application">
|
|||
|
|
<meta-data android:name="PICO.swift.feature" android:value="0"/>
|
|||
|
|
</addElements>
|
|||
|
|
</false>
|
|||
|
|
</if>
|
|||
|
|
</androidManifestUpdates>
|
|||
|
|
|
|||
|
|
<!-- optional additions to proguard -->
|
|||
|
|
<proguardAdditions>
|
|||
|
|
<insert>
|
|||
|
|
-keep class com.epicgames.unreal.GameActivity{*;}
|
|||
|
|
-keep class com.psmart.aosoperation.SysActivity{*;}
|
|||
|
|
</insert>
|
|||
|
|
</proguardAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional files or directories to copy to Intermediate/Android/APK -->
|
|||
|
|
<resourceCopies>
|
|||
|
|
<isArch arch="armeabi-v7a">
|
|||
|
|
<copyFile src="$S(PluginDir)/../ThirdParty/PXRPlugin/PXRPlugin/Lib/armeabi-v7a/libpxr_api.so"
|
|||
|
|
dst="$S(BuildDir)/libs/armeabi-v7a/libpxr_api.so" />
|
|||
|
|
</isArch>
|
|||
|
|
|
|||
|
|
<isArch arch="arm64-v8a">
|
|||
|
|
<copyFile src="$S(PluginDir)/../ThirdParty/PXRPlugin/PXRPlugin/Lib/arm64-v8a/libpxr_api.so"
|
|||
|
|
dst="$S(BuildDir)/libs/arm64-v8a/libpxr_api.so" />
|
|||
|
|
</isArch>
|
|||
|
|
|
|||
|
|
<copyFile src="$S(PluginDir)/../ThirdParty/PXRPlugin/PXRPlugin/ExtLibs/libpxr_api.jar"
|
|||
|
|
dst="$S(BuildDir)/libs/libpxr_plugin.jar" />
|
|||
|
|
|
|||
|
|
<copyFile src="$S(PluginDir)/../ThirdParty/PXRPlugin/PXRPlugin/ExtLibs/pvrjar.jar"
|
|||
|
|
dst="$S(BuildDir)/libs/pvrjar.jar" />
|
|||
|
|
|
|||
|
|
<copyFile src="$S(BuildDir)/../../../pico_splash.png" dst="$S(BuildDir)/assets/pico_splash.png" />
|
|||
|
|
|
|||
|
|
</resourceCopies>
|
|||
|
|
|
|||
|
|
<!-- optional additions to the GameActivity imports in GameActivity.java -->
|
|||
|
|
<gameActivityImportAdditions>
|
|||
|
|
<insert>
|
|||
|
|
import com.psmart.aosoperation.NativeVerfyInterface;
|
|||
|
|
import android.app.Instrumentation;
|
|||
|
|
|
|||
|
|
import android.os.RemoteException;
|
|||
|
|
import java.util.List;
|
|||
|
|
import com.psmart.aosoperation.MRCCalibration;
|
|||
|
|
import android.content.pm.PackageInfo;
|
|||
|
|
import android.content.pm.PackageManager;
|
|||
|
|
import com.pxr.xrlib.PicovrSDK;
|
|||
|
|
<!--import about Content Protect -->
|
|||
|
|
import com.psmart.aosoperation.SysActivity;
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityImportAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to the GameActivity class in GameActivity.java -->
|
|||
|
|
<gameActivityClassAdditions>
|
|||
|
|
<insert>
|
|||
|
|
public boolean AndroidThunkJava_IsOculusMobileApplication()
|
|||
|
|
{
|
|||
|
|
return true;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
<!--Override dispatchKeyEvent-->
|
|||
|
|
@Override
|
|||
|
|
public boolean dispatchKeyEvent(KeyEvent event)
|
|||
|
|
{
|
|||
|
|
int action = event.getAction();
|
|||
|
|
if (event.getKeyCode()==1001)
|
|||
|
|
{
|
|||
|
|
keyRemappingSendFakeKeyEvent(action , 96);
|
|||
|
|
}
|
|||
|
|
return super.dispatchKeyEvent(event);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
<!--Send the input event 96 to unreal engine-->
|
|||
|
|
private static void keyRemappingSendFakeKeyEvent(final int action,final int keyCode) {
|
|||
|
|
new Thread(new Runnable() {
|
|||
|
|
public void run() {
|
|||
|
|
try {
|
|||
|
|
Instrumentation inst=new Instrumentation();
|
|||
|
|
final long eventTime = SystemClock.uptimeMillis();
|
|||
|
|
KeyEvent event =new KeyEvent(eventTime - 50, eventTime - 50, action, keyCode, 0, 0, 1001, 0, KeyEvent.FLAG_FROM_SYSTEM, InputDevice.SOURCE_GAMEPAD);
|
|||
|
|
int id = event.getDeviceId();
|
|||
|
|
inst.sendKeySync(event);
|
|||
|
|
}
|
|||
|
|
catch (Exception e) {}
|
|||
|
|
}
|
|||
|
|
}).start();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void EnableContentProtect(boolean bEnable)
|
|||
|
|
{
|
|||
|
|
SysActivity.SetSecure(this, bEnable);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public String GetDeviceSN( )
|
|||
|
|
{
|
|||
|
|
return SysActivity.getDeviceSN();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int GetPsensorState()
|
|||
|
|
{
|
|||
|
|
return SysActivity.getPsensorState();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void VolumeUp()
|
|||
|
|
{
|
|||
|
|
SysActivity.pxr_UpAudio();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void VolumeDown()
|
|||
|
|
{
|
|||
|
|
SysActivity.pxr_DownAudio();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void SetVolume(int volume)
|
|||
|
|
{
|
|||
|
|
SysActivity.pxr_ChangeAudio(volume);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int GetMaxVolumeNumber()
|
|||
|
|
{
|
|||
|
|
int maxV = SysActivity.pxr_GetMaxAudionumber();
|
|||
|
|
Log.debug("========== PICOXR_UPL: Max system volume:" + maxV+" ==========");
|
|||
|
|
return maxV;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int GetCurrentVolume()
|
|||
|
|
{
|
|||
|
|
int currentV = SysActivity.pxr_GetAudionumber();
|
|||
|
|
Log.debug("========== PICOXR_UPL: Current system volume:" + currentV+" ==========");
|
|||
|
|
return currentV;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private String getNewProp(String property)
|
|||
|
|
{
|
|||
|
|
// first try SystemProperties reflection
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
java.lang.reflect.Method get = Class.forName("android.os.SystemProperties").getMethod("get", new Class[]{String.class});
|
|||
|
|
String propValue = (String)get.invoke(null, property);
|
|||
|
|
if (propValue != null)
|
|||
|
|
{
|
|||
|
|
return propValue;
|
|||
|
|
}
|
|||
|
|
return "";
|
|||
|
|
}
|
|||
|
|
catch (Exception e)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// fall back to getprop command
|
|||
|
|
Process process = null;
|
|||
|
|
BufferedReader reader = null;
|
|||
|
|
String result = "";
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
process = new ProcessBuilder().command("/system/bin/getprop", property).redirectErrorStream(true).start();
|
|||
|
|
reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
|
|||
|
|
String line = reader.readLine();
|
|||
|
|
result = (line == null) ? "" : line;
|
|||
|
|
}
|
|||
|
|
catch (Exception e)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
if (reader != null)
|
|||
|
|
{
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
reader.close();
|
|||
|
|
}
|
|||
|
|
catch (IOException e)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
if (process != null)
|
|||
|
|
{
|
|||
|
|
process.destroy();
|
|||
|
|
}
|
|||
|
|
return result;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public String getPXRProductName()
|
|||
|
|
{
|
|||
|
|
return getNewProp("sys.pxr.product.name");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int GetCurrentBrightness()
|
|||
|
|
{
|
|||
|
|
int currentB = SysActivity.pxr_GetScreen_Brightness(this.getApplicationContext());
|
|||
|
|
Log.debug("========== PICOXR_UPL: Current screen brightness:" + currentB+" ==========");
|
|||
|
|
return currentB;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
private MRCCalibration mMRCCalibration = null;
|
|||
|
|
public float[] MRCGetCalibrationData(String path)
|
|||
|
|
{
|
|||
|
|
return mMRCCalibration.readCalibrationData(path);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int GetPxrRuntimeVersion()
|
|||
|
|
{
|
|||
|
|
String packageName="com.pico.xr.openxr_runtime";
|
|||
|
|
PackageManager manager = this.getApplicationContext().getPackageManager();
|
|||
|
|
int code = 0;
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
PackageInfo info = manager.getPackageInfo(packageName, 0);
|
|||
|
|
if(info ==null)
|
|||
|
|
{
|
|||
|
|
return 0;
|
|||
|
|
}
|
|||
|
|
code = info.versionCode;
|
|||
|
|
}
|
|||
|
|
catch (PackageManager.NameNotFoundException e){}
|
|||
|
|
return code;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public int GetHmdBatteryLevel()
|
|||
|
|
{
|
|||
|
|
return SysActivity.getHmdBatteryLevel(this);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public void StartApplication(String packageName)
|
|||
|
|
{
|
|||
|
|
Intent launchIntent = getPackageManager().getLaunchIntentForPackage(packageName);
|
|||
|
|
if (launchIntent != null)
|
|||
|
|
{
|
|||
|
|
launchIntent.putExtra("enter_flag", 1);
|
|||
|
|
startActivity(launchIntent);//null pointer check in case package name was not found
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public String GetAndroidPackageName( )
|
|||
|
|
{
|
|||
|
|
return getApplicationContext().getPackageName();
|
|||
|
|
}
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityClassAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onCreate in GameActivity.java -->
|
|||
|
|
<gameActivityOnCreateAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnCreateAdditions ==========");
|
|||
|
|
PicovrSDK.setJniActivity();
|
|||
|
|
SysActivity.pxr_InitAudioDevice(this.getApplicationContext());
|
|||
|
|
mMRCCalibration = new MRCCalibration();
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityOnCreateAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onDestroy in GameActivity.java -->
|
|||
|
|
<gameActivityOnDestroyAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnDestroyAdditions ==========");
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityOnDestroyAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onStart in GameActivity.java -->
|
|||
|
|
<gameActivityOnStartAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnStartAdditions ==========");
|
|||
|
|
</insert>
|
|||
|
|
<if condition="bEnablePSensor">
|
|||
|
|
<true>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL: initPsensor! ==========");
|
|||
|
|
SysActivity.initPsensor(this);
|
|||
|
|
</insert>
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
</gameActivityOnStartAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onStop in GameActivity.java -->
|
|||
|
|
<gameActivityOnStopAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnStopAdditions ==========");
|
|||
|
|
</insert>
|
|||
|
|
<if condition="bEnablePSensor">
|
|||
|
|
<true>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL: unregisterListener! ==========");
|
|||
|
|
SysActivity.unregisterListener();
|
|||
|
|
</insert>
|
|||
|
|
</true>
|
|||
|
|
</if>
|
|||
|
|
</gameActivityOnStopAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onPause in GameActivity.java -->
|
|||
|
|
<gameActivityOnPauseAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnPauseAdditions ==========");
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityOnPauseAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onResume in GameActivity.java -->
|
|||
|
|
<gameActivityOnResumeAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnResumeAdditions ==========");
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityOnResumeAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional additions to GameActivity onActivityResult in GameActivity.java -->
|
|||
|
|
<gameActivityOnActivityResultAdditions>
|
|||
|
|
<insert>
|
|||
|
|
Log.debug("========== PICOXR_UPL:gameActivityOnActivityResultAdditions ==========");
|
|||
|
|
</insert>
|
|||
|
|
</gameActivityOnActivityResultAdditions>
|
|||
|
|
|
|||
|
|
<!-- optional libraries to load in GameActivity.java before libUE4.so -->
|
|||
|
|
<soLoadLibrary>
|
|||
|
|
</soLoadLibrary>
|
|||
|
|
</root>
|