簡體   English   中英

Android Smartwatch采樣頻率

[英]Android Smartwatch sampling frequency

我一直在使用Sony Smartwatch 3記錄長時間(平均8小時)的加速度計數據。 以下是主要代碼塊:ax,ay和az是用於存儲傳感器值的數組列表,而ta是具有相應時間戳的數組列表。

private void startMeasurement() {
    mSensorManager = ((SensorManager) getSystemService(SENSOR_SERVICE));
    Log.d("lister", "listeners");
    Sensor accelerometerSensor = mSensorManager.getDefaultSensor(SENS_ACCELEROMETER);

    // Register the listener
    if (mSensorManager != null) {
        mSensorManager.registerListener(this, accelerometerSensor,25000);
    }
}

    @Override
public void onSensorChanged(SensorEvent event) {
    if(event.sensor.getType() == SENS_ACCELEROMETER){
        ax.add(event.values[0]);
        ay.add(event.values[1]);
        az.add(event.values[2]);
        ta.add(System.currentTimeMillis());
    }

}

public void write(){
    String timeStamp = new SimpleDateFormat("yyMMdd_HHmmss").format(Calendar.getInstance().getTime());
    File file = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/sensor_data/" + timeStamp + ".csv");
    try{
        FileWriter fw = new FileWriter(file);
        BufferedWriter buffWriter = new BufferedWriter(fw,50*1024);
        for(int i=0;i<ax.size();i++){
            buffWriter.write(String.valueOf(ax.get(i)));
            buffWriter.write(",");
            buffWriter.write(String.valueOf(ay.get(i)));
            buffWriter.write(",");
            buffWriter.write(String.valueOf(az.get(i)));
            buffWriter.write(",");
            buffWriter.write(String.valueOf(ta.get(i)));
            buffWriter.write("\n");
        }
        buffWriter.flush();
        buffWriter.close();
    }catch (IOException e){
        e.printStackTrace();
    }

}

當查看樣本之間的時間差時,我注意到在記錄數據一段時間后該時間增加了。 在下面的鏈接中,您可以查看以秒為單位的樣本之間的時間差圖。 在此處輸入圖片說明

為什么一段時間記錄后差異突然跳到50?

最終使用Android的PowerManager和PARTIAL_WAKE_LOCK解決了問題。 它消耗更多的電池,但是我確實需要使采樣頻率保持幾乎恆定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM