exec method
- {required AccelerometerEventWithTime accelerometer,
- required GyroscopeEvent gyroscope,
- required DateTime startDate}
センサーデータをCSVファイルに保存する。
デバイス情報、ユーザーID、およびセンサーデータを収集し、 それらをCSV形式に結合してローカルに保存します。
parameters:
accelerometer: 加速度センサーのデータgyroscope: ジャイロセンサーのデータstartDate: 動画撮影開始時刻
return:
- 保存したファイルのパス
String
使用するサービス:
- GetDeviceInfoService : デバイス情報を取得するためのサービス
- GetCurrentUserEmailService : 現在のユーザーのメールアドレスを取得するためのサービス
- SaveCsvToLocalStorageService : CSVデータをローカルに保存するためのサービス
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);
}
}