Android传感器数据收集无法正常运行

时间:2014-01-09 15:18:34

标签: android accelerometer timertask gyroscope data-collection

我开发了一个数据收集器,它可以从Accelerometer,Gyroscope,Magnetometer收集数据,并且它可以正常工作一段时间。然后我也添加了线性加速(4个月后,本周)。现在这两个版本都表现得非常奇怪。有时候,当我做一些像走路等物理活动时,他们会完美地记录数据。但是,有时候它不会更新传感器值,只是重复旧值,即每个传感器值都会在5秒,2秒等后随机更新,我需要一个采样率为每秒50个样本。我试验了10-15名参与者,因此我的所有数据都无效。奇怪的是,同一个应用程序以前完美运行。我找不到任何问题。我在这里放置了一些快照。可能是有人可以指出任何错误或什么?

缓冲的Writer:

FileWriter fow;
    BufferedWriter bow;

extfile = new File(extfilepath, message + ".csv");
                    fow = new FileWriter(extfile);
                    bow = new BufferedWriter(fow);  

然后,这个bow.writer被用于timertask线程,每20毫秒记录一次数据。

任何人都可以对此发表评论或帮助吗?这个应用程序的奇怪行为超出了我的理解。

2 个答案:

答案 0 :(得分:2)

如果您的应用程序转到后台,请检查是否已获取唤醒锁定。我在数据收集应用程序中成功使用了PowerManager.PARTIAL_WAKE_LOCK。

当您的显示屏关闭时,您的应用程序至少会暂停(系统甚至可能会停止它)。部分唤醒锁定“确保CPU正在运行;屏幕和键盘背光将被允许关闭。”因此,在线之间读取意味着您的CPU可能会在很短的时间内进入休眠状态以节省电量。

答案 1 :(得分:0)

你忘了粘贴: else if(event.sensor.getType()== Sensor.TYPE_LINEAR_ACCELERATION){}? 你在使用加速度计数据,然后减去重力吗?

行。你的代码调用计时器是什么样的?像这样的东西?

    Timer updateTimer = new Timer("linear accel");
    updateTimer.scheduleAtFixedRate(new TimerTask() {
        public void run() {
            updateGUI();
        }
    }, 0, 100);
}

private void updateGUI() {
    runOnUiThread(new Runnable() {
        public void run() {} } ?
相关问题