首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用数据层API发送磨损传感器数据值

使用数据层API发送磨损传感器数据值
EN

Stack Overflow用户
提问于 2020-12-15 17:42:20
回答 1查看 81关注 0票数 0

我正在开发一个移动和可穿戴的应用程序,以同时从移动和手持设备获取传感器数据。当我按下“开始收集数据”时,它会向可穿戴设备发送一条消息,启动传感器服务并开始收集数据,同时也开始从移动传感器收集传感器数据。同样,当我按下“停止”按钮时,它会停止收集数据。我正在使用DataItem将可穿戴传感器数据的每个值发送回移动设备,以便稍后保存在移动存储中。

代码语言:javascript
复制
public void onSensorChanged(SensorEvent event) {
    int sensorType = event.sensor.getType();
    if (sensorType == Sensor.TYPE_ACCELEROMETER) {
        float[] values = event.values;
        Log.d(TAG, "onSensorChanged: Changed" );

        sendSensorData (values);

    }
}  



private void sendSensorData (float[] values) {
    PutDataMapRequest putDataMapRequest= PutDataMapRequest.create(NEW_VALUE);
    putDataMapRequest.getDataMap().putFloatArray(KEY, values);
    putDataMapRequest.getDataMap().putLong("Time", System.currentTimeMillis());
    PutDataRequest putDataRequest= putDataMapRequest.asPutDataRequest().setUrgent();

    Task<DataItem> dataItemTask = Wearable.getDataClient(this).putDataItem(putDataRequest);
    dataItemTask.addOnSuccessListener(new OnSuccessListener<DataItem>() {
        @Override
        public void onSuccess(DataItem dataItem) {
            Log.d(TAG, "onSuccess: "+ dataItem);

        }
    });
}

我正在使用移动软件包中的onDataChanged来监听可穿戴设备中的数据更改。我在可穿戴软件包中使用System.currentTimeMillis(),以确保传感器数据连续传回移动设备。

这是接收端的代码,即手持设备。

代码语言:javascript
复制
public void onDataChanged(DataEventBuffer dataEventBuffer) {

    for(DataEvent event: dataEventBuffer) {
        if (event.getType() == DataEvent.TYPE_CHANGED) {
            DataItem dataItem= event.getDataItem();
            Uri uri = dataItem.getUri();
            String path = uri.getPath();

            if(path.equals(NEW_VALUE)) {
                DataMap dataMap = DataMapItem.fromDataItem(dataItem).getDataMap();
                getSensorData (dataMap);

                //Log.d(TAG, "onDataChanged: "+ dataMap);
            }
        }
    }

    super.onDataChanged(dataEventBuffer);
}

问题是,当我停止收集数据并比较两个数据记录时,手机收到的可穿戴数据记录的数量非常少,据我所知,这是由于手机和传感器之间的通信时间造成的,这导致了延迟。我确实理解,在任何理想的情况下,数据记录在数量上都不会完全相似。有没有什么方法可以最小化两个设备传感器数据之间的数据延迟?

EN

回答 1

Stack Overflow用户

发布于 2020-12-15 19:58:22

您面临的问题是因为您手机内部传感器的采样率与可穿戴设备的采样率不同。例如,你手机上的加速计可能运行在400赫兹,而你可穿戴设备上的加速计仅运行在100赫兹或更低。

不久前,我整理了一个小列表,列出了智能手机的最大传感器采样率。正如你所看到的,几乎每个模型都有不同的采样率:

https://docs.google.com/spreadsheets/d/1vZEryeslHOq-pl_C-scoS4us21goxg8oyqviUgDGq2k/edit?usp=sharing

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65303354

复制
相关文章

相似问题

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