Problem in setting route in app using google API
I am trying to add direction route from my current location to destination. I have done my code and following a tutorial for that but the app is crashing again and again. I do not understand what is wrong. I am sharing my code here. The issue is not resolving and there is no capacity for lagcat to share here body limit is full.
class ViewDirections : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mService : GoogleService
private lateinit var mMap: GoogleMap
var polyline: Polyline? = null
lateinit var mCurrentMarker : Marker
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
lateinit var mLastLocation : Location
//private var permissions : Array<String> = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION)
companion object {
private const val PERMISSION_REQUEST: Int = 10
}
private fun buildLocationRequest() {
locationRequest = LocationRequest()
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
locationRequest.interval = 5000
locationRequest.fastestInterval = 3000
locationRequest.smallestDisplacement = 10f
}
private fun buildLocationCallback() {
locationCallback = object : LocationCallback() {
override fun onLocationResult(p0: LocationResult?) {
//Get Last location
mLastLocation = p0!!.lastLocation
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
}
private fun drawPath(mLastLocation: Location?, location : com.malik.testapplication.Model.Location) {
if (polyline!= null)
polyline!!.remove()
val origin = StringBuilder(mLastLocation!!.latitude.toString())
.append(",")
.append(mLastLocation.longitude.toString())
.toString()
val destination = StringBuilder(location.lat.toString())
.append(",")
.append(location.lng.toString())
.toString()
mService.getDirections(origin,destination)
.enqueue(object : Callback<String>{
override fun onFailure(call: Call<String>, t: Throwable) {
Log.d("Kotlin",t.message)
}
override fun onResponse(call: Call<String>, response: Response<String>) {
ParserTask().execute(response.body()!!.toString())
} })
}
override fun onStop() {
fusedLocationProviderClient.removeLocationUpdates(locationCallback)
super.onStop() }
private fun checkLocationPermission(): Boolean {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION))
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
else
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
return false
} else
return true
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_view_directions)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
mService = Common.googleApiScalarService
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
} else {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
}
}
}
//@RequiresApi(Build.VERSION_CODES.M)
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
ViewDirections.PERMISSION_REQUEST -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
// Toast.makeText(this, "Location is ON", Toast.LENGTH_SHORT).show()
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
)
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
mMap.isMyLocationEnabled = true
}
} else {
Toast.makeText(this, "Permission is denied", Toast.LENGTH_SHORT).show()
}
}
}
}
@SuppressLint("MissingPermission")
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.uiSettings.isZoomControlsEnabled = true
fusedLocationProviderClient.lastLocation.addOnSuccessListener { location ->
mLastLocation = location
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
inner class ParserTask : AsyncTask<String,Int,List<List<HashMap<String,String>>>>() {
internal val waitingDialog : AlertDialog = SpotsDialog(this@ViewDirections)
override fun onPreExecute() {
super.onPreExecute()
waitingDialog.show()
waitingDialog.setMessage("Please Wait...")
}
override fun doInBackground(vararg params: String?): List<List<HashMap<String, String>>>? {
val jsonObject : JSONObject
var routes : List<List<HashMap<String, String>>>? =null
try {
jsonObject = JSONObject(params[0])
val parser = DirectionJSONParser()
routes = parser.parse(jsonObject)
}catch (e : JSONException){
e.printStackTrace()
}
return routes
}
override fun onPostExecute(result: List<List<HashMap<String, String>>>?) {
super.onPostExecute(result)
var points : ArrayList<LatLng>
var polylineOptions : PolylineOptions? = null
for(i in result!!.indices){
points = ArrayList()
polylineOptions = PolylineOptions()
val path =result[i]
for (j in path.indices){
val point = path[j]
val lat = point["lat"]!!.toDouble()
val lng = point["lng"]!!.toDouble()
val position = LatLng(lat,lng)
points.add(position)
}
polylineOptions.addAll(points)
polylineOptions.width(12f)
polylineOptions.color(Color.RED)
polylineOptions.geodesic(true)
}
polyline = mMap.addPolyline(polylineOptions)
waitingDialog.dismiss()
}
}
}
Logcat:
2018-11-16 15:04:40.817 4720-16409/? E/ActivityManager: getPackageFromAppProcesses, return null :22519
2018-11-16 15:04:40.861 22522-22522/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2018-11-16 15:04:40.873 2602-3503/? E/audio_hw_primary: adev_close_input_stream, set jack_in to null
2018-11-16 15:04:40.902 22506-22506/? E/appproc: Enhanced Zygote ASLR: ro.knox.enhance.zygote.aslr != 1. Enhanced Zygote ASLR is DISABLED!
2018-11-16 15:04:40.923 18326-18326/? E/adbd: recv: OPEN 0000001e 00000000 000b:6A 64 77 70 3A 32 32 35 32 32 00
2018-11-16 15:04:41.153 22506-22506/? E/SemAffinityControl: SemAffinityControl: registerfunction enter
2018-11-16 15:04:41.430 4720-4804/? E/WindowManager: win=Window{856ed4e u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:42.026 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.027 4720-5491/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:42.066 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.394 4720-4804/? E/WindowManager: win=Window{40cef14 u0 Splash Screen com.malik.testapplication EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.130 4720-4804/? E/WindowManager: win=Window{23c455b u0 com.malik.testapplication/com.malik.testapplication.MapsActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.176 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove bdc04d3 from com.google.android.gms.persistent
2018-11-16 15:04:53.157 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request d21d6b8 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:53.160 4720-5801/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:53.708 4720-4804/? E/WindowManager: win=Window{72d604 u0 com.malik.testapplication/com.malik.testapplication.ViewPlaces EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:54.033 22522-22522/com.malik.testapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.malik.testapplication, PID: 22522
kotlin.KotlinNullPointerException
at com.malik.testapplication.ViewDirections$drawPath$1.onResponse(ViewDirections.kt:117)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
2018-11-16 15:04:54.823 4720-5167/? E/LightsService: Light requested not available on this device. 2
2018-11-16 15:04:55.320 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.341 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.363 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.384 4720-4730/? E/ActivityManager: Found activity ActivityRecord{465da4e u0 com.malik.testapplication/.MapsActivity t-1 f} in proc activity list using null instead of expected ProcessRecord{414662d 22522:com.malik.testapplication/u0a246}
2018-11-16 15:04:55.417 4720-4736/? E/ViewRootImpl: sendUserActionEvent() returned.
2018-11-16 15:04:55.439 12234-12234/? E/PBSessionCacheImpl: sessionId[53807243290634637] not persisted.
2018-11-16 15:04:55.478 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove d21d6b8 from com.google.android.gms.persistent
2018-11-16 15:04:55.676 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, , 1]
2018-11-16 15:04:55.679 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.680 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, , 1]
2018-11-16 15:04:55.681 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.682 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, , 216]
2018-11-16 15:04:55.685 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, tayb125.ta@gmail.com, 216]
2018-11-16 15:04:55.687 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, , 205]
2018-11-16 15:04:55.688 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.689 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, , 208]
2018-11-16 15:04:55.690 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.691 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, , 232]
2018-11-16 15:04:55.692 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, tayb125.ta@gmail.com, 232]
2018-11-16 15:04:55.693 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, , 205]
2018-11-16 15:04:55.694 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.695 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, , 210]
2018-11-16 15:04:55.696 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.697 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, , 2]
2018-11-16 15:04:55.700 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, tayb125.ta@gmail.com, 2]
2018-11-16 15:04:55.701 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, , 212]
2018-11-16 15:04:55.702 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.703 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, , 203]
2018-11-16 15:04:55.704 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, tayb125.ta@gmail.com, 203]
2018-11-16 15:04:55.705 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, , 201]
2018-11-16 15:04:55.706 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, tayb125.ta@gmail.com, 201]
2018-11-16 15:04:55.707 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, , 1]
2018-11-16 15:04:55.710 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.712 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, , 210]
2018-11-16 15:04:55.713 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.714 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.715 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.716 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.717 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.718 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, , 3]
2018-11-16 15:04:55.719 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, tayb125.ta@gmail.com, 3]
2018-11-16 15:04:55.720 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, , 212]
2018-11-16 15:04:55.721 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.722 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, , 985201143]
2018-11-16 15:04:55.723 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, tayb125.ta@gmail.com, 985201143]
2018-11-16 15:04:55.725 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, , 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, tayb125.ta@gmail.com, 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, , 105]
2018-11-16 15:04:55.728 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, tayb125.ta@gmail.com, 105]
2018-11-16 15:04:55.729 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, , 209]
2018-11-16 15:04:55.730 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, tayb125.ta@gmail.com, 209]
2018-11-16 15:04:55.731 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, , 1800]
2018-11-16 15:04:55.732 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.733 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, , 1800]
2018-11-16 15:04:55.734 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.735 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, , 226]
2018-11-16 15:04:55.737 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, tayb125.ta@gmail.com, 226]
2018-11-16 15:04:55.738 32306-20762/? E/XXX: Going to delete [com.google.android.gm, , 60362688]
2018-11-16 15:04:55.742 32306-20762/? E/XXX: Going to delete [com.google.android.gm, tayb125.ta@gmail.com, 60362688]
2018-11-16 15:04:55.743 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, , 2263968]
2018-11-16 15:04:55.760 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, tayb125.ta@gmail.com, 2263968]
2018-11-16 15:04:55.765 32306-20762/? E/XXX: Going to delete [com.google.apps.drive.android, , 181520134]
2018-11-16 15:04:55.767 4720-4804/? E/WindowManager: win=Window{4fb27ff u0 com.malik.testapplication/com.malik.testapplication.ViewDirections EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.TaskStack.stepAppWindowsAnimation:2018
add a comment |
I am trying to add direction route from my current location to destination. I have done my code and following a tutorial for that but the app is crashing again and again. I do not understand what is wrong. I am sharing my code here. The issue is not resolving and there is no capacity for lagcat to share here body limit is full.
class ViewDirections : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mService : GoogleService
private lateinit var mMap: GoogleMap
var polyline: Polyline? = null
lateinit var mCurrentMarker : Marker
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
lateinit var mLastLocation : Location
//private var permissions : Array<String> = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION)
companion object {
private const val PERMISSION_REQUEST: Int = 10
}
private fun buildLocationRequest() {
locationRequest = LocationRequest()
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
locationRequest.interval = 5000
locationRequest.fastestInterval = 3000
locationRequest.smallestDisplacement = 10f
}
private fun buildLocationCallback() {
locationCallback = object : LocationCallback() {
override fun onLocationResult(p0: LocationResult?) {
//Get Last location
mLastLocation = p0!!.lastLocation
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
}
private fun drawPath(mLastLocation: Location?, location : com.malik.testapplication.Model.Location) {
if (polyline!= null)
polyline!!.remove()
val origin = StringBuilder(mLastLocation!!.latitude.toString())
.append(",")
.append(mLastLocation.longitude.toString())
.toString()
val destination = StringBuilder(location.lat.toString())
.append(",")
.append(location.lng.toString())
.toString()
mService.getDirections(origin,destination)
.enqueue(object : Callback<String>{
override fun onFailure(call: Call<String>, t: Throwable) {
Log.d("Kotlin",t.message)
}
override fun onResponse(call: Call<String>, response: Response<String>) {
ParserTask().execute(response.body()!!.toString())
} })
}
override fun onStop() {
fusedLocationProviderClient.removeLocationUpdates(locationCallback)
super.onStop() }
private fun checkLocationPermission(): Boolean {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION))
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
else
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
return false
} else
return true
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_view_directions)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
mService = Common.googleApiScalarService
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
} else {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
}
}
}
//@RequiresApi(Build.VERSION_CODES.M)
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
ViewDirections.PERMISSION_REQUEST -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
// Toast.makeText(this, "Location is ON", Toast.LENGTH_SHORT).show()
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
)
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
mMap.isMyLocationEnabled = true
}
} else {
Toast.makeText(this, "Permission is denied", Toast.LENGTH_SHORT).show()
}
}
}
}
@SuppressLint("MissingPermission")
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.uiSettings.isZoomControlsEnabled = true
fusedLocationProviderClient.lastLocation.addOnSuccessListener { location ->
mLastLocation = location
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
inner class ParserTask : AsyncTask<String,Int,List<List<HashMap<String,String>>>>() {
internal val waitingDialog : AlertDialog = SpotsDialog(this@ViewDirections)
override fun onPreExecute() {
super.onPreExecute()
waitingDialog.show()
waitingDialog.setMessage("Please Wait...")
}
override fun doInBackground(vararg params: String?): List<List<HashMap<String, String>>>? {
val jsonObject : JSONObject
var routes : List<List<HashMap<String, String>>>? =null
try {
jsonObject = JSONObject(params[0])
val parser = DirectionJSONParser()
routes = parser.parse(jsonObject)
}catch (e : JSONException){
e.printStackTrace()
}
return routes
}
override fun onPostExecute(result: List<List<HashMap<String, String>>>?) {
super.onPostExecute(result)
var points : ArrayList<LatLng>
var polylineOptions : PolylineOptions? = null
for(i in result!!.indices){
points = ArrayList()
polylineOptions = PolylineOptions()
val path =result[i]
for (j in path.indices){
val point = path[j]
val lat = point["lat"]!!.toDouble()
val lng = point["lng"]!!.toDouble()
val position = LatLng(lat,lng)
points.add(position)
}
polylineOptions.addAll(points)
polylineOptions.width(12f)
polylineOptions.color(Color.RED)
polylineOptions.geodesic(true)
}
polyline = mMap.addPolyline(polylineOptions)
waitingDialog.dismiss()
}
}
}
Logcat:
2018-11-16 15:04:40.817 4720-16409/? E/ActivityManager: getPackageFromAppProcesses, return null :22519
2018-11-16 15:04:40.861 22522-22522/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2018-11-16 15:04:40.873 2602-3503/? E/audio_hw_primary: adev_close_input_stream, set jack_in to null
2018-11-16 15:04:40.902 22506-22506/? E/appproc: Enhanced Zygote ASLR: ro.knox.enhance.zygote.aslr != 1. Enhanced Zygote ASLR is DISABLED!
2018-11-16 15:04:40.923 18326-18326/? E/adbd: recv: OPEN 0000001e 00000000 000b:6A 64 77 70 3A 32 32 35 32 32 00
2018-11-16 15:04:41.153 22506-22506/? E/SemAffinityControl: SemAffinityControl: registerfunction enter
2018-11-16 15:04:41.430 4720-4804/? E/WindowManager: win=Window{856ed4e u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:42.026 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.027 4720-5491/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:42.066 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.394 4720-4804/? E/WindowManager: win=Window{40cef14 u0 Splash Screen com.malik.testapplication EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.130 4720-4804/? E/WindowManager: win=Window{23c455b u0 com.malik.testapplication/com.malik.testapplication.MapsActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.176 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove bdc04d3 from com.google.android.gms.persistent
2018-11-16 15:04:53.157 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request d21d6b8 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:53.160 4720-5801/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:53.708 4720-4804/? E/WindowManager: win=Window{72d604 u0 com.malik.testapplication/com.malik.testapplication.ViewPlaces EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:54.033 22522-22522/com.malik.testapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.malik.testapplication, PID: 22522
kotlin.KotlinNullPointerException
at com.malik.testapplication.ViewDirections$drawPath$1.onResponse(ViewDirections.kt:117)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
2018-11-16 15:04:54.823 4720-5167/? E/LightsService: Light requested not available on this device. 2
2018-11-16 15:04:55.320 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.341 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.363 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.384 4720-4730/? E/ActivityManager: Found activity ActivityRecord{465da4e u0 com.malik.testapplication/.MapsActivity t-1 f} in proc activity list using null instead of expected ProcessRecord{414662d 22522:com.malik.testapplication/u0a246}
2018-11-16 15:04:55.417 4720-4736/? E/ViewRootImpl: sendUserActionEvent() returned.
2018-11-16 15:04:55.439 12234-12234/? E/PBSessionCacheImpl: sessionId[53807243290634637] not persisted.
2018-11-16 15:04:55.478 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove d21d6b8 from com.google.android.gms.persistent
2018-11-16 15:04:55.676 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, , 1]
2018-11-16 15:04:55.679 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.680 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, , 1]
2018-11-16 15:04:55.681 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.682 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, , 216]
2018-11-16 15:04:55.685 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, tayb125.ta@gmail.com, 216]
2018-11-16 15:04:55.687 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, , 205]
2018-11-16 15:04:55.688 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.689 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, , 208]
2018-11-16 15:04:55.690 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.691 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, , 232]
2018-11-16 15:04:55.692 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, tayb125.ta@gmail.com, 232]
2018-11-16 15:04:55.693 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, , 205]
2018-11-16 15:04:55.694 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.695 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, , 210]
2018-11-16 15:04:55.696 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.697 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, , 2]
2018-11-16 15:04:55.700 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, tayb125.ta@gmail.com, 2]
2018-11-16 15:04:55.701 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, , 212]
2018-11-16 15:04:55.702 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.703 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, , 203]
2018-11-16 15:04:55.704 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, tayb125.ta@gmail.com, 203]
2018-11-16 15:04:55.705 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, , 201]
2018-11-16 15:04:55.706 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, tayb125.ta@gmail.com, 201]
2018-11-16 15:04:55.707 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, , 1]
2018-11-16 15:04:55.710 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.712 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, , 210]
2018-11-16 15:04:55.713 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.714 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.715 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.716 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.717 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.718 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, , 3]
2018-11-16 15:04:55.719 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, tayb125.ta@gmail.com, 3]
2018-11-16 15:04:55.720 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, , 212]
2018-11-16 15:04:55.721 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.722 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, , 985201143]
2018-11-16 15:04:55.723 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, tayb125.ta@gmail.com, 985201143]
2018-11-16 15:04:55.725 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, , 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, tayb125.ta@gmail.com, 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, , 105]
2018-11-16 15:04:55.728 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, tayb125.ta@gmail.com, 105]
2018-11-16 15:04:55.729 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, , 209]
2018-11-16 15:04:55.730 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, tayb125.ta@gmail.com, 209]
2018-11-16 15:04:55.731 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, , 1800]
2018-11-16 15:04:55.732 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.733 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, , 1800]
2018-11-16 15:04:55.734 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.735 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, , 226]
2018-11-16 15:04:55.737 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, tayb125.ta@gmail.com, 226]
2018-11-16 15:04:55.738 32306-20762/? E/XXX: Going to delete [com.google.android.gm, , 60362688]
2018-11-16 15:04:55.742 32306-20762/? E/XXX: Going to delete [com.google.android.gm, tayb125.ta@gmail.com, 60362688]
2018-11-16 15:04:55.743 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, , 2263968]
2018-11-16 15:04:55.760 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, tayb125.ta@gmail.com, 2263968]
2018-11-16 15:04:55.765 32306-20762/? E/XXX: Going to delete [com.google.apps.drive.android, , 181520134]
2018-11-16 15:04:55.767 4720-4804/? E/WindowManager: win=Window{4fb27ff u0 com.malik.testapplication/com.malik.testapplication.ViewDirections EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.TaskStack.stepAppWindowsAnimation:2018
There is always possibility to add logcat.
– Vivek Mishra
Nov 16 '18 at 10:16
I am trying to add let me try once more
– Tayyab Ali
Nov 16 '18 at 10:35
What is the line 117 ofViewDirections.kt? I assume this lineParserTask().execute(response.body()!!.toString()), and maybe response.body() is null?
– Geno Chen
Nov 20 '18 at 5:51
add a comment |
I am trying to add direction route from my current location to destination. I have done my code and following a tutorial for that but the app is crashing again and again. I do not understand what is wrong. I am sharing my code here. The issue is not resolving and there is no capacity for lagcat to share here body limit is full.
class ViewDirections : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mService : GoogleService
private lateinit var mMap: GoogleMap
var polyline: Polyline? = null
lateinit var mCurrentMarker : Marker
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
lateinit var mLastLocation : Location
//private var permissions : Array<String> = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION)
companion object {
private const val PERMISSION_REQUEST: Int = 10
}
private fun buildLocationRequest() {
locationRequest = LocationRequest()
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
locationRequest.interval = 5000
locationRequest.fastestInterval = 3000
locationRequest.smallestDisplacement = 10f
}
private fun buildLocationCallback() {
locationCallback = object : LocationCallback() {
override fun onLocationResult(p0: LocationResult?) {
//Get Last location
mLastLocation = p0!!.lastLocation
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
}
private fun drawPath(mLastLocation: Location?, location : com.malik.testapplication.Model.Location) {
if (polyline!= null)
polyline!!.remove()
val origin = StringBuilder(mLastLocation!!.latitude.toString())
.append(",")
.append(mLastLocation.longitude.toString())
.toString()
val destination = StringBuilder(location.lat.toString())
.append(",")
.append(location.lng.toString())
.toString()
mService.getDirections(origin,destination)
.enqueue(object : Callback<String>{
override fun onFailure(call: Call<String>, t: Throwable) {
Log.d("Kotlin",t.message)
}
override fun onResponse(call: Call<String>, response: Response<String>) {
ParserTask().execute(response.body()!!.toString())
} })
}
override fun onStop() {
fusedLocationProviderClient.removeLocationUpdates(locationCallback)
super.onStop() }
private fun checkLocationPermission(): Boolean {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION))
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
else
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
return false
} else
return true
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_view_directions)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
mService = Common.googleApiScalarService
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
} else {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
}
}
}
//@RequiresApi(Build.VERSION_CODES.M)
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
ViewDirections.PERMISSION_REQUEST -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
// Toast.makeText(this, "Location is ON", Toast.LENGTH_SHORT).show()
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
)
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
mMap.isMyLocationEnabled = true
}
} else {
Toast.makeText(this, "Permission is denied", Toast.LENGTH_SHORT).show()
}
}
}
}
@SuppressLint("MissingPermission")
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.uiSettings.isZoomControlsEnabled = true
fusedLocationProviderClient.lastLocation.addOnSuccessListener { location ->
mLastLocation = location
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
inner class ParserTask : AsyncTask<String,Int,List<List<HashMap<String,String>>>>() {
internal val waitingDialog : AlertDialog = SpotsDialog(this@ViewDirections)
override fun onPreExecute() {
super.onPreExecute()
waitingDialog.show()
waitingDialog.setMessage("Please Wait...")
}
override fun doInBackground(vararg params: String?): List<List<HashMap<String, String>>>? {
val jsonObject : JSONObject
var routes : List<List<HashMap<String, String>>>? =null
try {
jsonObject = JSONObject(params[0])
val parser = DirectionJSONParser()
routes = parser.parse(jsonObject)
}catch (e : JSONException){
e.printStackTrace()
}
return routes
}
override fun onPostExecute(result: List<List<HashMap<String, String>>>?) {
super.onPostExecute(result)
var points : ArrayList<LatLng>
var polylineOptions : PolylineOptions? = null
for(i in result!!.indices){
points = ArrayList()
polylineOptions = PolylineOptions()
val path =result[i]
for (j in path.indices){
val point = path[j]
val lat = point["lat"]!!.toDouble()
val lng = point["lng"]!!.toDouble()
val position = LatLng(lat,lng)
points.add(position)
}
polylineOptions.addAll(points)
polylineOptions.width(12f)
polylineOptions.color(Color.RED)
polylineOptions.geodesic(true)
}
polyline = mMap.addPolyline(polylineOptions)
waitingDialog.dismiss()
}
}
}
Logcat:
2018-11-16 15:04:40.817 4720-16409/? E/ActivityManager: getPackageFromAppProcesses, return null :22519
2018-11-16 15:04:40.861 22522-22522/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2018-11-16 15:04:40.873 2602-3503/? E/audio_hw_primary: adev_close_input_stream, set jack_in to null
2018-11-16 15:04:40.902 22506-22506/? E/appproc: Enhanced Zygote ASLR: ro.knox.enhance.zygote.aslr != 1. Enhanced Zygote ASLR is DISABLED!
2018-11-16 15:04:40.923 18326-18326/? E/adbd: recv: OPEN 0000001e 00000000 000b:6A 64 77 70 3A 32 32 35 32 32 00
2018-11-16 15:04:41.153 22506-22506/? E/SemAffinityControl: SemAffinityControl: registerfunction enter
2018-11-16 15:04:41.430 4720-4804/? E/WindowManager: win=Window{856ed4e u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:42.026 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.027 4720-5491/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:42.066 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.394 4720-4804/? E/WindowManager: win=Window{40cef14 u0 Splash Screen com.malik.testapplication EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.130 4720-4804/? E/WindowManager: win=Window{23c455b u0 com.malik.testapplication/com.malik.testapplication.MapsActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.176 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove bdc04d3 from com.google.android.gms.persistent
2018-11-16 15:04:53.157 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request d21d6b8 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:53.160 4720-5801/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:53.708 4720-4804/? E/WindowManager: win=Window{72d604 u0 com.malik.testapplication/com.malik.testapplication.ViewPlaces EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:54.033 22522-22522/com.malik.testapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.malik.testapplication, PID: 22522
kotlin.KotlinNullPointerException
at com.malik.testapplication.ViewDirections$drawPath$1.onResponse(ViewDirections.kt:117)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
2018-11-16 15:04:54.823 4720-5167/? E/LightsService: Light requested not available on this device. 2
2018-11-16 15:04:55.320 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.341 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.363 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.384 4720-4730/? E/ActivityManager: Found activity ActivityRecord{465da4e u0 com.malik.testapplication/.MapsActivity t-1 f} in proc activity list using null instead of expected ProcessRecord{414662d 22522:com.malik.testapplication/u0a246}
2018-11-16 15:04:55.417 4720-4736/? E/ViewRootImpl: sendUserActionEvent() returned.
2018-11-16 15:04:55.439 12234-12234/? E/PBSessionCacheImpl: sessionId[53807243290634637] not persisted.
2018-11-16 15:04:55.478 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove d21d6b8 from com.google.android.gms.persistent
2018-11-16 15:04:55.676 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, , 1]
2018-11-16 15:04:55.679 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.680 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, , 1]
2018-11-16 15:04:55.681 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.682 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, , 216]
2018-11-16 15:04:55.685 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, tayb125.ta@gmail.com, 216]
2018-11-16 15:04:55.687 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, , 205]
2018-11-16 15:04:55.688 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.689 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, , 208]
2018-11-16 15:04:55.690 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.691 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, , 232]
2018-11-16 15:04:55.692 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, tayb125.ta@gmail.com, 232]
2018-11-16 15:04:55.693 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, , 205]
2018-11-16 15:04:55.694 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.695 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, , 210]
2018-11-16 15:04:55.696 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.697 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, , 2]
2018-11-16 15:04:55.700 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, tayb125.ta@gmail.com, 2]
2018-11-16 15:04:55.701 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, , 212]
2018-11-16 15:04:55.702 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.703 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, , 203]
2018-11-16 15:04:55.704 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, tayb125.ta@gmail.com, 203]
2018-11-16 15:04:55.705 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, , 201]
2018-11-16 15:04:55.706 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, tayb125.ta@gmail.com, 201]
2018-11-16 15:04:55.707 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, , 1]
2018-11-16 15:04:55.710 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.712 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, , 210]
2018-11-16 15:04:55.713 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.714 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.715 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.716 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.717 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.718 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, , 3]
2018-11-16 15:04:55.719 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, tayb125.ta@gmail.com, 3]
2018-11-16 15:04:55.720 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, , 212]
2018-11-16 15:04:55.721 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.722 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, , 985201143]
2018-11-16 15:04:55.723 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, tayb125.ta@gmail.com, 985201143]
2018-11-16 15:04:55.725 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, , 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, tayb125.ta@gmail.com, 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, , 105]
2018-11-16 15:04:55.728 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, tayb125.ta@gmail.com, 105]
2018-11-16 15:04:55.729 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, , 209]
2018-11-16 15:04:55.730 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, tayb125.ta@gmail.com, 209]
2018-11-16 15:04:55.731 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, , 1800]
2018-11-16 15:04:55.732 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.733 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, , 1800]
2018-11-16 15:04:55.734 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.735 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, , 226]
2018-11-16 15:04:55.737 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, tayb125.ta@gmail.com, 226]
2018-11-16 15:04:55.738 32306-20762/? E/XXX: Going to delete [com.google.android.gm, , 60362688]
2018-11-16 15:04:55.742 32306-20762/? E/XXX: Going to delete [com.google.android.gm, tayb125.ta@gmail.com, 60362688]
2018-11-16 15:04:55.743 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, , 2263968]
2018-11-16 15:04:55.760 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, tayb125.ta@gmail.com, 2263968]
2018-11-16 15:04:55.765 32306-20762/? E/XXX: Going to delete [com.google.apps.drive.android, , 181520134]
2018-11-16 15:04:55.767 4720-4804/? E/WindowManager: win=Window{4fb27ff u0 com.malik.testapplication/com.malik.testapplication.ViewDirections EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.TaskStack.stepAppWindowsAnimation:2018
I am trying to add direction route from my current location to destination. I have done my code and following a tutorial for that but the app is crashing again and again. I do not understand what is wrong. I am sharing my code here. The issue is not resolving and there is no capacity for lagcat to share here body limit is full.
class ViewDirections : AppCompatActivity(), OnMapReadyCallback {
private lateinit var mService : GoogleService
private lateinit var mMap: GoogleMap
var polyline: Polyline? = null
lateinit var mCurrentMarker : Marker
private lateinit var fusedLocationProviderClient: FusedLocationProviderClient
private lateinit var locationRequest: LocationRequest
private lateinit var locationCallback: LocationCallback
lateinit var mLastLocation : Location
//private var permissions : Array<String> = arrayOf(Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION)
companion object {
private const val PERMISSION_REQUEST: Int = 10
}
private fun buildLocationRequest() {
locationRequest = LocationRequest()
locationRequest.priority = LocationRequest.PRIORITY_HIGH_ACCURACY
locationRequest.interval = 5000
locationRequest.fastestInterval = 3000
locationRequest.smallestDisplacement = 10f
}
private fun buildLocationCallback() {
locationCallback = object : LocationCallback() {
override fun onLocationResult(p0: LocationResult?) {
//Get Last location
mLastLocation = p0!!.lastLocation
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
}
private fun drawPath(mLastLocation: Location?, location : com.malik.testapplication.Model.Location) {
if (polyline!= null)
polyline!!.remove()
val origin = StringBuilder(mLastLocation!!.latitude.toString())
.append(",")
.append(mLastLocation.longitude.toString())
.toString()
val destination = StringBuilder(location.lat.toString())
.append(",")
.append(location.lng.toString())
.toString()
mService.getDirections(origin,destination)
.enqueue(object : Callback<String>{
override fun onFailure(call: Call<String>, t: Throwable) {
Log.d("Kotlin",t.message)
}
override fun onResponse(call: Call<String>, response: Response<String>) {
ParserTask().execute(response.body()!!.toString())
} })
}
override fun onStop() {
fusedLocationProviderClient.removeLocationUpdates(locationCallback)
super.onStop() }
private fun checkLocationPermission(): Boolean {
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) != PackageManager.PERMISSION_GRANTED
) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this, Manifest.permission.ACCESS_FINE_LOCATION))
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
else
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_FINE_LOCATION),
ViewDirections.PERMISSION_REQUEST
)
return false
} else
return true
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_view_directions)
// Obtain the SupportMapFragment and get notified when the map is ready to be used.
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
mService = Common.googleApiScalarService
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
} else {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
}
}
}
//@RequiresApi(Build.VERSION_CODES.M)
override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
when (requestCode) {
ViewDirections.PERMISSION_REQUEST -> {
if ((grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
// Toast.makeText(this, "Location is ON", Toast.LENGTH_SHORT).show()
if (ContextCompat.checkSelfPermission(
this,
Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
)
if (checkLocationPermission()) {
buildLocationRequest()
buildLocationCallback()
fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this)
fusedLocationProviderClient.requestLocationUpdates(
locationRequest,
locationCallback,
Looper.myLooper()
)
mMap.isMyLocationEnabled = true
}
} else {
Toast.makeText(this, "Permission is denied", Toast.LENGTH_SHORT).show()
}
}
}
}
@SuppressLint("MissingPermission")
override fun onMapReady(googleMap: GoogleMap) {
mMap = googleMap
mMap.uiSettings.isZoomControlsEnabled = true
fusedLocationProviderClient.lastLocation.addOnSuccessListener { location ->
mLastLocation = location
val markerOptions = MarkerOptions()
.position(LatLng(mLastLocation.latitude,mLastLocation.longitude))
.title("My Position")
.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_GREEN))
mCurrentMarker = mMap.addMarker(markerOptions)
mMap.moveCamera(CameraUpdateFactory.newLatLng(LatLng(mLastLocation.latitude,mLastLocation.longitude)))
mMap.animateCamera(CameraUpdateFactory.zoomTo(11f))
val destinationLatLng = LatLng(Common.currentResults!!.geometry!!.location!!.lat,
Common.currentResults!!.geometry!!.location!!.lng)
mMap.addMarker(MarkerOptions().position(destinationLatLng)
.title(Common.currentResults!!.name))
.setIcon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_YELLOW))
//Get Direction
drawPath(mLastLocation,Common.currentResults!!.geometry!!.location!!)
}
}
inner class ParserTask : AsyncTask<String,Int,List<List<HashMap<String,String>>>>() {
internal val waitingDialog : AlertDialog = SpotsDialog(this@ViewDirections)
override fun onPreExecute() {
super.onPreExecute()
waitingDialog.show()
waitingDialog.setMessage("Please Wait...")
}
override fun doInBackground(vararg params: String?): List<List<HashMap<String, String>>>? {
val jsonObject : JSONObject
var routes : List<List<HashMap<String, String>>>? =null
try {
jsonObject = JSONObject(params[0])
val parser = DirectionJSONParser()
routes = parser.parse(jsonObject)
}catch (e : JSONException){
e.printStackTrace()
}
return routes
}
override fun onPostExecute(result: List<List<HashMap<String, String>>>?) {
super.onPostExecute(result)
var points : ArrayList<LatLng>
var polylineOptions : PolylineOptions? = null
for(i in result!!.indices){
points = ArrayList()
polylineOptions = PolylineOptions()
val path =result[i]
for (j in path.indices){
val point = path[j]
val lat = point["lat"]!!.toDouble()
val lng = point["lng"]!!.toDouble()
val position = LatLng(lat,lng)
points.add(position)
}
polylineOptions.addAll(points)
polylineOptions.width(12f)
polylineOptions.color(Color.RED)
polylineOptions.geodesic(true)
}
polyline = mMap.addPolyline(polylineOptions)
waitingDialog.dismiss()
}
}
}
Logcat:
2018-11-16 15:04:40.817 4720-16409/? E/ActivityManager: getPackageFromAppProcesses, return null :22519
2018-11-16 15:04:40.861 22522-22522/? E/Zygote: isWhitelistProcess - Process is Whitelisted
2018-11-16 15:04:40.873 2602-3503/? E/audio_hw_primary: adev_close_input_stream, set jack_in to null
2018-11-16 15:04:40.902 22506-22506/? E/appproc: Enhanced Zygote ASLR: ro.knox.enhance.zygote.aslr != 1. Enhanced Zygote ASLR is DISABLED!
2018-11-16 15:04:40.923 18326-18326/? E/adbd: recv: OPEN 0000001e 00000000 000b:6A 64 77 70 3A 32 32 35 32 32 00
2018-11-16 15:04:41.153 22506-22506/? E/SemAffinityControl: SemAffinityControl: registerfunction enter
2018-11-16 15:04:41.430 4720-4804/? E/WindowManager: win=Window{856ed4e u0 com.sec.android.app.launcher/com.sec.android.app.launcher.activities.LauncherActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:42.026 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.027 4720-5491/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:42.066 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request bdc04d3 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:42.394 4720-4804/? E/WindowManager: win=Window{40cef14 u0 Splash Screen com.malik.testapplication EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.130 4720-4804/? E/WindowManager: win=Window{23c455b u0 com.malik.testapplication/com.malik.testapplication.MapsActivity EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.WindowStateAnimator.stepAnimationLocked:553 com.android.server.wm.DisplayContent.lambda$-com_android_server_wm_DisplayContent_21292:465
2018-11-16 15:04:52.176 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove bdc04d3 from com.google.android.gms.persistent
2018-11-16 15:04:53.157 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location request d21d6b8 gps interval=5000 from com.google.android.gms.persistent
2018-11-16 15:04:53.160 4720-5801/? E/PermissionMonitor: (NameNotFoundException) ApplicationInfo for (com.google.uid.shared) is null! UserId: 0
2018-11-16 15:04:53.708 4720-4804/? E/WindowManager: win=Window{72d604 u0 com.malik.testapplication/com.malik.testapplication.ViewPlaces EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=false win.mRemoveOnExit=false win.mViewVisibility=8, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.AppWindowToken.stepAppWindowsAnimation:1745
2018-11-16 15:04:54.033 22522-22522/com.malik.testapplication E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.malik.testapplication, PID: 22522
kotlin.KotlinNullPointerException
at com.malik.testapplication.ViewDirections$drawPath$1.onResponse(ViewDirections.kt:117)
at retrofit2.ExecutorCallAdapterFactory$ExecutorCallbackCall$1$1.run(ExecutorCallAdapterFactory.java:70)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:7000)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
2018-11-16 15:04:54.823 4720-5167/? E/LightsService: Light requested not available on this device. 2
2018-11-16 15:04:55.320 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.341 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.363 4720-4730/? E/KioskModeService: There's no matched data
2018-11-16 15:04:55.384 4720-4730/? E/ActivityManager: Found activity ActivityRecord{465da4e u0 com.malik.testapplication/.MapsActivity t-1 f} in proc activity list using null instead of expected ProcessRecord{414662d 22522:com.malik.testapplication/u0a246}
2018-11-16 15:04:55.417 4720-4736/? E/ViewRootImpl: sendUserActionEvent() returned.
2018-11-16 15:04:55.439 12234-12234/? E/PBSessionCacheImpl: sessionId[53807243290634637] not persisted.
2018-11-16 15:04:55.478 5354-5397/? E/RequestManager_FLP: [LocationManagerService] Location remove d21d6b8 from com.google.android.gms.persistent
2018-11-16 15:04:55.676 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, , 1]
2018-11-16 15:04:55.679 32306-20762/? E/XXX: Going to delete [com.google.android.gms.lockbox, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.680 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, , 1]
2018-11-16 15:04:55.681 32306-20762/? E/XXX: Going to delete [com.google.android.gms.easysignin, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.682 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, , 216]
2018-11-16 15:04:55.685 32306-20762/? E/XXX: Going to delete [com.google.android.gms.netrec, tayb125.ta@gmail.com, 216]
2018-11-16 15:04:55.687 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, , 205]
2018-11-16 15:04:55.688 32306-20762/? E/XXX: Going to delete [com.google.android.gms.subscriptions, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.689 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, , 208]
2018-11-16 15:04:55.690 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_phone, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.691 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, , 232]
2018-11-16 15:04:55.692 32306-20762/? E/XXX: Going to delete [com.google.android.gms.beacon, tayb125.ta@gmail.com, 232]
2018-11-16 15:04:55.693 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, , 205]
2018-11-16 15:04:55.694 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_place, tayb125.ta@gmail.com, 205]
2018-11-16 15:04:55.695 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, , 210]
2018-11-16 15:04:55.696 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing.config, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.697 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, , 2]
2018-11-16 15:04:55.700 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_folsom, tayb125.ta@gmail.com, 2]
2018-11-16 15:04:55.701 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, , 212]
2018-11-16 15:04:55.702 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustagent, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.703 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, , 203]
2018-11-16 15:04:55.704 32306-20762/? E/XXX: Going to delete [com.google.android.gms.trustlet_onbody, tayb125.ta@gmail.com, 203]
2018-11-16 15:04:55.705 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, , 201]
2018-11-16 15:04:55.706 32306-20762/? E/XXX: Going to delete [com.google.android.gms.languageprofile, tayb125.ta@gmail.com, 201]
2018-11-16 15:04:55.707 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, , 1]
2018-11-16 15:04:55.710 32306-20762/? E/XXX: Going to delete [com.google.android.gms.gconnect, tayb125.ta@gmail.com, 1]
2018-11-16 15:04:55.712 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, , 210]
2018-11-16 15:04:55.713 32306-20762/? E/XXX: Going to delete [com.google.android.gms.car_setup, tayb125.ta@gmail.com, 210]
2018-11-16 15:04:55.714 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.715 32306-20762/? E/XXX: Going to delete [com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.716 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, , 208]
2018-11-16 15:04:55.717 32306-20762/? E/XXX: Going to delete [alt.com.google.android.gms.devicedoctor, tayb125.ta@gmail.com, 208]
2018-11-16 15:04:55.718 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, , 3]
2018-11-16 15:04:55.719 32306-20762/? E/XXX: Going to delete [com.google.android.gms.auth_api_early_update, tayb125.ta@gmail.com, 3]
2018-11-16 15:04:55.720 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, , 212]
2018-11-16 15:04:55.721 32306-20762/? E/XXX: Going to delete [com.google.android.gms.locationsharing, tayb125.ta@gmail.com, 212]
2018-11-16 15:04:55.722 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, , 985201143]
2018-11-16 15:04:55.723 32306-20762/? E/XXX: Going to delete [com.google.android.apps.maps, tayb125.ta@gmail.com, 985201143]
2018-11-16 15:04:55.725 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, , 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.oauthintegrations#com.google.android.apps.maps, tayb125.ta@gmail.com, 17]
2018-11-16 15:04:55.726 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, , 105]
2018-11-16 15:04:55.728 32306-20762/? E/XXX: Going to delete [com.google.android.gms.semanticlocation, tayb125.ta@gmail.com, 105]
2018-11-16 15:04:55.729 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, , 209]
2018-11-16 15:04:55.730 32306-20762/? E/XXX: Going to delete [com.google.android.gms.notifications, tayb125.ta@gmail.com, 209]
2018-11-16 15:04:55.731 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, , 1800]
2018-11-16 15:04:55.732 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.733 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, , 1800]
2018-11-16 15:04:55.734 32306-20762/? E/XXX: Going to delete [com.google.android.gms.vision.sdk, tayb125.ta@gmail.com, 1800]
2018-11-16 15:04:55.735 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, , 226]
2018-11-16 15:04:55.737 32306-20762/? E/XXX: Going to delete [com.google.android.gms.fonts, tayb125.ta@gmail.com, 226]
2018-11-16 15:04:55.738 32306-20762/? E/XXX: Going to delete [com.google.android.gm, , 60362688]
2018-11-16 15:04:55.742 32306-20762/? E/XXX: Going to delete [com.google.android.gm, tayb125.ta@gmail.com, 60362688]
2018-11-16 15:04:55.743 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, , 2263968]
2018-11-16 15:04:55.760 32306-20762/? E/XXX: Going to delete [com.google.android.apps.tachyon, tayb125.ta@gmail.com, 2263968]
2018-11-16 15:04:55.765 32306-20762/? E/XXX: Going to delete [com.google.apps.drive.android, , 181520134]
2018-11-16 15:04:55.767 4720-4804/? E/WindowManager: win=Window{4fb27ff u0 com.malik.testapplication/com.malik.testapplication.ViewDirections EXITING} destroySurfaces: appStopped=false win.mWindowRemovalAllowed=true win.mRemoveOnExit=true win.mViewVisibility=0, caller=com.android.server.wm.AppWindowToken.destroySurfaces:748 com.android.server.wm.AppWindowToken.destroySurfaces:732 com.android.server.wm.WindowState.onExitAnimationDone:5523 com.android.server.wm.AppWindowAnimator.stepAnimationLocked:517 com.android.server.wm.TaskStack.stepAppWindowsAnimation:2018
edited Nov 16 '18 at 11:59
MrUpsidown
15.3k85096
15.3k85096
asked Nov 16 '18 at 10:15
Tayyab AliTayyab Ali
217
217
There is always possibility to add logcat.
– Vivek Mishra
Nov 16 '18 at 10:16
I am trying to add let me try once more
– Tayyab Ali
Nov 16 '18 at 10:35
What is the line 117 ofViewDirections.kt? I assume this lineParserTask().execute(response.body()!!.toString()), and maybe response.body() is null?
– Geno Chen
Nov 20 '18 at 5:51
add a comment |
There is always possibility to add logcat.
– Vivek Mishra
Nov 16 '18 at 10:16
I am trying to add let me try once more
– Tayyab Ali
Nov 16 '18 at 10:35
What is the line 117 ofViewDirections.kt? I assume this lineParserTask().execute(response.body()!!.toString()), and maybe response.body() is null?
– Geno Chen
Nov 20 '18 at 5:51
There is always possibility to add logcat.
– Vivek Mishra
Nov 16 '18 at 10:16
There is always possibility to add logcat.
– Vivek Mishra
Nov 16 '18 at 10:16
I am trying to add let me try once more
– Tayyab Ali
Nov 16 '18 at 10:35
I am trying to add let me try once more
– Tayyab Ali
Nov 16 '18 at 10:35
What is the line 117 of
ViewDirections.kt? I assume this line ParserTask().execute(response.body()!!.toString()), and maybe response.body() is null?– Geno Chen
Nov 20 '18 at 5:51
What is the line 117 of
ViewDirections.kt? I assume this line ParserTask().execute(response.body()!!.toString()), and maybe response.body() is null?– Geno Chen
Nov 20 '18 at 5:51
add a comment |
1 Answer
1
active
oldest
votes
getLastLocation() method that you are using for initializing mLastLocation can return null.
So because of this you had NullPointerException at this line
val origin = StringBuilder(mLastLocation!!.latitude.toString())
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
add a comment |
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335701%2fproblem-in-setting-route-in-app-using-google-api%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
getLastLocation() method that you are using for initializing mLastLocation can return null.
So because of this you had NullPointerException at this line
val origin = StringBuilder(mLastLocation!!.latitude.toString())
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
add a comment |
getLastLocation() method that you are using for initializing mLastLocation can return null.
So because of this you had NullPointerException at this line
val origin = StringBuilder(mLastLocation!!.latitude.toString())
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
add a comment |
getLastLocation() method that you are using for initializing mLastLocation can return null.
So because of this you had NullPointerException at this line
val origin = StringBuilder(mLastLocation!!.latitude.toString())
getLastLocation() method that you are using for initializing mLastLocation can return null.
So because of this you had NullPointerException at this line
val origin = StringBuilder(mLastLocation!!.latitude.toString())
answered Nov 16 '18 at 12:25
Stanislav MukhametshinStanislav Mukhametshin
42119
42119
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
add a comment |
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
I have changed it but did not worked
– Tayyab Ali
Nov 16 '18 at 12:34
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53335701%2fproblem-in-setting-route-in-app-using-google-api%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown

There is always possibility to add logcat.
– Vivek Mishra
Nov 16 '18 at 10:16
I am trying to add let me try once more
– Tayyab Ali
Nov 16 '18 at 10:35
What is the line 117 of
ViewDirections.kt? I assume this lineParserTask().execute(response.body()!!.toString()), and maybe response.body() is null?– Geno Chen
Nov 20 '18 at 5:51