有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我正在尝试从Android设备获取光传感器数据,以便在Unity应用程序中使用

前言:2016年,Ice Blaze发表了一篇文章,内容涵盖了这一点,他的解决方案不再有效

我试过使用他的插件,但它似乎无法传递数据或检索光传感器数据。在这个过程中,我以一个插件的形式构建了自己的插件。aar/Android库,无论出于何种原因,我都可以从中传递预定义的静态数据。aar到Unity应用程序,但未成功检索灯光数据。我相信这与检索需要基本应用程序活动的light数据有关,我不知道如何为一个应用程序构建它。aar而不是a。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;
}

所以在这里你可以看到,在每次更新中,我禁用设备只是为了重新启用它。我之所以这样做,是因为这似乎只在启动时获取灯光数据一次,所以我认为禁用/重新启用可能会迫使它一致地重新检查灯光值。现在我得到一个初始值50,没有更新,这50可能是一个默认值,虽然我在不同的亮度下尝试过,总是得到相同的结果。有人有什么建议或修正吗


共 (1) 个答案

  1. # 1 楼答案

    这是解决办法

    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;
    }