Articles of android location

调用getSystemService(Context.LOCATION_SERVICE)和未调用onLocationChanged时出现NullpointerException

我正在尝试创建一个更新当前gps位置的后台服务。 我在NullPointerException LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);行获取NullPointerException LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); HomeActivity推出服务 startService(new Intent(getApplicationContext(), ForHire.class)); Service(ForHire)创建TimerTask更新 public class ForHire extends Service { … private Timer getUpdatesNow = new Timer(); private Updates updates = new Updates(getUpdatesNow); @Override public void onCreate() { … getUpdatesNow.schedule(updates, God.KM20TIME); Log.v(“Taxeeta”, “Notification created”); } private class Updates extends TimerTask implements LocationListener […]

Fused Location Provider是不错的选择?

我正在开发一个我想使用Fused Location Provider的应用程序。 但我有一些疑问,还有几个问题。 当GPS关闭并且我将优先级设置为HIGH时,这是否意味着GPS将自动打开? 我可以根据需要设置具有高优先级的融合提供商的UpdateLocation,以便至少节省一点电量吗? 我怎么知道Fused提供商正在使用什么(它是GPS还是网络提供商)? 最后 Fused提供商真的是android位置的最佳选择吗? 有什么负面的吗? 你有什么意见? 提前致谢。

Android Google Places API – PlaceAutocompleteFragment清除按钮监听器

我在我的项目中使用Google Places API – PlaceAutocompleteFragment API来搜索位置,当用户选择位置然后使用lat-long位置获取记录并将其显示到ListView。 现在问题是每当用户点击PlaceAutocompleteFragment的 清除按钮(X)时 ,我想要清除ListView项目,我需要听清楚按钮onClick? 怎么做? 任何帮助将不胜感激。 autocompleteFragment.setOnPlaceSelectedListener(new PlaceSelectionListener() { @Override public void onPlaceSelected(Place place) { LatLng latLng=place.getLatLng(); //hit web service, response parsing and add it to listview. } @Override public void onError(Status status) { Log.i(TAG, “An error occurred: ” + status); } });

如何在地图中find两个地理位置之间的正确距离?

我需要开发应用程序,用户必须find他停放的汽车,并显示他和停车之间的距离。我使用GPS和定位服务。 对于距离我使用了半径公式,但距离总是显示0米。 我尝试了很多搜索谷歌的解决方案,但dint得到任何正确的解决方案。 谁能提出他们的建议?

为什么locationmanager使用新的gettime-timestamp返回旧的位置修复?

我们有一个应用程序,在用户操作尝试获取位置修复。 它可以在GPS和网络上进行监听,并且具有基于时间/准确度的决策矩阵,以确定何时停止收听以及返回什么修复。 我们偶尔会注意到一种非常奇怪的行为。 我们使用经典的方式来查看修复程序的年龄,如下所示: long age = now – newLocation.getTime(); if(age >= prefs.getLocationMaxAge()){ Log.d(TAG, “location too old.”); return; } 但有时候,根据返回的时间戳,从操作系统返回的location.getTime的年龄大概可能是15-20秒,尽管我们可以确定它已经很老了。 例如,如果经度/纬度修正来自手机30分钟前的位置! 它似乎既发生在Wi-Fi和网络上,也不发生在GPS上。 对我来说,这完全是疯了。 有没有其他人看过这个,有什么办法吗? 我们已经在几款不同的手机上使用它,最近的一款是三星Galaxy S II 。 非常欢迎帮助。 编辑 :要非常清楚,问题是操作系统调用“onlocationchanged”回调,时间戳可能是几秒钟,当我确定“新”中的经度/纬度时修复是手机至少没有停留30分钟的地方。 这使得很难准确地确定手机的位置……

MyLocationOverlay dispatchTap()不会传播

我有一个MapView ,其中包含一些叠加层和MyLocationOverlay的子类,因为我希望用户当前位置显示在其他标记之上。 我正在处理标记的onTap事件,以显示一个面板,其中包含点击标记的信息,如果在标记之外(甚至在位置标记中)点击,则面板应该隐藏。 如果我点击标记或空白点一切都很好,面板会按预期显示或隐藏,但如果我点击位置标记没有任何反应(如果位置标记位于另一个标记上,则信息不会显示,如果它在外面,信息显示它不隐藏)。 在我的MyLocationOverlay我重写了dispatchTap()函数,使其返回false,如文档中所述 : 返回:如果处理此点击,则返回true; 如果应该将其发送到其他叠加层,则为false 。 但仍然无法正常工作,即使我试着以及以防万一,但没有… 有人知道如何将onTap事件传播到其他叠加层吗?

需要Android活动等到GPS位置获得

对不起我的英语不好。 我正试图从GPS获取一个位置以放置全局variables纬度,经度。 GPS打开,但活动在从GPS检索数据之前继续。 换句话说,我需要…方法getCurrentLocation()只有在find位置并填充经度和纬度variables时才能完成,所以我可以在其他方法中使用它们。 我知道……用户必须等待……我将在屏幕上显示一些内容。 我该怎么办? 谢谢 我想我正在某个地方跳过停止听GPS。 哪里更好? 代码如下: //Method to retrieve coordinates public void getCurrentLocation() { //Use GPS if possible if(manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { //assign Listener to GPS manager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener); Toast.makeText(this, LocationManager.GPS_PROVIDER, Toast.LENGTH_SHORT).show(); } else if(manager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){//toherwise, use NETWORK //assign Listener to NETWORK manager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, listener); Toast.makeText(this, LocationManager.NETWORK_PROVIDER, Toast.LENGTH_SHORT).show(); } } //Class to […]

android:location api要求wifi

这很奇怪。 我的意思是,我有强大的网络,GPS打开,仍然要求Wifi! 我正在使用新的位置Api和类FusedLocationProviderClient 。 这是我检查位置设置是否启用的方式: private void checkIfLocationSettingsAreEnabled() { LocationRequest locationRequest = new LocationRequest(); locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY); locationRequest.setInterval(10000); locationRequest.setFastestInterval(5000); LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder(); builder.addLocationRequest(locationRequest); builder.setAlwaysShow(true); SettingsClient client = LocationServices.getSettingsClient(context); Task locationSettingsResponseTask = client.checkLocationSettings(builder.build()); locationSettingsResponseTask.addOnSuccessListener(locationSettingsResponse -> { getLastKnownLocation(); }); locationSettingsResponseTask.addOnFailureListener(e -> { if (e instanceof ResolvableApiException) { myLocationListener.onResolutionNeeded(e); } else { myLocationListener.onLocationFailure(e); } }); } 使用上面的代码,我可以得到以下图像: 但是,然后,在单击“确定”后,再次调用checkIfSettingsAreEnabled()这将显示另一个popup窗口,如下所示: […]

什么位置提供商“被动”? 在Android 2.2上看到HTC Desire

在我进入基于位置的模式之前,我通过调用检查是否存在任何位置提供者 List android.location.LocationManager.getProviders(boolean enabledOnly) //enabledOnly = true 并检查结果列表的大小。 现在我在Android 2.2的HTC Desire上测试了我的应用程序。 系统设置不允许任何位置跟踪(GPS和移动设备已关闭)。 但是,返回的列表有1个条目,其值为“被动”。 它是什么? 我可以使用它吗? 提供商似乎很慢/不工作。

使用IntentService进行位置监听,但onHandleIntent后立即调用onDestroy

我正在使用IntentService来监听GPS位置更新,以便在用户离开活动时运行。 IS将消息中的Location发送给活动的处理程序。 问题是,当用户点击“停止跟踪”按钮时,状态栏通知“跟踪…”仍然存在,因为它是在IntentService中创建的。 所以我凌驾于onDestory()所以我可以打电话: mNotificationManager.cancel(TRACKING); 但问题是,当我实现onDestroy()时,它会在onHandleIntent之后立即调用。 如果我删除我的覆盖onDestroy()代码,那么它不会立即被调用并且运行正常,将位置发送回活动以在屏幕上显示。 任何想法为什么onDestroy()会立即被调用,如果我实现它,但不是,如果我不? 我在这里很困惑。 谢谢大家, Infinitifizz