diff --git a/lib/core/bindings/initial_binding.dart b/lib/core/bindings/initial_binding.dart index 490a35456..c6539c0e2 100644 --- a/lib/core/bindings/initial_binding.dart +++ b/lib/core/bindings/initial_binding.dart @@ -1,3 +1,4 @@ +import 'package:deep_voice/data/services/location_manager.dart'; import 'package:deep_voice/data/services/music_manager.dart'; import 'package:deep_voice/data/services/navigation_manager.dart'; import 'package:get/get.dart'; @@ -37,6 +38,7 @@ class InitialBinding extends Bindings { // MusicManager Get.lazyPut(() => MusicManager(), fenix: true); Get.lazyPut(() => NavigationManager(), fenix: true); + Get.lazyPut(() => LocationManager(), fenix: true); // 火山AI服务 // Get.lazyPut(() => VolcanoAIService(), fenix: true); diff --git a/lib/data/services/location_manager.dart b/lib/data/services/location_manager.dart index bf9839d83..f72b4d588 100644 --- a/lib/data/services/location_manager.dart +++ b/lib/data/services/location_manager.dart @@ -1,10 +1,8 @@ import 'package:deep_voice/core/utils/logger.dart'; import 'package:get/get.dart'; import 'package:location_service/location_service.dart'; -import 'package:music_service/music_service.dart'; import 'package:permission_handler/permission_handler.dart'; import '../../core/utils/permission_util.dart'; -import 'package:flutter/material.dart'; //音乐播放管理 class LocationManager extends GetxService { @@ -24,10 +22,10 @@ class LocationManager extends GetxService { Future requestNotificationPermission() async { final granted = await PermissionUtil.instance.requestPermission( // context: context, - permissionType: Permission.notification, + permissionType: Permission.locationAlways, permissionName: '通知', - explanationText: '需要通知权限来显示音乐播放状态。', - permanentDenialText: '您已永久拒绝通知权限,请前往设置开启权限。', + explanationText: '需要定位权限来获取当前位置。', + permanentDenialText: '您已永久定位通知权限,请前往设置开启权限。', settingsButtonText: '去设置', cancelButtonText: '取消', ); diff --git a/lib/modules/agent/controllers/agent_controller.dart b/lib/modules/agent/controllers/agent_controller.dart index f1a51375c..31f44014b 100644 --- a/lib/modules/agent/controllers/agent_controller.dart +++ b/lib/modules/agent/controllers/agent_controller.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:convert'; import 'dart:io'; import 'package:amap_service/amap_service.dart'; +import 'package:deep_voice/data/services/location_manager.dart'; import 'package:deep_voice/data/services/music_manager.dart'; import 'package:deep_voice/data/services/navigation_manager.dart'; import 'package:flutter/material.dart'; diff --git a/lib/modules/navigation/bindings/navigation_binding.dart b/lib/modules/navigation/bindings/navigation_binding.dart deleted file mode 100644 index 3b9b7164d..000000000 --- a/lib/modules/navigation/bindings/navigation_binding.dart +++ /dev/null @@ -1,9 +0,0 @@ -import 'package:get/get.dart'; -import '../controllers/navigation_controller.dart'; - -class NavigationBinding extends Bindings { - @override - void dependencies() { - Get.lazyPut(() => NavigationController()); - } -} diff --git a/lib/modules/navigation/controllers/navigation_controller.dart b/lib/modules/navigation/controllers/navigation_controller.dart deleted file mode 100644 index d83a4ee49..000000000 --- a/lib/modules/navigation/controllers/navigation_controller.dart +++ /dev/null @@ -1,5 +0,0 @@ -import 'package:get/get.dart'; - -class NavigationController extends GetxController { - static NavigationController get to => Get.find(); //单例访问模式 -} diff --git a/lib/modules/navigation/views/navigation_view.dart b/lib/modules/navigation/views/navigation_view.dart deleted file mode 100644 index 9e3f1456a..000000000 --- a/lib/modules/navigation/views/navigation_view.dart +++ /dev/null @@ -1,17 +0,0 @@ -import 'package:deep_voice/modules/navigation/controllers/navigation_controller.dart'; -import 'package:flutter/material.dart'; -import 'package:get/get.dart'; - -class NavigationView extends GetView { - const NavigationView({Key? key}) : super(key: key); - - @override - Widget build(BuildContext context) { - return Scaffold( - appBar: AppBar(title: const Text('地图展示')), - body: Stack( - children: [], - ), - ); - } -} diff --git a/lib/modules/pairing/controllers/pairing_controller.dart b/lib/modules/pairing/controllers/pairing_controller.dart index 35a858a4f..e8fd9945e 100644 --- a/lib/modules/pairing/controllers/pairing_controller.dart +++ b/lib/modules/pairing/controllers/pairing_controller.dart @@ -136,6 +136,8 @@ class PairingController extends GetxController { /// 跳过配对 void skipPairing() async { Logger.i(_tag, '用户选择跳过配对'); + // 权限申请 + await _checkAndRequestPermissions(); // 启动BLE后台服务 await BleManager.to.startAgentService(); Logger.i(_tag, 'BLE后台服务已启动'); @@ -575,6 +577,8 @@ class PairingController extends GetxController { if (Platform.isAndroid && await _getAndroidSdkVersion() >= 31) { requiredPermissions.add(Permission.bluetoothScan); requiredPermissions.add(Permission.bluetoothConnect); + requiredPermissions.add(Permission.locationAlways); + requiredPermissions.add(Permission.notification); } // 逐个请求权限 @@ -608,6 +612,9 @@ class PairingController extends GetxController { String _getPermissionName(Permission permission) { if (permission == Permission.location) return '定位'; if (permission == Permission.locationWhenInUse) return '定位'; + if (permission == Permission.locationAlways) return '定位'; + if (permission == Permission.notification) return '通知'; + if (permission == Permission.accessNotificationPolicy) return '通知'; if (permission == Permission.bluetoothScan) return '蓝牙扫描'; if (permission == Permission.bluetoothConnect) return '蓝牙连接'; return '未知权限'; diff --git a/lib/routes/app_pages.dart b/lib/routes/app_pages.dart index 849c81551..2166f5e25 100644 --- a/lib/routes/app_pages.dart +++ b/lib/routes/app_pages.dart @@ -1,4 +1,3 @@ -import 'package:deep_voice/modules/navigation/views/navigation_view.dart'; import 'package:get/get.dart'; import '../modules/feedback/bindings/feedback_bindings.dart'; import '../modules/feedback/views/feedback_view.dart'; @@ -184,13 +183,6 @@ abstract class AppPages { transition: Transition.rightToLeft, transitionDuration: Duration(milliseconds: 250), ), - GetPage( - name: Routes.navigation, - page: () => const NavigationView(), - binding: AgentBinding(), - transition: Transition.rightToLeft, - transitionDuration: Duration(milliseconds: 250), - ), GetPage( name: Routes.realtime, page: () => const RealtimeView(), diff --git a/local_plugins/location_service/ios/location_service.podspec b/local_plugins/location_service/ios/location_service.podspec index b5409ce22..2017c03e5 100644 --- a/local_plugins/location_service/ios/location_service.podspec +++ b/local_plugins/location_service/ios/location_service.podspec @@ -15,15 +15,13 @@ A new Flutter project. s.source = { :path => '.' } s.source_files = 'location_service/Sources/location_service/**/*' s.dependency 'Flutter' + s.dependency 'AMapNavi', '~> 10.0.900' + + s.static_framework = true + s.pod_target_xcconfig = { + 'DEFINES_MODULE' => 'YES', + 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' + } s.platform = :ios, '12.0' - - # Flutter.framework does not contain a i386 slice. - s.pod_target_xcconfig = { 'DEFINES_MODULE' => 'YES', 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'i386' } s.swift_version = '5.0' - - # If your plugin requires a privacy manifest, for example if it uses any - # required reason APIs, update the PrivacyInfo.xcprivacy file to describe your - # plugin's privacy impact, and then uncomment this line. For more information, - # see https://developer.apple.com/documentation/bundleresources/privacy_manifest_files - # s.resource_bundles = {'location_service_privacy' => ['location_service/Sources/location_service/PrivacyInfo.xcprivacy']} end