Tag: locationmanager

kotlin coroutine抛出java.lang.IllegalStateException:已经恢复,但得到了值的位置

一般来说,我对Kotlin协同程序和Android开发很陌生。 在玩弄了解它是如何工作的时候,我遇到了一个我似乎无法解决的错误。 从基本的活动,我尝试连接到googleApiClient。 权限是可以的。 我希望使用kotlin协同程序以直接方式从LocationManager获取位置更新,以便稍后使用此位置对象。 我第一次在模拟器中改变自己的位置时,它工作的很好,第二次改变我的位置,它崩溃,像这样的exception: FATAL EXCEPTION: main Process: com.link_value.eventlv, PID: 32404 java.lang.IllegalStateException: Already resumed, but got value Location[gps 48.783000,2.516180 acc=20 et=+59m16s372ms alt=0.0 {Bundle[mParcelledData.dataSize=40]}] at kotlinx.coroutines.experimental.AbstractContinuation.resumeImpl(AbstractContinuation.kt:79) at kotlinx.coroutines.experimental.AbstractContinuation.resume(AbstractContinuation.kt:72) at com.link_value.eventlv.View.Create.NewEventLvActivity$await$2$1.onLocationChanged(NewEventLvActivity.kt:100) at android.location.LocationManager$ListenerTransport._handleMessage(LocationManager.java:297) at android.location.LocationManager$ListenerTransport.-wrap0(LocationManager.java) at android.location.LocationManager$ListenerTransport$1.handleMessage(LocationManager.java:242) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:154) at android.app.ActivityThread.main(ActivityThread.java:6077) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:866) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:756) override fun onCreate(savedInstanceState: Bundle?) { […]

locationManager.getBestProvider为API 15(API <23)返回null

我已经通过有关运行时权限的Android文档进行了检查,但仍找不到解决方法,以使下面的函数可用于23以下的API。将提供程序更改为LocationManager.GPS_PROVIDER还会导致运行时错误(请求的提供程序gps不exisit)。 我也将目标SDK版本设置为15,但仍无济于事。 函数(requestPermission被触发onCreate) fun getUserLocation(){ var myLocation = MyLocationListener() var locationManager=getSystemService(LOCATION_SERVICE) as LocationManager val criteria = Criteria() criteria.accuracy = Criteria.ACCURACY_FINE var provider = locationManager.getBestProvider(criteria,true) if(provider !=null) { locationManager.requestLocationUpdates(provider, 10, 3f, myLocation) lblAddress.text=location!!.latitude.toString() } } private fun requestPermission(){ if(android.os.Build.VERSION.SDK_INT>=23) { if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) { ActivityCompat.requestPermissions(this,arrayOf(android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION), REQUEST_CODE) return } […]