feat!: Application outline

This commit is contained in:
Piotr Dec 2024-07-23 00:55:59 +02:00
parent 80dfa6ab4e
commit 01fbf32042
Signed by: stawros
GPG key ID: F89F27AD8F881A91
9 changed files with 1440 additions and 190 deletions
app/src/main/java/eu/ztsh/garmin

View file

@ -10,18 +10,20 @@ import android.content.pm.PackageManager
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.WindowManager
import android.widget.Toast
import androidx.activity.result.ActivityResultCallback
import androidx.activity.result.contract.ActivityResultContracts.StartActivityForResult
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.lifecycle.DefaultLifecycleObserver
import androidx.lifecycle.LifecycleOwner
import com.mapbox.navigation.base.options.NavigationOptions
import com.mapbox.navigation.core.MapboxNavigation
import com.mapbox.navigation.core.lifecycle.MapboxNavigationApp
import com.mapbox.navigation.core.lifecycle.MapboxNavigationObserver
import com.mapbox.navigation.core.lifecycle.requireMapboxNavigation
import eu.ztsh.garmin.databinding.ActivityMainBinding
import eu.ztsh.garmin.mapbox.MapControl
import eu.ztsh.garmin.mapbox.NavigationObserver
import eu.ztsh.garmin.util.PermissionsHelper
import java.lang.ref.WeakReference
@ -32,23 +34,23 @@ class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var mapControl: MapControl
private lateinit var navigationObserver: NavigationObserver
private lateinit var initThread: Thread
val permissionsHelper = PermissionsHelper(WeakReference(this))
init {
lifecycle.addObserver(object : DefaultLifecycleObserver {
override fun onResume(owner: LifecycleOwner) {
MapboxNavigationApp.attach(owner)
MapboxNavigationApp.registerObserver(navigationObserver)
private val permissionsHelper = PermissionsHelper(WeakReference(this))
val mapboxNavigation: MapboxNavigation by requireMapboxNavigation(
onResumedObserver = object : DefaultLifecycleObserver, MapboxNavigationObserver {
override fun onAttached(mapboxNavigation: MapboxNavigation) {
mapControl.onAttached(mapboxNavigation)
}
override fun onPause(owner: LifecycleOwner) {
MapboxNavigationApp.detach(owner)
MapboxNavigationApp.unregisterObserver(navigationObserver)
override fun onDetached(mapboxNavigation: MapboxNavigation) {
mapControl.onDetached(mapboxNavigation)
}
})
}
},
onInitialize = fun() {
mapControl.initNavigation()
}
)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -56,68 +58,24 @@ class MainActivity : AppCompatActivity() {
setContentView(binding.root)
binding.mapView
permissionsHelper.checkPermissions {
if (!MapboxNavigationApp.isSetup()) {
MapboxNavigationApp.setup {
NavigationOptions.Builder(applicationContext)
// .accessToken(BuildConfig.MAPBOX_DOWNLOADS_TOKEN)
.build()
}
}
mapControl = MapControl(binding.mapView, resources)
mapControl = MapControl(this, UI(binding), resources)
mapControl.init()
navigationObserver = NavigationObserver(mapControl)
MapboxNavigationApp.setup(
NavigationOptions.Builder(applicationContext)
.build()
)
}
initThread = Thread {
while (true) {
if (MapboxNavigationApp.current() != null) {
MapboxNavigationApp.current()!!.startTripSession()
threadCallback()
}
Thread.sleep(100)
}
}
initThread.start()
bluetoothInit()
}
private fun threadCallback() {
initThread.join()
}
override fun onStart() {
super.onStart()
// MapboxNavigationApp.current()?.registerRouteProgressObserver(routeProgressObserver)
}
override fun onStop() {
super.onStop()
// MapboxNavigationApp.current()?.unregisterRouteProgressObserver(routeProgressObserver)
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
override fun onDestroy() {
super.onDestroy()
MapboxNavigationApp.current()?.stopTripSession()
// maneuverApi.cancel()
mapControl.onDestroy()
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
// // Define distance formatter options
// private val distanceFormatter: DistanceFormatterOptions by lazy {
// DistanceFormatterOptions.Builder(this).build()
// }
// // Create an instance of the Maneuver API
// private val maneuverApi: MapboxManeuverApi by lazy {
// MapboxManeuverApi(MapboxDistanceFormatter(distanceFormatter))
// }
//
// private val routeProgressObserver =
// RouteProgressObserver { routeProgress ->
// maneuverApi.getManeuvers(routeProgress).value?.apply {
// garmin.process(
// this[0]
// )
// }
// }
private fun bluetoothInit() {
val bluetoothManager: BluetoothManager = getSystemService(BluetoothManager::class.java)
val bluetoothAdapter: BluetoothAdapter = bluetoothManager.adapter