我正在尝试从 Android 设备获取光传感器数据以用于 Unity 应用
I'm trying to get light sensor data from an Android device for use in a Unity app
前言:Ice-Blaze 在 2016 年制作的 post 涵盖了这一点,他的解决方案不再有效。
我试过使用他的插件,但它似乎无法传递数据或检索光传感器数据。在此过程中,我以 .aar/Android 库的形式构建了自己的插件,无论出于何种原因,我都可以将预定义的静态数据从 .aar 传递到 Unity 应用程序,但无法成功检索光数据。我相信这与检索需要基本 App-Activity 的光数据有关,我不确定如何为 .aar 而不是 .apk 构建它。
所以现在我开始尝试严格在 Unity 中工作并完全跳过插件。现在这是我的更新函数的样子:
Update()
{
InputSystem.DisableDevice(LightSensor.current);
InputSystem.EnableDevice(LightSensor.current);
if (LightSensor.current.enabled)
{
var CurrentLight = LightSensor.current.samplingFrequency;
DisplayLight = (float)CurrentLight;
}
Light.value = (float)DisplayLight;
}
所以在这里你可以看到,在每次更新时,我都禁用了设备,只是为了重新启用它。我走那条路的原因是因为这似乎只在开始时获取一次光数据所以我认为 disabling/re-enabling 可能会强制它不断地重新检查光值。现在我得到一个初始值 50 并且没有更新,这 50 可能是一个默认值,尽管我在不同的亮度下尝试过并且总是得到相同的结果。有人有任何建议或修复吗?
这是解决方法。
Update()
{
InputSystem.DisableDevice(LightSensor.current);
InputSystem.EnableDevice(LightSensor.current);
if (LightSensor.current.enabled)
{
var CurrentLight = LightSensor.current.lightLevel.ReadValue(); // <= change here
DisplayLight = (float)CurrentLight;
}
Light.value = (float)DisplayLight;
}
前言:Ice-Blaze 在 2016 年制作的 post 涵盖了这一点,他的解决方案不再有效。
我试过使用他的插件,但它似乎无法传递数据或检索光传感器数据。在此过程中,我以 .aar/Android 库的形式构建了自己的插件,无论出于何种原因,我都可以将预定义的静态数据从 .aar 传递到 Unity 应用程序,但无法成功检索光数据。我相信这与检索需要基本 App-Activity 的光数据有关,我不确定如何为 .aar 而不是 .apk 构建它。
所以现在我开始尝试严格在 Unity 中工作并完全跳过插件。现在这是我的更新函数的样子:
Update()
{
InputSystem.DisableDevice(LightSensor.current);
InputSystem.EnableDevice(LightSensor.current);
if (LightSensor.current.enabled)
{
var CurrentLight = LightSensor.current.samplingFrequency;
DisplayLight = (float)CurrentLight;
}
Light.value = (float)DisplayLight;
}
所以在这里你可以看到,在每次更新时,我都禁用了设备,只是为了重新启用它。我走那条路的原因是因为这似乎只在开始时获取一次光数据所以我认为 disabling/re-enabling 可能会强制它不断地重新检查光值。现在我得到一个初始值 50 并且没有更新,这 50 可能是一个默认值,尽管我在不同的亮度下尝试过并且总是得到相同的结果。有人有任何建议或修复吗?
这是解决方法。
Update()
{
InputSystem.DisableDevice(LightSensor.current);
InputSystem.EnableDevice(LightSensor.current);
if (LightSensor.current.enabled)
{
var CurrentLight = LightSensor.current.lightLevel.ReadValue(); // <= change here
DisplayLight = (float)CurrentLight;
}
Light.value = (float)DisplayLight;
}