ionic 3 File plugin - 如何将加速度计数据写入文件

时间:2017-06-06 19:54:19

标签: ionic-framework cordova-plugins accelerometer ionic-native

我正在研究一个使用100hz加速度计的离子项目。 我需要将加速计读数保存到文件中,并且我正在使用离子本机文件插件。 我的问题 - 文件的写入时间比加速度计采样时间长,文件中的数据没有按照所需的顺序写入(更新的数据是在前一个数据写入之前写的。

这是处理加速度计读取和写入本地文件的提供程序:`import {DeviceMotion,DeviceMotionAccelerationData}来自

'@ionic-native/device-motion';
import {Subject} from "rxjs/Subject";
import {Observable} from "rxjs/Observable";
import {Subscription} from "rxjs/Subscription";

import {Http} from '@angular/http';
import {File} from '@ionic-native/file';

@Injectable()
export class DeviceMotionProvider {
    accelerometerata$: Subject<DeviceMotionAccelerationData> = new Subject();
    subscription: Subscription;

    constructor(private deviceMotion: DeviceMotion, private http: Http,
                private file: File) {


    }

    startAccelerometer() {
        // Watch device acceleration
        this.subscription = this.deviceMotion.watchAcceleration({frequency: 100})
            .subscribe((acceleration: DeviceMotionAccelerationData) => {
                this.accelerometerata$.next(acceleration);
                this.file.writeFile(this.file.dataDirectory, 'flightData.txt', acceleration.timestamp + ',' +Math.sqrt(acceleration.x*acceleration.x+acceleration.y*acceleration.y+acceleration.z*acceleration.z)/10 + '\n' ,{ append:true})
            });
    }

    getAccelerometerData(): Observable<DeviceMotionAccelerationData> {
        return this.accelerometerata$.asObservable();
    }

    stopAccelerometer() {
        this.subscription.unsubscribe();
    }


}`

我无法找到克服这个问题的正确方法。 任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

我尝试过同样的事情。但是,(1)我尝试用10hz和(2)我限制时间/#记录。我这样做的方法是将所有数据收集到一个数组或任何缓冲套件中,一旦收集完成,迭代整个集合,格式化并将数据写入文件。

希望这有帮助