GNSS szervíz refraktorálás, hibajavítás, PhoneGpsConnection osztály
This commit is contained in:
@@ -3,11 +3,9 @@ import 'dart:convert';
|
||||
import 'dart:io';
|
||||
import 'dart:math';
|
||||
|
||||
import 'package:cloud_firestore/cloud_firestore.dart';
|
||||
import 'package:file_picker/file_picker.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/services.dart';
|
||||
import 'package:flutter_bluetooth_serial/flutter_bluetooth_serial.dart';
|
||||
import 'package:flutter_map/flutter_map.dart';
|
||||
// import 'package:flutter_map_geojson/flutter_map_geojson.dart';
|
||||
import 'package:flutter_map_polywidget/flutter_map_polywidget.dart';
|
||||
@@ -16,25 +14,16 @@ import 'package:get/get.dart';
|
||||
import 'package:intl/intl.dart';
|
||||
// import 'package:location/location.dart';
|
||||
import 'package:latlong2/latlong.dart';
|
||||
import 'package:nmea/nmea.dart';
|
||||
import 'package:path_provider/path_provider.dart';
|
||||
import 'package:permission_handler/permission_handler.dart'
|
||||
as permission_handler;
|
||||
import 'package:share_plus/share_plus.dart';
|
||||
import 'package:supabase_flutter/supabase_flutter.dart';
|
||||
import 'package:terepi_seged/controls/geoid_grid.dart';
|
||||
import 'package:terepi_seged/eov/convert_coordinate.dart';
|
||||
import 'package:terepi_seged/eov/eov.dart';
|
||||
import 'package:terepi_seged/gnss_sentences/gngga.dart';
|
||||
import 'package:terepi_seged/gnss_sentences/gngst.dart';
|
||||
import 'package:terepi_seged/gnss_sentences/gnrmc.dart';
|
||||
import 'package:terepi_seged/models/measured_point.dart';
|
||||
import 'package:terepi_seged/models/point_to_measure.dart';
|
||||
import 'package:terepi_seged/models/point_with_description_model.dart';
|
||||
import 'package:proj4dart/proj4dart.dart' as proj4;
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:terepi_seged/pages/map_survey/presentations/views/measured_points_table_dialog.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:terepi_seged/services/coord_converter_service.dart';
|
||||
import 'package:terepi_seged/services/gnss/gnss_connection.dart';
|
||||
import 'package:terepi_seged/services/gnss/gnss_device_service.dart';
|
||||
@@ -195,7 +184,6 @@ class MapSurveyController extends GetxController {
|
||||
void onReady() async {
|
||||
super.onReady();
|
||||
|
||||
await _initPhoneGps();
|
||||
await _initStorage();
|
||||
|
||||
gpsHeightController.text = '1.8';
|
||||
@@ -255,11 +243,6 @@ class MapSurveyController extends GetxController {
|
||||
currentLongitude.value = lon;
|
||||
_updateCurrentLocationMarker();
|
||||
|
||||
// Telefon GPS leállítása ha külső GPS van
|
||||
if (_phoneLocationSub != null) {
|
||||
_stopPhoneGps();
|
||||
}
|
||||
|
||||
// NTRIP GGA küldés
|
||||
NtripService.to.onGgaReceived(
|
||||
_gnss.lastGgaLine.value,
|
||||
@@ -271,66 +254,6 @@ class MapSurveyController extends GetxController {
|
||||
// Telefon GPS fallback
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Future<void> _initPhoneGps() async {
|
||||
// Egyszeri kezdő pozíció
|
||||
try {
|
||||
final last = await Geolocator.getLastKnownPosition();
|
||||
if (last != null) {
|
||||
currentLatitude.value = last.latitude;
|
||||
currentLongitude.value = last.longitude;
|
||||
GnssService.to.latitude.value = last.latitude;
|
||||
GnssService.to.longitude.value = last.longitude;
|
||||
GnssService.to.gpsQuality.value = 1;
|
||||
mapController.move(
|
||||
LatLng(last.latitude, last.longitude),
|
||||
currentZoom.value,
|
||||
);
|
||||
_updateCurrentLocationMarker();
|
||||
}
|
||||
} catch (_) {}
|
||||
|
||||
// Folyamatos stream ha nincs külső GPS
|
||||
if (_gnss.connectionState.value != GnssConnectionState.connected) {
|
||||
await _startPhoneGps();
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _startPhoneGps() async {
|
||||
if (_phoneLocationSub != null) return;
|
||||
|
||||
final permission = await Geolocator.checkPermission();
|
||||
if (permission == LocationPermission.denied ||
|
||||
permission == LocationPermission.deniedForever) return;
|
||||
|
||||
final serviceEnabled = await Geolocator.isLocationServiceEnabled();
|
||||
if (!serviceEnabled) return;
|
||||
|
||||
_phoneLocationSub = Geolocator.getPositionStream(
|
||||
locationSettings: const LocationSettings(
|
||||
accuracy: LocationAccuracy.high,
|
||||
distanceFilter: 0,
|
||||
),
|
||||
).listen((pos) {
|
||||
// Leáll ha közben csatlakozott a külső GPS
|
||||
if (_gnss.connectionState.value == GnssConnectionState.connected) {
|
||||
_stopPhoneGps();
|
||||
return;
|
||||
}
|
||||
currentLatitude.value = pos.latitude;
|
||||
currentLongitude.value = pos.longitude;
|
||||
GnssService.to.latitude.value = pos.latitude;
|
||||
GnssService.to.longitude.value = pos.longitude;
|
||||
GnssService.to.gpsQuality.value = 1;
|
||||
_updateCurrentLocationMarker();
|
||||
});
|
||||
}
|
||||
|
||||
void _stopPhoneGps() {
|
||||
_phoneLocationSub?.cancel();
|
||||
_phoneLocationSub = null;
|
||||
GnssService.to.gpsQuality.value = 0;
|
||||
}
|
||||
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
// Térkép vezérlők
|
||||
// ─────────────────────────────────────────────────────────────────
|
||||
|
||||
Reference in New Issue
Block a user