You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
139 lines
4.5 KiB
139 lines
4.5 KiB
package com.gyf.csams
|
|
|
|
import android.app.Activity
|
|
import android.app.Application
|
|
import android.app.NotificationManager
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import androidx.lifecycle.MutableLiveData
|
|
import coil.ImageLoader
|
|
import coil.ImageLoaderFactory
|
|
import coil.util.CoilUtils
|
|
import com.baidu.location.BDAbstractLocationListener
|
|
import com.baidu.location.BDLocation
|
|
import com.baidu.location.LocationClient
|
|
import com.baidu.mapapi.SDKInitializer
|
|
import com.gyf.lib.util.NotificationUtil
|
|
import com.orhanobut.logger.AndroidLogAdapter
|
|
import com.orhanobut.logger.DiskLogAdapter
|
|
import com.orhanobut.logger.Logger
|
|
import okhttp3.OkHttpClient
|
|
|
|
|
|
class MainApplication : Application(), ImageLoaderFactory {
|
|
|
|
lateinit var mLocationClient: LocationClient
|
|
|
|
override fun newImageLoader(): ImageLoader {
|
|
return ImageLoader.Builder(applicationContext)
|
|
.crossfade(true)
|
|
.okHttpClient {
|
|
OkHttpClient.Builder()
|
|
.cache(CoilUtils.createDefaultCache(applicationContext))
|
|
.build()
|
|
}
|
|
.build()
|
|
}
|
|
|
|
override fun onCreate() {
|
|
super.onCreate()
|
|
//初始化日志
|
|
Logger.addLogAdapter(AndroidLogAdapter())
|
|
Logger.addLogAdapter(DiskLogAdapter())
|
|
//初始化百度地图SDK
|
|
mLocationClient = LocationClient(applicationContext)
|
|
mLocationClient.registerLocationListener(MyLocationListener)
|
|
|
|
Logger.i("${BuildConfig.foreground_app_name}启动")
|
|
|
|
SDKInitializer.initialize(this)
|
|
|
|
/**
|
|
* https://developer.android.com/training/notify-user/build-notification?hl=zh-cn#java
|
|
* 必须先通过向 createNotificationChannel() 传递 NotificationChannel 的实例在系统中注册应用的通知渠道,然后才能在 Android 8.0 及更高版本上提供通知
|
|
*/
|
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
|
NotificationUtil.createNotificationChannel(
|
|
applicationContext,
|
|
NotificationManager.IMPORTANCE_DEFAULT
|
|
)
|
|
}
|
|
//Activity生命周期进行集中管理
|
|
registerActivityLifecycleCallbacks(MyCall)
|
|
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 百度地图定位信息监听
|
|
*/
|
|
object MyLocationListener : BDAbstractLocationListener() {
|
|
val location = MutableLiveData<BDLocation>()
|
|
|
|
override fun onReceiveLocation(bdLocation: BDLocation?) {
|
|
bdLocation?.apply {
|
|
location.value = this
|
|
val sb = StringBuffer()
|
|
sb.append("time : ")
|
|
sb.append(time)
|
|
sb.append("\nerror code : ")
|
|
sb.append(locType)
|
|
sb.append("\nlatitude : ")
|
|
sb.append(latitude)
|
|
sb.append("\nlontitude : ")
|
|
sb.append(longitude)
|
|
sb.append("\nradius : ")
|
|
sb.append(radius)
|
|
|
|
when (locType) {
|
|
BDLocation.TypeCacheLocation -> {
|
|
sb.append("\nspeed : ")
|
|
sb.append(speed)
|
|
sb.append("\nsatellite : ")
|
|
sb.append(satelliteNumber)
|
|
sb.append("\ndirection : ")
|
|
sb.append("\naddr : ")
|
|
sb.append(addrStr)
|
|
sb.append(direction)
|
|
}
|
|
BDLocation.TypeNetWorkLocation -> {
|
|
sb.append("\naddr : ")
|
|
sb.append(addrStr)
|
|
}
|
|
}
|
|
Logger.i("BaiduLocationApiDem:$sb")
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
object MyCall : Application.ActivityLifecycleCallbacks {
|
|
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {
|
|
Logger.i("${activity::class.java.name}[onActivityCreated]")
|
|
}
|
|
|
|
override fun onActivityStarted(activity: Activity) {
|
|
Logger.i("${activity::class.java.name}[onActivityStarted]")
|
|
}
|
|
|
|
override fun onActivityResumed(activity: Activity) {
|
|
Logger.i("${activity::class.java.name}[onActivityResumed]")
|
|
}
|
|
|
|
override fun onActivityPaused(activity: Activity) {
|
|
Logger.i("${activity::class.java.name}[onActivityPaused]")
|
|
}
|
|
|
|
override fun onActivityStopped(activity: Activity) {
|
|
Logger.i("${activity::class.java.name}[onActivityStopped]")
|
|
}
|
|
|
|
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {
|
|
Logger.i("${activity::class.java.name}[onActivitySaveInstanceState]")
|
|
}
|
|
|
|
override fun onActivityDestroyed(activity: Activity) {
|
|
Logger.i("${activity::class.java.name}[onActivityDestroyed]")
|
|
}
|
|
|
|
} |