【问题标题】:A generic sensor name通用传感器名称
【发布时间】:2017-01-27 11:38:16
【问题描述】:

有没有办法获得传感器的通用名称?目前我的应用程序允许用户从列表视图中选择一个传感器。根据传感器,应用程序应该执行各种操作。

我尝试使用 switch case 语句并使用传感器名称作为参数来执行此操作。但由于传感器名称特定于我的手机型号,因此保护套不适用于其他手机。

例如,“SAMSUNG 重要运动传感器”不会触发 nexus 手机中的运动传感器。

我尝试使用 getType() 来获取传感器的类型。但并非所有传感器都有类型。

我的问题是:有没有办法获得适用于所有手机的传感器名称?

switch(sensorName){
        case "K330 3-axis Accelerometer":
            Toast.makeText(getActivity(),"Case 1: "+ sensorName, Toast.LENGTH_SHORT).show();
            break;
        case "YAS532 Magnetic Sensor":
            Toast.makeText(getActivity(), "Case 2: "+sensorName, Toast.LENGTH_SHORT).show();
            break;
        case "K330 Gyroscope sensor":
            Toast.makeText(getActivity(),"Case 3: "+ sensorName, Toast.LENGTH_SHORT).show();
            break;
        case "Barometer Sensor":
            break;
        case "MAX88920 Proximity Sensor":
            break;
        case "CM3323 RGB Sensor":
            break;
        case "SAMSUNG Significant Motion Sensor":
            break;
        default:
            break;
    }

【问题讨论】:

  • 只是一个简单的想法,不知道传感器名称在不同设备上的含义。你为什么不检查 sensorName.contains("Accelerometer") 而不是大多数时候特定于设备的全名?
  • case sensorName.contains("Step Counter"): 这就是您的建议吗?嗯,它告诉我必需:找到的字符串:布尔值。您能否提供代码示例,我可能会误解您的意思
  • 我会用 if(sensorName.contains("Step Counter")){ //blabla }else if(sensorName.contains("Accelerometer")) { //blabla } 你做不到.contains() 在一个开关中
  • 是的,我想这可行。但是我读过使用这个人的 if 语句不是一个好主意吗?我需要大约 20 个 if 语句才能适应手机中的所有传感器。
  • 是的,我同意这不是很酷,但我目前没有看到更好的方法。

标签: java android sensors android-sensors


【解决方案1】:

您可以尝试检查sensorName 是否包含“加速度计”、“运动传感器”等流行语。

if(sensorName.contains("Accelerometer")) { 
    //do stuff
} else if(sensorName.contains("Motion Sensor")) { 
    //do stuff
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 2023-02-23
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2011-05-11
    相关资源
    最近更新 更多