PTCInc/vuforia-engine

Camera feed doesn't adapt to lighting conditions (Lenovo Tab P11 Pro (2nd Gen))

D3LV4R opened this issue · 12 comments

Summarize your device feedback
When using any Vuforia related app at the Lenovo Tab P11 Pro (2nd Gen) the camera feed gets very dark in poor lighting conditions. I have already tried different devices and apps. In brighter lighting conditions everything works fine. The Lenovo Tab P11 Pro (1st Gen) doen't have this problem.

Describe your device
The Lenovo Tab P11 Pro (2nd Gen) is a tablet. We use it to scan posters to show additional information and 3D modells.

Business Impact
I'm working at a university of applied sciences. We show people results of today's science.

Link to device manufacturer / device specifications
no problem: https://www.lenovo.com/de/de/p/tablets/android-tablets/lenovo-tab-series/lenovo-tb-j706/zzitztatb0j
problem: https://www.lenovo.com/de/de/departsales/c/Tab-P11-Pro-2nd-Gen/p/LEN103L0011

Additional context
Screenshot of the official Vuforia View Play Store App
Screenshot

Same lighting condition when using the normal camera app
Camera

Hi there, sadly we do not provide technical support for other Vuforia products such as Vuforia Studio and the Vuforia View app via this issue repository. I recommend to create a new support case through the PTC eSupport portal or reach out via our Vuforia Studio Community Forums.

I will close this ticket as this is not related to the public Vuforia Engine SDK. Apologies I cannot be of more help.

Thank you for your reply.
This issue doesn't only happen at the Vuforia View app, I just took this as an example to show that there aren't any programming or integration mistakes I did by accident. This bug happened at first when I was developing with Unity. I could recreate it with all Unity versions I tried.

Hi there, in that case I apologize! I will keep this ticket open as a bug report and will check with the team. Do note that this device is not part of our recommended device list (only in the ARCore supported device list) so support can be limited.

@D3LV4R this problem is likely unrelated to Vuforia Engine as it has been independently reported on the ARCore forum as well google-ar/arcore-android-sdk#1627 .

You could try to switch ARCore off by using the VISION_ONLY fusion provider but this would limit some Engine capabilities

see these two links:
https://developer.vuforia.com/sites/default/files/references/unity/group__VuforiaApplicationGroup.html#gafa43fb4756bd67edb0ea1bca50033dce

https://developer.vuforia.com/library/environments/vuforia-fusion

Great find, thanks @ptc-emaggio. @D3LV4R, if you can turn off ARCore as stated above we can at least limit this issue to ARCore or Vuforia.

I set the ARCode Requirement in the Vuforia Configuration to DONT_USE and initialized Vuforia with FusionProviderOption.VUFORIA_FUSION_ONLY. I checked the fusion provider, the result is VISION_ONLY.

There is still the same bug, nothing changed.

Thanks @D3LV4R for the test. Could you please share the Android log? https://developer.android.com/studio/debug/logcat

I'm not familiar with Android logs so I'm not sure if I logged with the right settings. This is the unfiltered logcat export from the app startup including splash screen.
app_startup.zip

@D3LV4R thanks from sharing the log. From a first look it seems that automatic exposure is disabled. Either this is the default for this specific device or someone is setting it this way (you can look for the two messages below in the log

"message": "setManualExposureTime(): manualExp(10000)."
"message": "setManualSensitivity(): ISO(100)"

Vuforia does not check if auto-exposure is enabled by default. However it is possible to ask the camera to enable auto-exposure using these API calls:

Note that these do not work when ARCore is enabled, and from our experience not all Android OEMs implement them correctly.

@ptc-emaggio thanks for this information. When I call VuforiaBehaviour.Instance.CameraDevice.ExposureMode without changing anything I get EXPOSURE_MODE_CONTINUOUSAUTO. I tried to change the exposure mode (after Vuforia is initialized) with VuforiaBehaviour.Instance.CameraDevice.SetExposureMode(...) and the return value of the method is true but the Android log doesn't show any new messages about setManualExposureTime or setManualSensitivity.

@D3LV4R thanks for the information. This indicates that the Android API we invoke internally to set exposure does not respond correctly. This can be either a camera driver issue (sometimes fixed by an OS update) or they just did not bother to implement it at all. Unfortunately it is unlikely there is anything we can do on our side to solve this problem.

As this issue is related to ARCore I would recommend to reach out to Google or Lenovo, or create a new bug ticket on their side (e.g. google-ar/arcore-android-sdk#1627) to verify if this is implemented on their side. Feel free to re-open or create a new bug report in the future.