|
|
import 'dart:async';
|
|
|
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:flutter_background_service/flutter_background_service.dart';
|
|
|
import '../../services/Storage.dart';
|
|
|
import '../../components/commonFun.dart';
|
|
|
import '../../components/dioFun.dart';
|
|
|
|
|
|
int remindCount = 0;
|
|
|
|
|
|
void onStart() {
|
|
|
WidgetsFlutterBinding.ensureInitialized();
|
|
|
final service = FlutterBackgroundService();
|
|
|
|
|
|
service.onDataReceived.listen((event) {
|
|
|
if (event["action"] == "setAsForeground") {
|
|
|
service.setForegroundMode(true);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
if (event["action"] == "setAsBackground") {
|
|
|
service.setForegroundMode(false);
|
|
|
}
|
|
|
|
|
|
if (event["action"] == "stopService") {
|
|
|
service.stopBackgroundService();
|
|
|
}
|
|
|
});
|
|
|
|
|
|
// service.setForegroundMode(true);
|
|
|
setRemindTimer(service);
|
|
|
}
|
|
|
|
|
|
// 设置定时提醒
|
|
|
setRemindTimer(FlutterBackgroundService service) async {
|
|
|
g_remindGap = await Storage.getInt('nRemindGap');
|
|
|
g_remindGap = (null == g_remindGap) ? 60 : g_remindGap; // 提醒间隔默认为60S
|
|
|
print('g_remindGap = $g_remindGap');
|
|
|
|
|
|
g_bVoiceRemind = await Storage.getBool('bVoiceRemind');
|
|
|
g_bVoiceRemind = (null == g_bVoiceRemind) ? true : g_bVoiceRemind; // 默认开启
|
|
|
print('g_bVoiceRemind = $g_bVoiceRemind');
|
|
|
|
|
|
service.setForegroundMode(g_bVoiceRemind);
|
|
|
|
|
|
// 设置新的定时任务
|
|
|
if (g_bVoiceRemind && g_remindGap > 0) {
|
|
|
remindCount = 0;
|
|
|
// 循环执行定时任务,间隔 remindGap 秒
|
|
|
Timer.periodic(Duration(seconds: g_remindGap), (timer) async {
|
|
|
if (await service.isServiceRunning()) {
|
|
|
doRemind();
|
|
|
} else {
|
|
|
timer.cancel();
|
|
|
}
|
|
|
|
|
|
service.setNotificationInfo(
|
|
|
title: "My App Service",
|
|
|
content: "Updated at ${DateTime.now()}",
|
|
|
);
|
|
|
|
|
|
service.sendData({"current_date": DateTime.now().toIso8601String()});
|
|
|
});
|
|
|
|
|
|
if (qx_code < 0) {
|
|
|
qx_code = await Storage.getInt('qx_code'); // 在前台服务中获取,保存到用户配置中的 qx_code
|
|
|
}
|
|
|
|
|
|
print("设置间隔 ${g_remindGap}S 的定时任务成功!");
|
|
|
}
|
|
|
}
|
|
|
|
|
|
doRemind() async {
|
|
|
await getReviewedList(); //注意:访问区县后台接口,需要统一添加区县代码参数
|
|
|
|
|
|
if (listReviewed.length > 0) {
|
|
|
// 定时任务,获取待审核黑烟车记录
|
|
|
myPlayVoiceRemind();
|
|
|
|
|
|
remindCount++;
|
|
|
DateTime dateTime = DateTime.now();
|
|
|
print(
|
|
|
"语音提醒(gap=${g_remindGap}S) ${remindCount.toString().padLeft(6, '0')}:${dateTime.hour.toString().padLeft(2, '0')}:${dateTime.minute.toString().padLeft(2, '0')}:${dateTime.second.toString().padLeft(2, '0')}");
|
|
|
}
|
|
|
}
|