Meta Quest Browser file input fails with some file extensions
While developing a web app with three.js, I noticed an unexpected behavior of Meta Quest Browser: if I choose a .glb model file with a <input type="file"> tag, and try to access it in javascript, the browser does not allow access to the file if I manually change the extension to .png, it works. Disabling safe navigation in browser's settings does not solve the problem. The problem occur only on Meta Quest Browser: Chrome on Windows and Android behave as expected. This is the code handling file input: const fileInput = document.getElementById('file') as HTMLInputElement fileInput.addEventListener('change', (e) => loadModel((e.target as HTMLInputElement).files![0])) function loadModel(file: File) { const url = URL.createObjectURL(file) const loader = new GLTFLoader() loader.load( url, function ( gltf ) { scene.add( gltf.scene ); console.log('Model loaded') }, undefined, function ( error ) { console.error( error ); } ); } And this is the console error I get when accessing file with .glb extension GET blob:https://192.168.1.161:5500/83bfd355-2cf6-4714-bda7-3c6cf3331c58 net::ERR_ACCESS_DENIED 200 (OK) load @ three.module.js:41933 load @ GLTFLoader.js:222 loadModel @ index.ts:58 (anonymous) @ index.ts:52 Uncaught (in promise) TypeError: network error Promise.then (async) readData @ three.module.js:41973 start @ three.module.js:41969 (anonymous) @ three.module.js:41966 Promise.then (async) load @ three.module.js:41934 load @ GLTFLoader.js:222 loadModel @ index.ts:58 (anonymous) @ index.ts:52 I set up a sample web app to reproduce the problem: https://fornaeffe.github.io/vr-playground/ source code here: https://github.com/fornaeffe/vr-playground/tree/visorr-upload-bug Other details of the problem explained here: https://stackoverflow.com/questions/77068404/model-loaders-work-in-chrome-but-not-in-meta-quest-2-browser-when-using-file-in and here: https://discourse.threejs.org/t/gltfloader-works-in-chrome-but-not-in-meta-quest-2-browser/558031.2KViews0likes1CommentSupport of Web Bluetooth (BLE) in Quest Browser
Hi everybody, I am trying to implement web application which should connect to wearable medical devices like ECG or PPG sensors via BLE. I am pretty familiar with Web Bluetooth on the web and implemented several applications this way. I am using A-Frame framework for VR scene and I would like to use Web Bluetooth API to get the data from the sensors. Problem is that the Web Bluetooth API responds in Meta Quest Browser like there is no BLE in the Quest device. However, I did some tests and installed the clear Chromium to the device and in this browser the BLE and all the API functions work correctly, so the Quest Browser has this problem. So finally my question is, Is this a bug or the Meta intentionally blocks these feature? PS: Why will I not use a clear Chromium instead? Well the Quest browser is optimized for the Quest device and unfortunately in the Chromium the VR scene does not work very well (mainly because missing Google services). Thanks for all possible help. 🙂 David682Views0likes0CommentsMeta Quest Browser Bug - 3D Scene Jitter - Developer - THREE.js
We are reporting a bug and seeking help. It is most likely a bug of Meta Quest Browser or related infrastructures. we are developers making 3D VR browser based Apps. We open our 3D Scenes (rendered by THREE.js) in Meta Quest Brower. The issue is, we notice that the scene would jitter even for the simplest example link from THREE.js official website. To reproduce, just open the following link in Meta Quest Browser and use controllers to drag the scene to rotate. https://threejs.org/examples/#webgl_animation_keyframes Jitter will likely to show up (not every time but pretty frequent). We believe this is more likely to be a bug of quest/browser other than the web page because the web page is simple and good in every other desktop/mobile browsers. One hint is, the jitter seem only happen (or much more frequent) when Passthrough mode is turned off. If you can not reproduce please refer to this video - it's captured by phone directly into the quest lens.: https://www.youtube.com/watch?v=hEha6OoYvyA This issue currently impacts our app badly - if anyone knows anything please let us know. Appreciate so much!!425Views0likes0CommentsAnimation gets paused in Meta Quest Browser
We have created a vr app. We have used GSAP library to create animation. Based on conditions, the animation gets started. Running the VR app in meta quest browser, the animation gets paused. When I maximize the browser again then only animation starts working. How to I ensure my animation doesn't get paused in Metaquest browser and play smoothly?498Views1like0CommentsMeta quest browser STT and TTS support.
The meta quest browser is currently on a lower version of chromium and the features like TTS and STT are not working on it. Does anyone know when the next update to the browser would come or at least how I can get the STT and TTS working on the quest browser before that update? Any help would be greatly helpful.577Views0likes0CommentsOpen application from Quest web browser through a "android:scheme" Deeplink
I followed the Android deep linking documentation to be able to open my Quest application from the Quest web browser: 1. Edit the AndroidManifest.xml of the application to add this: <intent-filter> <action android:name="android.intent.action.VIEW" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> <!-- Accepts URIs that begin with "example://gizmos” --> <data android:scheme="example" android:host="gizmos" /> </intent-filter> 2. Deploy the application to the Quest device 3. Run this command where "com.example.android" is the application pacakge: adb shell am start -W -a android.intent.action.VIEW -d "example://gizmos" com.example.android This works, e.g the previous command launches the application on the device. The "android.intent.category.BROWSABLE" is here to allow this intent action to be launched from a web browser. So now please open the Quest web browser on the device, then try to navigate to the "example://gizmos" URL. This does not work, e.g the application is not launched by querying the "example://gizmos" URL from the Quest web browser. The Android Log cat shows the following output: 2023/05/15 10:52:57.625 24304 24304 Info chromium [INFO:web_contents_impl.cc(6947)] WebContentsImpl Loading end: ID = 3 2023/05/15 10:52:57.630 24304 24304 Info cr_tabmodel Appending tabs being restored to metadata lists, 0, startingNormalCount: 2, startingIncognitoCount: 0 2023/05/15 10:52:57.630 24304 24304 Info cr_tabmodel Serializing tab lists; counts: 2, 0 2023/05/15 10:52:57.635 2990 3117 Warn [CT] Anchor:SlamAnchorMemoryOSSDKClient: [Throttled count=551] Skipping invalid anchorHandle when attempting to cache AnchorStates 2023/05/15 10:52:57.649 22167 22167 Debug Zygote Forked child process 28240 2023/05/15 10:52:57.651 1083 1172 Debug ActivityManager Is background playback GK enabled: false Is background playback enabled for all apps: false 2023/05/15 10:52:57.651 1083 1172 Error AppOps Cannot setMode 2023/05/15 10:52:57.651 1083 1172 Error AppOps java.lang.SecurityException: Specified package com.oculus.browser under uid 90086 but it is not 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4621) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4513) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2784) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2770) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.setAppOpMode(ActivityManagerService.java:14775) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.onTopAppStatusChanged(ActivityManagerService.java:14713) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2703) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2674) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStart(ProcessList.java:2204) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.lambda$startProcessLocked$0$ProcessList(ProcessList.java:2125) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList$$ExternalSyntheticLambda1.run(Unknown Source:22) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.handleCallback(Handler.java:938) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.dispatchMessage(Handler.java:99) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loopOnce(Looper.java:214) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loop(Looper.java:304) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.HandlerThread.run(HandlerThread.java:67) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.ServiceThread.run(ServiceThread.java:44) 2023/05/15 10:52:57.651 1083 1172 Error AppOps Cannot setMode 2023/05/15 10:52:57.651 1083 1172 Error AppOps java.lang.SecurityException: Specified package com.oculus.browser under uid 90086 but it is not 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4621) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4513) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2784) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2770) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.setAppOpMode(ActivityManagerService.java:14775) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.onTopAppStatusChanged(ActivityManagerService.java:14719) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2703) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2674) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStart(ProcessList.java:2204) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.lambda$startProcessLocked$0$ProcessList(ProcessList.java:2125) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList$$ExternalSyntheticLambda1.run(Unknown Source:22) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.handleCallback(Handler.java:938) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.dispatchMessage(Handler.java:99) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loopOnce(Looper.java:214) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loop(Looper.java:304) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.HandlerThread.run(HandlerThread.java:67) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.ServiceThread.run(ServiceThread.java:44) 2023/05/15 10:52:57.651 1083 1172 Error AppOps Cannot setMode 2023/05/15 10:52:57.651 1083 1172 Error AppOps java.lang.SecurityException: Specified package com.oculus.browser under uid 90086 but it is not 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4621) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.verifyAndGetBypass(AppOpsService.java:4513) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2784) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.appop.AppOpsService.setMode(AppOpsService.java:2770) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.setAppOpMode(ActivityManagerService.java:14775) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ActivityManagerService.onTopAppStatusChanged(ActivityManagerService.java:14724) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2703) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStartedLocked(ProcessList.java:2674) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.handleProcessStart(ProcessList.java:2204) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList.lambda$startProcessLocked$0$ProcessList(ProcessList.java:2125) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.am.ProcessList$$ExternalSyntheticLambda1.run(Unknown Source:22) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.handleCallback(Handler.java:938) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Handler.dispatchMessage(Handler.java:99) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loopOnce(Looper.java:214) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.Looper.loop(Looper.java:304) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at android.os.HandlerThread.run(HandlerThread.java:67) 2023/05/15 10:52:57.651 1083 1172 Error AppOps at com.android.server.ServiceThread.run(ServiceThread.java:44) 2023/05/15 10:52:57.652 1083 1172 Info ActivityManager Start proc 28240:com.oculus.browser:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:49/u0ai86 for {com.oculus.browser/org.chromium.content.app.SandboxedProcessService0:49} 2023/05/15 10:52:57.668 948 1452 Error Tracking SubmapRecords: findSubmapId found 2 submap records hold the same query krHandle 2023/05/15 10:52:57.680 28240 28240 Error cessService0:4 Not starting debugger since process cannot load the jdwp agent. 2023/05/15 10:52:57.614 0 0 Info binder 28240:28240 ioctl 40046210 7fc6e6fd54 returned -22 2023/05/15 10:52:57.700 1083 6246 Debug CompatibilityChangeReporter Compat change id reported: 168419799; UID 10058; state: DISABLED 2023/05/15 10:52:57.708 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 171979766; UID 90086; state: ENABLED 2023/05/15 10:52:57.726 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 175409949; UID 90086; state: DISABLED 2023/05/15 10:52:57.727 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 175409951; UID 90086; state: DISABLED 2023/05/15 10:52:57.729 28240 28240 Debug CompatibilityChangeReporter Compat change id reported: 175409950; UID 90086; state: DISABLED 2023/05/15 10:52:57.730 28240 28240 Debug NetworkSecurityConfig Using Network Security Config from resource 0_resource_name_obfuscated debugBuild: false 2023/05/15 10:52:57.733 28240 28240 Debug NetworkSecurityConfig Using Network Security Config from resource 0_resource_name_obfuscated debugBuild: false 2023/05/15 10:52:57.748 28240 28240 Info cr_SplitCompatApp Launched version=112.0.5615.136 minSdkVersion=25 isBundle=false processName=com.oculus.browser:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:49 isIsolated=true 2023/05/15 10:52:57.750 948 27901 Info Tracking CONSTELLATION:VISION_STATUS: fb11304f9b41e4ec (R): BlobDetection:[#BlobsDetected=(15.24, 6.50)]Matching:[MatchSuccess=1.000, MatchCost=(0.00142, 0.00000), #MatchedBlobs=(8.10, 3.35), #MatchedLeds=(6.94, 0.12), RematchM=0.000, SkipRefine=0.000] MatchMethod:[Prox=1.000, ConstBrute=0.000, UnconstBrute=0.000] MatchResets[AnomBlobSize=0.000, SharedMatch=0.000, DenseReacq=0.000] | Fusion:[FusionError=0.000, ImuFromCamMs=(8.902, 1.609), RematchF=0.004] FusionUpdates:[Successful=0.140, Reliable=0.140, TightFusion=0.140, FullPose=0.000, StaticPrior=0.860, StaticForHandTrans=0.860, PoseUpdateMD=(0.0000, 0.0000)] FusionResets[6DoFReset=0.000, ResetSuccess=0.000] FusionStatus[HasPosition=1.000, HasVelocity=1.000] 2023/05/15 10:52:57.754 28240 28240 Info cr_ChildProcessService Creating new ChildProcessService pid=28240 2023/05/15 10:52:57.757 24304 24329 Info cr_ChildProcessConn onServiceConnected: org.chromium.content.app.SandboxedProcessService0 2023/05/15 10:52:57.758 568 568 Error SELinux avc: denied { find } for pid=28240 uid=90086 name=content_capture scontext=u:r:isolated_app:s0:c512,c768 tcontext=u:object_r:content_capture_service:s0 tclass=service_manager permissive=0 2023/05/15 10:52:57.763 28240 28253 Error cr_ChromiumAndroidLinker ReserveAddressWithHint: Address range starting at 0x76be260000 was not free to use 2023/05/15 10:52:57.766 1083 6246 Info ActivityManager Killing 28240:com.oculus.browser:sandboxed_process0:org.chromium.content.app.SandboxedProcessService0:49/u0a58i-8914 (adj 0): isolated not needed This has been reported for a few years and several times on the Meta community forum, Stackoverflow and Unity developer forum but without an answer to workaround it or to explain why it's not possible to achieve. Something in the Meta Quest web browser prevents the intent action to open the application. A feedback from the Developper Team of the Meta Quest web browser would be great, at least to say "we cannot support this because [...]".2.6KViews3likes3CommentsStreaming platforms not suported by the meta quest 3 browser
I bought the Meta Quest 3 expecting to be able to watch, through the streaming platforms im subscribed to, different live sport leagues such as the NFL, NBA, champions league, etc. I’m from Mexico and I usually watch this sporting events through HBO MAX or Star+ but this platforms aren’t supported by the Quest’s browser, so I don’t know if there’s going to be an update for this or something.1.2KViews0likes0CommentsOculus Browser - full screen video controls getting in the way of immersive content
I have a problem with the z-index of the fullscreen video control bar in Oculus Browser, blocking my interactions with elements 'behind' it. I am playing 360 videos in Oculus Browser in full screen and then selecting "360 video" from the dropdown menu in the video control bar, to see them in full wraparound view. What I'm actually doing is presenting a web page in 360, using the Fullscreen API - not just a video file. https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API With the video filling the page, and some clickable hotspots overlaid on top of it. The problem is that the video control bar (with Play button, skip forwards/back and Normal/180/360 and 2D/3D options) is sitting halfway between the viewer and the video and blocking any interactions behind it. All clicks anywhere on the screen just pull up the video control bar wherever you click. What I need is for it to let me click the clickable elements behind the video control bar, but I can't. The video control bar basically creates a kind of invisible forcefield halfway between my hands/controllers and the buttons overlaid on the video. Is there anything I can do? Is there any documentation I've missed about developing for these immersive features in Oculus Browser?1.9KViews0likes0CommentsIssue with Browser and VR Mode
We've found that when we launch a View intent with a WebXR link from a third party application, the Oculus Browser doesn't always show VR Mode as an available option. This is true for Youtube, as well as products like 3D Vista. Is this a known issue? Is there some other setting, or recent update, that has made it more difficult for third party apps to launch the browser and keep VR mode as an option?691Views0likes0Comments