package com.xianning.driver.base.gaode.gpsnav
|
|
import android.content.Intent
|
import android.content.res.Configuration
|
import android.graphics.Color
|
import android.os.Build
|
import android.os.Bundle
|
import android.util.Log
|
import android.view.KeyEvent
|
import android.view.View
|
import android.view.Window
|
import android.view.WindowManager
|
import androidx.fragment.app.FragmentActivity
|
import com.baidu.navisdk.adapter.*
|
import com.baidu.navisdk.adapter.struct.BNGuideConfig
|
|
|
class BaiduNaviActivity:FragmentActivity() {
|
private var mRouteGuideManager: IBNRouteGuideManager? = null
|
private val mMode = IBNaviListener.DayNightMode.DAY
|
private val TAG = "BaiduNavi"
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
super.onCreate(savedInstanceState)
|
val fullScreen: Boolean = supportFullScreen()
|
val params = Bundle()
|
params.putBoolean(BNaviCommonParams.ProGuideKey.IS_SUPPORT_FULL_SCREEN, fullScreen)
|
// IS_REALNAVI代表导航类型,true表示真实导航,false表示模拟导航,默认是true
|
// params.putBoolean(BNaviCommonParams.ProGuideKey.IS_REALNAVI, false)
|
mRouteGuideManager = BaiduNaviManagerFactory.getRouteGuideManager()
|
val config = BNGuideConfig.Builder()
|
.params(params)
|
.build()
|
val view: View? = mRouteGuideManager?.onCreate(this, config)
|
if (view != null) {
|
setContentView(view)
|
}
|
routeGuideEvent()
|
}
|
|
// 导航过程事件监听
|
private fun routeGuideEvent() {
|
BaiduNaviManagerFactory.getRouteGuideManager().setNaviListener(object : IBNaviListener() {
|
override fun onNaviGuideEnd() {
|
this@BaiduNaviActivity.finish()
|
}
|
|
override fun onYawingSuccess() {
|
super.onYawingSuccess()
|
Log.e(TAG, "onYawingSuccess")
|
val routePlanInfo = BaiduNaviManagerFactory.getRoutePlanManager().routePlanInfo
|
}
|
})
|
BaiduNaviManagerFactory.getRouteGuideManager().setNaviViewListener(
|
object : IBNaviViewListener() {
|
override fun onMainInfoPanCLick() {}
|
override fun onNaviTurnClick() {}
|
override fun onFullViewButtonClick(b: Boolean) {}
|
override fun onFullViewWindowClick(b: Boolean) {}
|
override fun onNaviBackClick() {}
|
override fun onBottomBarClick(action: Action) {}
|
override fun onNaviSettingClick() {}
|
override fun onRefreshBtnClick() {}
|
override fun onZoomLevelChange(i: Int) {}
|
override fun onMapClicked(v: Double, v1: Double) {}
|
override fun onMapMoved() {
|
Log.e(TAG, "onMapMoved")
|
}
|
|
override fun onFloatViewClicked() {
|
try {
|
val intent = Intent()
|
intent.setPackage(packageName)
|
intent.setClass(
|
this@BaiduNaviActivity,
|
Class.forName(BaiduNaviActivity::class.java.getName())
|
)
|
intent.setFlags(
|
Intent.FLAG_ACTIVITY_NEW_TASK
|
or Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED
|
)
|
startActivity(intent)
|
} catch (e: ClassNotFoundException) {
|
e.printStackTrace()
|
}
|
}
|
})
|
}
|
|
private fun supportFullScreen(): Boolean {
|
if (Build.VERSION.SDK_INT >= 21) {
|
val window: Window = window
|
val color: Int
|
color = if (Build.VERSION.SDK_INT >= 23) {
|
Color.TRANSPARENT
|
} else {
|
0x2d000000
|
}
|
window.setStatusBarColor(color)
|
if (Build.VERSION.SDK_INT >= 23) {
|
window.getDecorView().setSystemUiVisibility(
|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
)
|
var uiVisibility: Int = window.getDecorView().getSystemUiVisibility()
|
if (mMode == IBNaviListener.DayNightMode.DAY) {
|
uiVisibility = uiVisibility or View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR
|
}
|
window.getDecorView().setSystemUiVisibility(uiVisibility)
|
} else {
|
window.getDecorView().setSystemUiVisibility(
|
View.SYSTEM_UI_FLAG_LAYOUT_STABLE or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
|
)
|
}
|
window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS)
|
return true
|
}
|
return false
|
}
|
|
override fun onStart() {
|
super.onStart()
|
mRouteGuideManager!!.onStart()
|
}
|
|
override fun onResume() {
|
super.onResume()
|
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
mRouteGuideManager!!.onResume()
|
}
|
|
override fun onPause() {
|
super.onPause()
|
mRouteGuideManager!!.onPause()
|
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
|
}
|
|
override fun onStop() {
|
super.onStop()
|
mRouteGuideManager!!.onStop()
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
mRouteGuideManager!!.onDestroy(false)
|
mRouteGuideManager = null
|
}
|
|
override fun onBackPressed() {
|
mRouteGuideManager!!.onBackPressed(false, true)
|
}
|
|
override fun onConfigurationChanged(newConfig: Configuration) {
|
super.onConfigurationChanged(newConfig!!)
|
mRouteGuideManager!!.onConfigurationChanged(newConfig)
|
}
|
|
override fun setRequestedOrientation(requestedOrientation: Int) {
|
|
}
|
|
override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
|
return if (!mRouteGuideManager!!.onKeyDown(keyCode, event)) {
|
super.onKeyDown(keyCode, event)
|
} else true
|
}
|
|
override fun onRequestPermissionsResult(
|
requestCode: Int, permissions: Array<String?>,
|
grantResults: IntArray
|
) {
|
mRouteGuideManager!!.onRequestPermissionsResult(requestCode, permissions, grantResults)
|
}
|
|
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
super.onActivityResult(requestCode, resultCode, data)
|
mRouteGuideManager!!.onActivityResult(requestCode, resultCode, data)
|
}
|
}
|