Forum Discussion

🚨 This forum is archived and read-only. To submit a forum post, please visit our new Developer Forum. 🚨
meteorik's avatar
meteorik
Honored Guest
3 months ago
Solved

Spatial SDK and Passthrough Camera Access

Can I get a passthrough camera stream open while running the Spatial SDK? I modified the Starter Template (https://github.com/meta-quest/Meta-Spatial-SDK-Templates/tree/main/StarterTemplate/app) just to open the camera but it seems to cause the camera to disconnected immediately.

I added a startCamera method to run when one of the panels is selected (instead of running the video):


  private fun startCamera() {
      if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
          Log.i("MainActivity", "Camera permission not granted")
      }
      if (checkSelfPermission("horizonos.permission.HEADSET_CAMERA") != PackageManager.PERMISSION_GRANTED) {
          Log.i("MainActivity", "horizonos.permission.HEADSET_CAMERA permission not granted")
      }

      val cameraManager: CameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager
      val cameraIds: Array = cameraManager.cameraIdList
      var cameraId: String = ""
      for (id in cameraIds) {
          Log.i("MainActivity", "Camera ID: $id")
          val cameraCharacteristics = cameraManager.getCameraCharacteristics(id)
          if(cameraCharacteristics.get(Key("com.meta.extra_metadata.camera_source", Int::class.java)) == 0) {
              cameraId = id
              continue
          }
      }
      cameraManager.openCamera(cameraId, cameraStateCallback, Handler(Looper.getMainLooper()))
  }

 

All permissions are good but it just fails:

2025-09-12 14:36:20.269 11285-11285 MainActivity            com...atial.samples.startertemplate  I  All permissions already granted
2025-09-12 14:36:20.271 11285-11285 MainActivity            com...atial.samples.startertemplate  I  Camera ID: 1
2025-09-12 14:36:20.278 11285-11285 MainActivity            com...atial.samples.startertemplate  I  Camera ID: 50
2025-09-12 14:36:20.279 11285-11285 MainActivity            com...atial.samples.startertemplate  I  Camera ID: 51
2025-09-12 14:36:20.299  1402-1402  CameraAccessController  system_server                        E  Failed to injectCamera for cameraId:51 package:com.meta.spatial.samples.startertemplate (Ask Gemini)
                                                                                                    android.hardware.camera2.CameraAccessException: CAMERA_DISCONNECTED (2): injectCamera:3274: No camera device with ID "" currently available

Am I missing something, can this work?