首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Google 7上的重要运动传感器

Google 7上的重要运动传感器
EN

Stack Overflow用户
提问于 2014-12-01 06:01:18
回答 1查看 1.5K关注 0票数 2

我正在试图检测移动汽车中Android设备的开始/停止运动。为此,我试图在我的Google 7 (2012)平板电脑(Jellybean)上使用重要的运动传感器。我使用的参考代码是

但是,代码永远不会检测到有意义的运动,而且SensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION);总是在代码中返回null。

你能告诉我我错过了什么吗?有没有其他方法来检测移动汽车中Android设备的启动/停止运动,使用其他传感器?

EN

回答 1

Stack Overflow用户

发布于 2014-12-01 06:46:56

你能告诉我我错过了什么吗?

平板电脑可能不提供传感器。我发现许多低端平板电脑只提供加速计。传感器丰富的设备提供5或6个传感器,但我不记得遇到过重大的运动传感器。

您可以使用以下代码从JNI转储传感器。我不确定您是否会从Java中获得相同的结果。我使用这段代码对传感器进行采样,并在一个随机数生成器中植入种子,所以我已经在许多设备上查看了它们。感兴趣的是int type = ASensor_getType(sensor);

代码语言:javascript
运行
复制
ASensorManager* sensorManager = ASensorManager_getInstance();
int n = ASensorManager_getSensorList(sensorManager, &sensorArray);

for (int i = 0; i < n; i++) {
    const ASensor* sensor = sensorArray[i];
    if (sensor == NULL) continue;

    const char* name = ASensor_getName(sensor);
    int type = ASensor_getType(sensor);
    const char* vendor = ASensor_getVendor(sensor);
    int min_delay = ASensor_getMinDelay(sensor);
    float resolution = ASensor_getResolution(sensor);

    LOG_DEBUG("SensorArray: %s (%s) %d %d %f", name, vendor, type,
                min_delay, resolution);
}

调用int type = ASensor_getType(sensor);之后,可以使用以下函数对类型进行解码。

代码语言:javascript
运行
复制
static const char* SensorTypeToName(int sensorType) {
    switch (sensorType) {

    /* <ndk root>/.../sensor.h */
    case ASENSOR_TYPE_ACCELEROMETER: /* 1 */
        return "Accelerometer";
    case ASENSOR_TYPE_MAGNETIC_FIELD: /* 2 */
        return "Magnetic field";
    case ASENSOR_TYPE_GYROSCOPE: /* 4 */
        return "Gyroscope";
    case ASENSOR_TYPE_LIGHT: /* 5 */
        return "Light";
    case ASENSOR_TYPE_PROXIMITY: /* 8 */
        return "Proximity";

    /* http://developer.android.com/reference/android/hardware/Sensor.html */
    case 0:
        return "type 0";
    case 3:
        return "Orientation";
    case 6:
        return "Pressure";
    case 7:
        return "Temperature";
    case 9:
        return "Gravity";
    case 10:
        return "Linear acceleration";
    case 11:
        return "Rotation vector";
    case 12:
        return "Relative humidity";
    case 13:
        return "Ambient temperature";
    case 14:
        return "Uncalibrated magnetic field";
    case 15:
        return "Rotation vector";
    case 16:
        return "Uncalibrated gyroscope";
    case 17:
        return "Significant motion";
    case 18:
        return "type 18";
    case 19:
        return "Step counter";
    case 20:
        return "Geo-magnetic rotation vector";
    case 21:
        return "Heart rate";
    default:
        ;
    }
    return "Unknown";
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27222537

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档