feat: rename package to dev.fiatcode.tracpulse and app to TracPulse
- Update Android package namespace and applicationId to dev.fiatcode.tracpulse - Update AndroidManifest.xml package and app label to TracPulse - Move all Kotlin source files to dev/fiatcode/tracpulse/ package - Update pubspec.yaml name to tracpulse - Update all Dart imports from package:traccar_client to relative - Rename TraccarClientApp class to TracPulseApp - Update user-facing strings in permission_screen to TracPulse - Update notification channel label and wakeLock tag to TracPulse
This commit is contained in:
parent
b70822f2af
commit
a5dd3323f5
23 changed files with 74 additions and 73 deletions
|
|
@ -6,7 +6,7 @@ plugins {
|
||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace = "com.traccar.traccar_client"
|
namespace = "dev.fiatcode.tracpulse"
|
||||||
compileSdk = flutter.compileSdkVersion
|
compileSdk = flutter.compileSdkVersion
|
||||||
ndkVersion = flutter.ndkVersion
|
ndkVersion = flutter.ndkVersion
|
||||||
|
|
||||||
|
|
@ -22,7 +22,7 @@ android {
|
||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
|
||||||
applicationId = "com.traccar.traccar_client"
|
applicationId = "dev.fiatcode.tracpulse"
|
||||||
// You can update the following values to match your application needs.
|
// You can update the following values to match your application needs.
|
||||||
// For more information, see: https://flutter.dev/to/review-gradle-config.
|
// For more information, see: https://flutter.dev/to/review-gradle-config.
|
||||||
minSdk = flutter.minSdkVersion
|
minSdk = flutter.minSdkVersion
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
package="dev.fiatcode.tracpulse">
|
||||||
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
|
||||||
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
|
||||||
|
|
@ -10,7 +11,7 @@
|
||||||
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:label="traccar_client"
|
android:label="TracPulse"
|
||||||
android:name="${applicationName}"
|
android:name="${applicationName}"
|
||||||
android:icon="@mipmap/ic_launcher">
|
android:icon="@mipmap/ic_launcher">
|
||||||
<activity
|
<activity
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
package com.traccar.traccar_client
|
package dev.fiatcode.tracpulse
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.SharedPreferences
|
import android.content.SharedPreferences
|
||||||
import android.os.Handler
|
import android.os.Handler
|
||||||
import android.os.Looper
|
import android.os.Looper
|
||||||
import android.util.Log
|
import android.util.Log
|
||||||
import com.traccar.traccar_client.service.LocationTrackingService
|
import dev.fiatcode.tracpulse.service.LocationTrackingService
|
||||||
import com.traccar.traccar_client.storage.AppDatabase
|
import dev.fiatcode.tracpulse.storage.AppDatabase
|
||||||
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
import io.flutter.embedding.engine.plugins.FlutterPlugin
|
||||||
import io.flutter.plugin.common.EventChannel
|
import io.flutter.plugin.common.EventChannel
|
||||||
import io.flutter.plugin.common.MethodCall
|
import io.flutter.plugin.common.MethodCall
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client
|
package dev.fiatcode.tracpulse
|
||||||
|
|
||||||
import io.flutter.embedding.android.FlutterActivity
|
import io.flutter.embedding.android.FlutterActivity
|
||||||
import io.flutter.embedding.engine.FlutterEngine
|
import io.flutter.embedding.engine.FlutterEngine
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.location
|
package dev.fiatcode.tracpulse.location
|
||||||
|
|
||||||
import android.location.Location
|
import android.location.Location
|
||||||
import kotlin.math.abs
|
import kotlin.math.abs
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.location
|
package dev.fiatcode.tracpulse.location
|
||||||
|
|
||||||
import android.annotation.SuppressLint
|
import android.annotation.SuppressLint
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.location
|
package dev.fiatcode.tracpulse.location
|
||||||
|
|
||||||
import android.app.AlarmManager
|
import android.app.AlarmManager
|
||||||
import android.app.PendingIntent
|
import android.app.PendingIntent
|
||||||
|
|
@ -84,7 +84,7 @@ class HeartbeatScheduler(private val context: Context) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val TAG = "HeartbeatScheduler"
|
private const val TAG = "HeartbeatScheduler"
|
||||||
private const val ACTION_HEARTBEAT = "com.traccar.traccar_client.HEARTBEAT"
|
private const val ACTION_HEARTBEAT = "dev.fiatcode.tracpulse.HEARTBEAT"
|
||||||
private const val REQUEST_CODE = 1001
|
private const val REQUEST_CODE = 1001
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.model
|
package dev.fiatcode.tracpulse.model
|
||||||
|
|
||||||
data class EventLogEntry(
|
data class EventLogEntry(
|
||||||
val id: Long = 0,
|
val id: Long = 0,
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.model
|
package dev.fiatcode.tracpulse.model
|
||||||
|
|
||||||
data class Location(
|
data class Location(
|
||||||
val id: Long = 0,
|
val id: Long = 0,
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.network
|
package dev.fiatcode.tracpulse.network
|
||||||
|
|
||||||
import android.content.BroadcastReceiver
|
import android.content.BroadcastReceiver
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
package com.traccar.traccar_client.network
|
package dev.fiatcode.tracpulse.network
|
||||||
|
|
||||||
import android.util.Base64
|
import android.util.Base64
|
||||||
import com.traccar.traccar_client.model.Location
|
import dev.fiatcode.tracpulse.model.Location
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.withContext
|
import kotlinx.coroutines.withContext
|
||||||
import okhttp3.MediaType
|
import okhttp3.MediaType
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.service
|
package dev.fiatcode.tracpulse.service
|
||||||
|
|
||||||
import android.app.Notification
|
import android.app.Notification
|
||||||
import android.app.NotificationChannel
|
import android.app.NotificationChannel
|
||||||
|
|
@ -16,19 +16,19 @@ import android.os.Build
|
||||||
import android.os.IBinder
|
import android.os.IBinder
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import androidx.core.app.NotificationCompat
|
import androidx.core.app.NotificationCompat
|
||||||
import com.traccar.traccar_client.BridgeModule
|
import dev.fiatcode.tracpulse.BridgeModule
|
||||||
import com.traccar.traccar_client.MainActivity
|
import dev.fiatcode.tracpulse.MainActivity
|
||||||
import com.traccar.traccar_client.R
|
import dev.fiatcode.tracpulse.R
|
||||||
import com.traccar.traccar_client.location.DistanceFilterProcessor
|
import dev.fiatcode.tracpulse.location.DistanceFilterProcessor
|
||||||
import com.traccar.traccar_client.location.FusedLocationProvider
|
import dev.fiatcode.tracpulse.location.FusedLocationProvider
|
||||||
import com.traccar.traccar_client.location.HeartbeatScheduler
|
import dev.fiatcode.tracpulse.location.HeartbeatScheduler
|
||||||
import com.traccar.traccar_client.model.Location as TraccarLocation
|
import dev.fiatcode.tracpulse.model.Location as TraccarLocation
|
||||||
import com.traccar.traccar_client.network.ConnectivityReceiver
|
import dev.fiatcode.tracpulse.network.ConnectivityReceiver
|
||||||
import com.traccar.traccar_client.network.TraccarConfig
|
import dev.fiatcode.tracpulse.network.TraccarConfig
|
||||||
import com.traccar.traccar_client.network.TraccarHttpClient
|
import dev.fiatcode.tracpulse.network.TraccarHttpClient
|
||||||
import com.traccar.traccar_client.storage.AppDatabase
|
import dev.fiatcode.tracpulse.storage.AppDatabase
|
||||||
import com.traccar.traccar_client.storage.EventLogEntity
|
import dev.fiatcode.tracpulse.storage.EventLogEntity
|
||||||
import com.traccar.traccar_client.storage.LocationEntity
|
import dev.fiatcode.tracpulse.storage.LocationEntity
|
||||||
import kotlinx.coroutines.CoroutineScope
|
import kotlinx.coroutines.CoroutineScope
|
||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.SupervisorJob
|
import kotlinx.coroutines.SupervisorJob
|
||||||
|
|
@ -214,7 +214,7 @@ class LocationTrackingService : Service() {
|
||||||
private fun onLocationReceived(location: Location) {
|
private fun onLocationReceived(location: Location) {
|
||||||
val config = currentConfig ?: return
|
val config = currentConfig ?: return
|
||||||
|
|
||||||
val filterConfig = com.traccar.traccar_client.location.FilterConfig(
|
val filterConfig = dev.fiatcode.tracpulse.location.FilterConfig(
|
||||||
distanceFilter = config.distanceFilter,
|
distanceFilter = config.distanceFilter,
|
||||||
intervalFilter = config.interval,
|
intervalFilter = config.interval,
|
||||||
angleFilter = config.angleFilter
|
angleFilter = config.angleFilter
|
||||||
|
|
@ -382,7 +382,7 @@ class LocationTrackingService : Service() {
|
||||||
)
|
)
|
||||||
|
|
||||||
return NotificationCompat.Builder(this, CHANNEL_ID)
|
return NotificationCompat.Builder(this, CHANNEL_ID)
|
||||||
.setContentTitle("📍 Traccar Client")
|
.setContentTitle("📍 TracPulse")
|
||||||
.setContentText(content)
|
.setContentText(content)
|
||||||
.setSmallIcon(R.mipmap.ic_launcher)
|
.setSmallIcon(R.mipmap.ic_launcher)
|
||||||
.setContentIntent(pendingIntent)
|
.setContentIntent(pendingIntent)
|
||||||
|
|
@ -411,7 +411,7 @@ class LocationTrackingService : Service() {
|
||||||
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
|
val powerManager = getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||||
wakeLock = powerManager.newWakeLock(
|
wakeLock = powerManager.newWakeLock(
|
||||||
PowerManager.PARTIAL_WAKE_LOCK,
|
PowerManager.PARTIAL_WAKE_LOCK,
|
||||||
"TraccarClient::LocationWakeLock"
|
"TracPulse::LocationWakeLock"
|
||||||
).apply {
|
).apply {
|
||||||
acquire(10 * 60 * 60 * 1000L) // 10 hours max
|
acquire(10 * 60 * 60 * 1000L) // 10 hours max
|
||||||
}
|
}
|
||||||
|
|
@ -425,10 +425,10 @@ class LocationTrackingService : Service() {
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
const val ACTION_START = "com.traccar.traccar_client.ACTION_START"
|
const val ACTION_START = "dev.fiatcode.tracpulse.ACTION_START"
|
||||||
const val ACTION_STOP = "com.traccar.traccar_client.ACTION_STOP"
|
const val ACTION_STOP = "dev.fiatcode.tracpulse.ACTION_STOP"
|
||||||
const val ACTION_REPORT = "com.traccar.traccar_client.ACTION_REPORT"
|
const val ACTION_REPORT = "dev.fiatcode.tracpulse.ACTION_REPORT"
|
||||||
private const val CHANNEL_ID = "traccar_tracking_channel"
|
private const val CHANNEL_ID = "tracpulse_tracking_channel"
|
||||||
private const val NOTIFICATION_ID = 1
|
private const val NOTIFICATION_ID = 1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.storage
|
package dev.fiatcode.tracpulse.storage
|
||||||
|
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import androidx.room.Database
|
import androidx.room.Database
|
||||||
|
|
@ -23,7 +23,7 @@ abstract class AppDatabase : RoomDatabase() {
|
||||||
val instance = Room.databaseBuilder(
|
val instance = Room.databaseBuilder(
|
||||||
context.applicationContext,
|
context.applicationContext,
|
||||||
AppDatabase::class.java,
|
AppDatabase::class.java,
|
||||||
"traccar_client_db"
|
"tracpulse_db"
|
||||||
).build()
|
).build()
|
||||||
INSTANCE = instance
|
INSTANCE = instance
|
||||||
instance
|
instance
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.storage
|
package dev.fiatcode.tracpulse.storage
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.storage
|
package dev.fiatcode.tracpulse.storage
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.storage
|
package dev.fiatcode.tracpulse.storage
|
||||||
|
|
||||||
import androidx.room.Dao
|
import androidx.room.Dao
|
||||||
import androidx.room.Insert
|
import androidx.room.Insert
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
package com.traccar.traccar_client.storage
|
package dev.fiatcode.tracpulse.storage
|
||||||
|
|
||||||
import androidx.room.Entity
|
import androidx.room.Entity
|
||||||
import androidx.room.PrimaryKey
|
import androidx.room.PrimaryKey
|
||||||
|
|
@ -1,8 +1,8 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:traccar_client/main_screen.dart';
|
import 'main_screen.dart';
|
||||||
import 'package:traccar_client/permission_screen.dart';
|
import 'permission_screen.dart';
|
||||||
import 'package:traccar_client/preferences.dart';
|
import 'preferences.dart';
|
||||||
|
|
||||||
void main() async {
|
void main() async {
|
||||||
WidgetsFlutterBinding.ensureInitialized();
|
WidgetsFlutterBinding.ensureInitialized();
|
||||||
|
|
@ -16,16 +16,16 @@ void main() async {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
|
|
||||||
runApp(const TraccarClientApp());
|
runApp(const TracPulseApp());
|
||||||
}
|
}
|
||||||
|
|
||||||
class TraccarClientApp extends StatelessWidget {
|
class TracPulseApp extends StatelessWidget {
|
||||||
const TraccarClientApp({super.key});
|
const TracPulseApp({super.key});
|
||||||
|
|
||||||
@override
|
@override
|
||||||
Widget build(BuildContext context) {
|
Widget build(BuildContext context) {
|
||||||
return MaterialApp(
|
return MaterialApp(
|
||||||
title: 'Traccar Client',
|
title: 'TracPulse',
|
||||||
debugShowCheckedModeBanner: false,
|
debugShowCheckedModeBanner: false,
|
||||||
theme: ThemeData(
|
theme: ThemeData(
|
||||||
useMaterial3: true,
|
useMaterial3: true,
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,10 @@
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
|
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:traccar_client/bridge/location_bridge.dart';
|
import 'bridge/location_bridge.dart';
|
||||||
import 'package:traccar_client/preferences.dart';
|
import 'preferences.dart';
|
||||||
import 'package:traccar_client/settings_screen.dart';
|
import 'settings_screen.dart';
|
||||||
import 'package:traccar_client/status_screen.dart';
|
import 'status_screen.dart';
|
||||||
|
|
||||||
class MainScreen extends StatefulWidget {
|
class MainScreen extends StatefulWidget {
|
||||||
const MainScreen({super.key});
|
const MainScreen({super.key});
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:permission_handler/permission_handler.dart';
|
import 'package:permission_handler/permission_handler.dart';
|
||||||
import 'package:traccar_client/bridge/location_bridge.dart';
|
import 'bridge/location_bridge.dart';
|
||||||
import 'package:traccar_client/preferences.dart';
|
import 'preferences.dart';
|
||||||
import 'package:traccar_client/main_screen.dart';
|
import 'main_screen.dart';
|
||||||
|
|
||||||
class PermissionScreen extends StatefulWidget {
|
class PermissionScreen extends StatefulWidget {
|
||||||
const PermissionScreen({super.key});
|
const PermissionScreen({super.key});
|
||||||
|
|
@ -131,8 +131,8 @@ class _PermissionScreenState extends State<PermissionScreen> {
|
||||||
content: Text(
|
content: Text(
|
||||||
settingsOpened
|
settingsOpened
|
||||||
? 'A settings screen has opened.\n\n'
|
? 'A settings screen has opened.\n\n'
|
||||||
'Find "Traccar Client" and set it to "Don\'t optimize" or "Unrestricted", then come back and tap CHECK & DONE.'
|
'Find "TracPulse" and set it to "Don\'t optimize" or "Unrestricted", then come back and tap CHECK & DONE.'
|
||||||
: 'Open Settings → Apps → Traccar Client → Battery and select "Don\'t optimize" or "Unrestricted", then come back and tap CHECK & DONE.',
|
: 'Open Settings → Apps → TracPulse → Battery and select "Don\'t optimize" or "Unrestricted", then come back and tap CHECK & DONE.',
|
||||||
style: const TextStyle(
|
style: const TextStyle(
|
||||||
fontFamily: 'monospace',
|
fontFamily: 'monospace',
|
||||||
fontSize: 12,
|
fontSize: 12,
|
||||||
|
|
@ -310,7 +310,7 @@ class _PermissionScreenState extends State<PermissionScreen> {
|
||||||
),
|
),
|
||||||
SizedBox(height: 4),
|
SizedBox(height: 4),
|
||||||
Text(
|
Text(
|
||||||
'Traccar Client needs these permissions to track your location reliably in the background.',
|
'TracPulse needs these permissions to track your location reliably in the background.',
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontFamily: 'monospace',
|
fontFamily: 'monospace',
|
||||||
fontSize: 11,
|
fontSize: 11,
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,7 @@
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
import 'package:flutter/services.dart';
|
import 'package:flutter/services.dart';
|
||||||
import 'package:traccar_client/bridge/location_bridge.dart';
|
import 'bridge/location_bridge.dart';
|
||||||
import 'package:traccar_client/preferences.dart';
|
import 'preferences.dart';
|
||||||
|
|
||||||
class SettingsScreen extends StatefulWidget {
|
class SettingsScreen extends StatefulWidget {
|
||||||
const SettingsScreen({super.key});
|
const SettingsScreen({super.key});
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
name: traccar_client
|
name: tracpulse
|
||||||
description: "A new Flutter project."
|
description: "A new Flutter project."
|
||||||
# The following line prevents the package from being accidentally published to
|
# The following line prevents the package from being accidentally published to
|
||||||
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
# pub.dev using `flutter pub publish`. This is preferred for private packages.
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,13 @@
|
||||||
import 'package:flutter_test/flutter_test.dart';
|
import 'package:flutter_test/flutter_test.dart';
|
||||||
|
|
||||||
import 'package:traccar_client/main.dart';
|
import 'package:tracpulse/main.dart';
|
||||||
|
|
||||||
void main() {
|
void main() {
|
||||||
testWidgets('TraccarClientApp smoke test', (WidgetTester tester) async {
|
testWidgets('TracPulse smoke test', (WidgetTester tester) async {
|
||||||
// Build our app and trigger a frame.
|
// Build our app and trigger a frame.
|
||||||
await tester.pumpWidget(const TraccarClientApp());
|
await tester.pumpWidget(const TracPulseApp());
|
||||||
|
|
||||||
// Verify the app title is displayed
|
// Verify the app title is displayed
|
||||||
expect(find.text('Traccar Client'), findsOneWidget);
|
expect(find.text('TracPulse'), findsOneWidget);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue