Articles of locationmanager

运行时错误 – java.lang.IllegalArgumentException:provider = gps

我从创build的Android应用程序的用户日志中得到这个错误。 到目前为止,我一直无法复制这个错误。 任何帮助将非常感激。 错误是: java.lang.IllegalArgumentException: provider=gps at android.os.Parcel.readException(Parcel.java:1326) at android.os.Parcel.readException(Parcel.java:1276) at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:646) at android.location.LocationManager._requestLocationUpdates(LocationManager.java:582) at android.location.LocationManager.requestLocationUpdates(LocationManager.java:446) at com.myApp.service.DeviceManager$7.handleMessage(DeviceManager.java:470) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loop(Looper.java:130) at android.app.ActivityThread.main(ActivityThread.java:3835) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:507) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:883) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:641) at dalvik.system.NativeStart.main(Native Method) 它引用的设备pipe理器位置是: private final Handler uihandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case […]

LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)不可靠,为什么?

我的应用程序的一个用户报告说,即使他打开了它的应用程序告诉networking的位置closures。 他给我几个屏幕截图,让我思考; LocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER) 工作不正常。 他的手机运行Android 4.1.2,首先我认为这是造成这个问题的原因。 但事实并非如此。 他给了我一个这样的设置的屏幕截图。 然后我Googlesearch,发现这一点 。 这个问题似乎帮助我,但不幸的是答案没有帮助这个案件和提问者没有追求更远。 我的应用程序与位置有关,并已使用LocationManager.isProviderEnabled知道GPS和networking的位置是打开或closures。 我从来没有被告知我的应用程序直到最近才正确地知道这些设置。 他是报告该问题的第一位用户。 我了解到还有另一种方法可以通过查看Secure.LOCATION_PROVIDERS_ALLOWED了解GPS和networking的位置设置。 为了看看这个方法如何在他的手机上工作,我写了一个简单的应用程序,并要求他跑。 这个应用程序做简单的任务,并在屏幕上显示文字 LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); if(locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) { string = "GPS=on\n"; } else { string = "GPS=off\n"; } if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) { string += "Network=on\n"; } else { string += "Network=off\n"; } String status = android.provider.Settings.Secure.getString(getContentResolver(), Secure.LOCATION_PROVIDERS_ALLOWED); if(status.contains("gps")) { string += "GPS=on\n"; […]

为什么不调用Android的onProviderEnabled()方法?

我的Android应用程序有两个位置侦听器,一个用于罚款,一个用于粗略收听。 我希望能够检测到用户何时closures位置服务。 每当我打开我的手机GPS或networking位置服务closuresonProviderDisabled方法按预期调用。 当我打开GPS或networking服务时,onProviderEnabled永远不会被调用! 我已经把下面的一个听众的代码…. 更新中… 我发现这个问题与注销onPause中的监听器有关。 当我删除代码“locationManager.removeUpdates(myFineLocationListener);” 调用onProviderEnabled()方法。 也许禁用(说)GPS的行为自动注销听众? 也许我应该取消注册听众在onDestroy而不是onPause()??? PS。 也许这是相关的,我提到我的活动有一个button,直接进入设备位置设置页面。 它作为一个捷径。 我使用这个快捷方式来禁用/启用位置服务,然后使用后退button返回到我的应用程序。 我将把这个button的代码放在这篇文章的最后。 码: (从onCreate();)调用createLocListeners()方法;) void createLocListeners() { //if null, create a new listener //myFineLocationListener is a class variable if (myFineLocationListener == null) { //Listen for FINE location updates myFineLocationListener = new LocationListener(){ @Override public void onLocationChanged(Location location) { //Do something } […]

通过networking请求位置更新的问题

我已经创build了一个服务,并抓取有关用户的位置数据,所以我可以显示我的用户附近的地方。 除了GPS外,我还希望通过networking跟踪此服务,原因有二:1)GPS可能未启用。 2)GPS需要相当多的时间来locking我的testing手机。 当我的服务执行以下行时: mNETEnabled = mLocationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER); 我得到以下错误: 11-24 14:00:41.693: ERROR/LocationManagerService(51): isProviderEnabled got exception: 11-24 14:00:41.693: ERROR/LocationManagerService(51): java.lang.IllegalArgumentException: provider=network 11-24 14:00:41.693: ERROR/LocationManagerService(51): at com.android.server.LocationManagerService._isProviderEnabledLocked(LocationManagerService.java:1385) 11-24 14:00:41.693: ERROR/LocationManagerService(51): at com.android.server.LocationManagerService.isProviderEnabled(LocationManagerService.java:1359) 为什么是这样? 我是否错过了Manifest的许可? 我的清单中有ACCESS_COARSE_LOCATION。

Android GPS位置的getAltitude()如何工作

您好 我试图实现一个简单的GPS跟踪器。 因此被使用 lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 0, this); 然后我用了 public void onLocationChanged(Location location) { 方法来读取我当前位置的高度。 但我真的不知道什么Location.getAltitude()返回。 文件说它返回高度。 但这是米吗? 或feets? 如果我把手机放在旁边的桌子上,这个值在500和-500之间变化? 这是如何工作的?

要使用Android位置pipe理器权限

我在我的android项目中有以下代码: locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); Criteria criteria = new Criteria(); bestProvider = locationManager.getBestProvider(criteria, false); Location currentLocation = locationManager.getLastKnownLocation(bestProvider); location = currentLocation.getLatitude() + " " + currentLocation.getLongitude(); MyLocation.setText(location); 我得到一个provider == null错误。 我需要使用什么权限? 我的Android清单文件是: <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.DuckTag" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".DuckTagActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" […]

每当我要求位置更新时,我应该使用android LocationManager.getBestProvider吗?

我正在使用Google API和MapActivity,MapView等。 当我需要得到我目前的位置时,我第一次使用这个代码: myLocationManager =(LocationManager)getSystemService(Context.LOCATION_SERVICE); // Sets the criteria for a fine and low power provider Criteria crit = new Criteria(); crit.setAccuracy(Criteria.ACCURACY_FINE); crit.setPowerRequirement(Criteria.POWER_LOW); // Gets the best matched provider, and only if it's on String provider = myLocationManager.getBestProvider(crit, true); // If there are no location providers available if (provider == null){ OnClickListener listener = new […]

onLocationChanged总是返回我旧的位置

我已经每隔10秒为位置更新注册一次LocationManager mgr.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 10 * 1000, 50, this); 但onLocationChangedcallback每10秒返回一个位置,该位置超过2个小时。 那个时间戳永远不会改变。 问题是: 2个小时后,我在一个完全不同的位置( 家 ),我在无线上使用的设备。 现在我正在其他位置( 办公室 )在不同的无线networking,我的应用程序显示我的当前位置为家 。 同样的事情发生在昨天在家里 ,当时显示办公室作为我现在的位置。 它开始工作(开始显示正确的位置),当我closures我的应用程序,打开FourSquare应用程序,并重新打开我的应用程序。 完整代码: public class LocationService extends Service implements LocationListener { public static double curLat = 0.0; public static double curLng = 0.0; private LocationManager mgr; private String best; private Location location; @Override public IBinder onBind(Intent arg0) […]

通话需要可能被用户拒绝的权限

我试图做一个应用程序,每五分钟后发送一个用户的位置更新。 我想我的代码工作得很好,但我得到了应用程序正在使用的权限错误。 我很确定,我已经在清单文件中添加了权限。 有人能告诉我什么是错的吗? 这是我的代码。 MainActivity.java LocationManager locationManager ; String provider; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Getting LocationManager object locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE); // Creating an empty criteria object Criteria criteria = new Criteria(); // Getting the name of the provider that meets the criteria provider = locationManager.getBestProvider(criteria, false); if(provider!=null && !provider.equals("")){ […]

Android LocationManager.isProviderEnabled()总是返回false

我有一个应用程序使用networking提供商的位置。 每次启动应用程序时,都会检查LocationManager中是否使用isProviderEnabled()方法启用networking提供程序。 如果返回false,我向用户提供一个警报,以启用networking提供程序,然后使用该应用程序。 这个逻辑运行得非常好,除了less数例外,非Googleauthentication的设备(不担心,因为他们通常没有Maps API)。 最近,在ICS上的一些设备上,现在在JellyBean模拟器上,即使启用了isProviderEnabled(),我也会得到一致的“false”。 我已经转向使用从Settings.Secure.getString(getContentResolver(),Settings.Secure.LOCATION_PROVIDERS_ALLOWED))返回的string来查看它是否包含“networking”。 这是一个黑客,但它现在正在工作。 我很想能够使用isProviderEnabled()方法。 有没有人看到过这个问题?