From b79eeafa09a1ed29fe0ad29b95fc335b97a11948 Mon Sep 17 00:00:00 2001 From: Felipe Erias Date: Wed, 15 May 2024 10:38:06 +0900 Subject: [PATCH] [Vision Glass] Realign window and pointer together --- .../com/igalia/wolvic/PlatformActivity.java | 21 ++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/app/src/visionglass/java/com/igalia/wolvic/PlatformActivity.java b/app/src/visionglass/java/com/igalia/wolvic/PlatformActivity.java index b8f4fa69b5..becc5d758f 100644 --- a/app/src/visionglass/java/com/igalia/wolvic/PlatformActivity.java +++ b/app/src/visionglass/java/com/igalia/wolvic/PlatformActivity.java @@ -21,6 +21,8 @@ import android.hardware.display.DisplayManager; import android.opengl.GLSurfaceView; import android.os.Bundle; +import android.os.Handler; +import android.os.Looper; import android.util.Log; import android.view.ContextThemeWrapper; import android.view.Display; @@ -48,6 +50,7 @@ import com.igalia.wolvic.browser.api.WMediaSession; import com.igalia.wolvic.browser.api.WSession; import com.igalia.wolvic.databinding.VisionglassLayoutBinding; +import com.igalia.wolvic.ui.widgets.UIWidget; import com.igalia.wolvic.ui.widgets.WidgetManagerDelegate; import com.igalia.wolvic.utils.SystemUtils; @@ -61,6 +64,8 @@ public class PlatformActivity extends ComponentActivity implements SensorEventLi static String LOGTAG = SystemUtils.createLogtag(PlatformActivity.class); public static final String HUAWEI_USB_PERMISSION = "com.huawei.usblib.USB_PERMISSION"; + private static final int REORIENT_CONTROLLER_DELAY_MS = 250; + private static final int REORIENT_UI_DELAY_MS = 5_000; private boolean mIsAskingForPermission; private PhoneUIViewModel mViewModel; @@ -71,6 +76,7 @@ public class PlatformActivity extends ComponentActivity implements SensorEventLi private int mDisplayModeRetryCount = 0; private int mUSBPermissionRequestCount = 0; private boolean mSwitchedTo3DMode = false; + private Handler mUiHandler; @SuppressWarnings("unused") public static boolean filterPermission(final String aPermission) { @@ -187,6 +193,13 @@ private void registerPhoneIMUListener() { mSensorManager.registerListener(this, mSensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR), SensorManager.SENSOR_DELAY_NORMAL); } + private void reorientController() { + mSensorManager.unregisterListener(this); + registerPhoneIMUListener(); + runVRBrowserActivityCallback(activity -> activity.recenterUIYaw(WidgetManagerDelegate.YAW_TARGET_ALL)); + mUiHandler.postDelayed(() -> queueRunnable(this::calibrateController), REORIENT_CONTROLLER_DELAY_MS); + } + private void initVisionGlassPhoneUI() { setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); @@ -207,15 +220,13 @@ private void initVisionGlassPhoneUI() { mBinding.voiceSearchButton.setEnabled(false); - mBinding.realignButton.setOnClickListener(v -> { - mSensorManager.unregisterListener(this); - registerPhoneIMUListener(); - queueRunnable(this::calibrateController); - }); + mBinding.realignButton.setOnClickListener(v -> reorientController()); Button backButton = findViewById(R.id.back_button); backButton.setOnClickListener(v -> onBackPressed()); + mUiHandler = new Handler(Looper.getMainLooper()); + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); }