Browse Source

[New]新增屏幕常亮锁

zhipeng 1 year ago
parent
commit
0c8d9ac49d
4 changed files with 23 additions and 6 deletions
  1. 14 1
      lib/module/record/controller.dart
  2. 6 3
      lib/module/talk/controller.dart
  3. 1 1
      pubspec.lock
  4. 2 1
      pubspec.yaml

+ 14 - 1
lib/module/record/controller.dart

@@ -19,6 +19,7 @@ import 'package:get/get.dart';
 import 'package:path_provider/path_provider.dart';
 import 'package:record/record.dart';
 import 'package:uuid/uuid.dart';
+import 'package:wakelock_plus/wakelock_plus.dart';
 
 import '../../utils/pcm_wav_converter.dart';
 import '../../widget/frame_animation_view.dart';
@@ -169,6 +170,7 @@ class RecordController extends BaseController {
 
     File targetFile = await _getCurrentRecordFile();
     Stream<Uint8List> recordStream = await _record.startStream(_recordConfig);
+    _setWakeLock();
     _startForegroundService();
     recordStream.listen((data) async {
       if (data.isEmpty) {
@@ -188,9 +190,12 @@ class RecordController extends BaseController {
     });
   }
 
-  _onRecordPermissionDenied() {}
+  _onRecordPermissionDenied() {
+    ToastUtil.showToast("需要授予录音权限才能使用录音功能");
+  }
 
   Future<void> _stopRecord() {
+    _releaseWakeLock();
     return _record
         .pause()
         .then((_) => _changeRecordStatus(RecordStatus.paused))
@@ -296,6 +301,14 @@ class RecordController extends BaseController {
     }
   }
 
+  void _setWakeLock() {
+    WakelockPlus.enable();
+  }
+
+  void _releaseWakeLock() {
+    WakelockPlus.disable();
+  }
+
   /// 获取录音文件地址
   static Future<File> getRecordFile(String talkId) async {
     Directory documentDir = await getApplicationDocumentsDirectory();

+ 6 - 3
lib/module/talk/controller.dart

@@ -1,6 +1,7 @@
 import 'dart:async';
 import 'dart:io';
 
+import 'package:connectivity_plus/connectivity_plus.dart';
 import 'package:electronic_assistant/base/base_controller.dart';
 import 'package:electronic_assistant/data/repositories/task_repository.dart';
 import 'package:electronic_assistant/module/chat/view.dart';
@@ -18,7 +19,9 @@ import 'package:flutter/cupertino.dart';
 import 'package:flutter/material.dart';
 import 'package:flutter_screenutil/flutter_screenutil.dart';
 import 'package:get/get.dart';
-import 'package:connectivity_plus/connectivity_plus.dart';
+import 'package:just_audio/just_audio.dart';
+import 'package:wakelock_plus/wakelock_plus.dart';
+
 import '../../data/api/request/agenda_update_bean.dart';
 import '../../data/bean/agenda.dart';
 import '../../data/bean/agenda_list_all_bean.dart';
@@ -32,7 +35,6 @@ import '../../utils/event_bus.dart';
 import '../../utils/toast_util.dart';
 import '../record/controller.dart';
 import 'original/view.dart';
-import 'package:just_audio/just_audio.dart';
 
 class TalkController extends BaseController {
   final String uploadNoPrompts = "UPLOAD_NO_PROMPTS";
@@ -324,13 +326,14 @@ class TalkController extends BaseController {
       return;
     }
     isUploading.value = true;
+    WakelockPlus.enable();
     talkRepository.uploadTalkFile(talkId, duration, file).then((taskId) {
       isUploadedFile = true;
       taskRepository.addTask(taskId);
     }).catchError((error) {
       isUploading.value = false;
       ErrorHandler.toastError(error);
-    });
+    }).whenComplete(() => WakelockPlus.disable());
   }
 
   void refreshAgendaAllData({bool isForceRefresh = false}) {

+ 1 - 1
pubspec.lock

@@ -1513,7 +1513,7 @@ packages:
     source: hosted
     version: "14.2.4"
   wakelock_plus:
-    dependency: transitive
+    dependency: "direct main"
     description:
       name: wakelock_plus
       sha256: bf4ee6f17a2fa373ed3753ad0e602b7603f8c75af006d5b9bdade263928c0484

+ 2 - 1
pubspec.yaml

@@ -108,7 +108,8 @@ dependencies:
   #并发
   synchronized: ^3.3.0+2
 
-
+  #屏幕常亮
+  wakelock_plus: ^1.2.8
 
 wechat_kit:
   app_id: "your_wechat_app_id"