exec method

Future<String> exec(
  1. {required AccelerometerEventWithTime accelerometer,
  2. required GyroscopeEvent gyroscope,
  3. required DateTime startDate}
)

センサーデータをCSVファイルに保存する。

デバイス情報、ユーザーID、およびセンサーデータを収集し、 それらをCSV形式に結合してローカルに保存します。

parameters:

  • accelerometer : 加速度センサーのデータ
  • gyroscope : ジャイロセンサーのデータ
  • startDate : 動画撮影開始時刻

return:

  • 保存したファイルのパス String

使用するサービス:

Implementation

Future<String> exec(
    {required AccelerometerEventWithTime accelerometer,
    required GyroscopeEvent gyroscope,
    required DateTime startDate}) async {
  try {
    // デバイスの情報を取得する
    final deviceInfo = await _getDeviceInfoService.exec();

    // UserID(email)を取得する
    final userId = await _getCurrentUserEmailService.exec();

    // CSV出力用のデータを作成
    final InstructorRecord instructorRecord = InstructorRecord(
      timeStamp: accelerometer.accelerometerGetTime.microsecondsSinceEpoch,
      accelerometerGetTime: accelerometer.accelerometerGetTime,
      frame: null,
      userName: null,
      userId: userId,
      deviceInfo: deviceInfo,
      hardwareId: null,
      accelerometer: accelerometer.accelerometer,
      gyroscope: gyroscope,
    );

    if (kDebugMode) {
      print('instructorRecord To CSV: ${instructorRecord.toCsv}');
    }

    // ファイル名作成
    // 教師動画_傾き_{動画撮影開始時刻 YYYY-MM-DD-HH-mm-ss}_{動画内分割最終かどうか:false,true}_{動画内分割ID}_{ユーザID}.csv
    final fileName =
        '教師動画_傾き_${startDate.stringDateyyyyMMddHHmmssHyphen}_true_0_$userId.csv';

    // CSV出力用のデータをテンポラリに保存
    final filePath = await _saveCsvToLocalStorageService.exec(
      fileName: fileName,
      csvData: instructorRecord.toCsv,
      fileMode: FileMode.append,
    );

    return filePath;
  } catch (error) {
    throw UsecaseException(UsecaseErrorType.sensorSaveError,
        UsecaseErrorType.sensorSaveError.message);
  }
}