Fixed Location Permission issue on Android - 1

This commit is contained in:
2024-05-24 07:21:28 +09:00
parent 74f6a79a36
commit e55674e1b9
19 changed files with 376 additions and 330 deletions

View File

@ -3,6 +3,7 @@ import 'dart:io';
//import 'dart:convert';
//import 'dart:developer';
import 'package:rogapp/model/gps_data.dart';
import 'package:rogapp/pages/home/home_page.dart';
import 'package:rogapp/utils/database_gps.dart';
import 'package:flutter/material.dart';
import 'package:flutter_map_tile_caching/flutter_map_tile_caching.dart';
@ -31,6 +32,8 @@ import 'package:flutter/services.dart';
import 'package:permission_handler/permission_handler.dart';
import 'pages/permission/permission.dart';
Map<String, dynamic> deviceInfo = {};
@ -129,7 +132,10 @@ void main() async {
//Get.put(LocationController());
requestLocationPermission();
//await PermissionController.checkAndRequestPermissions();
//requestLocationPermission();
// startMemoryMonitoring(); // 2024-4-8 Akira: メモリ使用量のチェックを開始 See #2810
Get.put(SettingsController()); // これを追加
@ -143,10 +149,11 @@ void main() async {
*/
runApp(const ProviderScope(child: MyApp()));
//runApp(HomePage()); // MyApp()からHomePage()に変更
//runApp(const MyApp());
}
/*
Future<void> requestLocationPermission() async {
try {
final status = await Permission.locationAlways.request();
@ -160,6 +167,7 @@ Future<void> requestLocationPermission() async {
print('Error requesting location permission: $e');
}
}
*/
// メモリ使用量の解説https://qiita.com/hukusuke1007/items/e4e987836412e9bc73b9
@ -289,6 +297,16 @@ Future<void> startBackgroundTracking() async {
} catch (e) {
print('Error starting background tracking: $e');
}
}else if (Platform.isAndroid && background == false) {
background = true;
debugPrint("バックグラウンド処理を開始しました。");
try {
// 位置情報の権限が許可されているかを確認
await PermissionController.checkAndRequestPermissions();
}catch(e){
print('Error starting background tracking: $e');
}
}
}
@ -321,8 +339,12 @@ Future<void> stopBackgroundTracking() async {
}else if(Platform.isAndroid && background==true){
background=false;
debugPrint("バックグラウンド処理:停止しました。");
await positionStream?.cancel();
positionStream = null;
const platform = MethodChannel('location');
try {
await platform.invokeMethod('stopLocationService');
} on PlatformException catch (e) {
print("Failed to stop location service: '${e.message}'.");
}
}
}
@ -344,6 +366,12 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
}
WidgetsBinding.instance.addObserver(this);
/*
WidgetsBinding.instance.addPostFrameCallback((_) async {
await PermissionController.checkAndRequestPermissions();
});
*/
debugPrint("Start MyAppState...");
}
@ -458,6 +486,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
@override
Widget build(BuildContext context) {
return GetMaterialApp(
translations: StringValues(),
locale: const Locale('ja', 'JP'),
@ -480,4 +509,7 @@ class _MyAppState extends State<MyApp> with WidgetsBindingObserver {
enableLog: true,
);
}
}