使用Android提供的模拟任意地理位置,报java.lang.IllegalArgumentException: Incomplete location object异常的解决方法
来源:互联网 发布:magento2 速度优化 编辑:程序博客网 时间:2024/05/17 22:46
使用Android提供的模拟任意地理位置的接口,执行如下方法时,会报异常:
Location localLocation = getLoc(LocationManager.GPS_PROVIDER); mLocationManager.setTestProviderLocation(LocationManager.GPS_PROVIDER, localLocation);
12-10 14:54:24.497: W/System.err(27548): java.lang.IllegalArgumentException: Incomplete location object, missing timestamp or accuracy? Location[gps 22.546054,114.025974 acc=0 et=?!? alt=0.0 vel=0.0 bear=0.0]12-10 14:54:24.497: W/System.err(27548): at android.location.LocationManager.setTestProviderLocation(LocationManager.java:1218)12-10 14:54:24.497: W/System.err(27548): at com.zhao3546.MockLocationServicePro$1.run(MockLocationServicePro.java:55)12-10 14:54:24.497: W/System.err(27548): at android.os.Handler.handleCallback(Handler.java:725)12-10 14:54:24.497: W/System.err(27548): at android.os.Handler.dispatchMessage(Handler.java:92)12-10 14:54:24.497: W/System.err(27548): at android.os.Looper.loop(Looper.java:137)12-10 14:54:24.497: W/System.err(27548): at android.app.ActivityThread.main(ActivityThread.java:5106)12-10 14:54:24.497: W/System.err(27548): at java.lang.reflect.Method.invokeNative(Native Method)12-10 14:54:24.497: W/System.err(27548): at java.lang.reflect.Method.invoke(Method.java:511)12-10 14:54:24.497: W/System.err(27548): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:898)12-10 14:54:24.500: W/System.err(27548): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665)12-10 14:54:24.500: W/System.err(27548): at dalvik.system.NativeStart.main(Native Method)
这个问题可以通过两个方法解决。
方法一:
主要是这句,location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
@SuppressLint("NewApi") private Location getLoc(String provider) { Location location = new Location(provider); location.setLatitude(lat); location.setLongitude(lng); location.setAltitude(altitude); location.setBearing(bearing); location.setSpeed(speed); location.setAccuracy(accuracy); location.setTime(System.currentTimeMillis()); location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos()); return location; }
方法二,加上下面的反射调用:
try { Method method = Location.class.getMethod("makeComplete"); if (method != null) { method.invoke(localLocation); } } catch (NoSuchMethodException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); }
第二个方法调用的 makeComplete() 方法在Android源码中的实现如下,其实和第一个方法异曲同工,还是第一个方法更优。
/** * Helper to fill incomplete fields. * * <p>Used to assist in backwards compatibility with * Location objects received from applications. * * @see #isComplete * @hide */ public void makeComplete() { if (mProvider == null) mProvider = "?"; if (!mHasAccuracy) { mHasAccuracy = true; mAccuracy = 100.0f; } if (mTime == 0) mTime = System.currentTimeMillis(); if (mElapsedRealtimeNanos == 0) mElapsedRealtimeNanos = SystemClock.elapsedRealtimeNanos(); }
0 0
- 使用Android提供的模拟任意地理位置,报java.lang.IllegalArgumentException: Incomplete location object异常的解决方法
- 使用Android提供的模拟任意地理位置,报java.lang.IllegalArgumentException: Incomplete location object异常的解决方法
- Android模拟位置出错IllegalArgumentException: Incomplete location object, missing timestamp or accuracy?
- 解决spring的java.lang.IllegalArgumentException异常。
- 解决spring的java.lang.IllegalArgumentException异常。
- 解决Spring的java.lang.IllegalArgumentException异常
- Android 执行 gson.toJson(object) 报java.lang.StackOverflowError异常
- Collections.sort 排序出现的java.lang.IllegalArgumentException的异常
- 异常:java.lang.IllegalArgumentException
- Json转换报错java.lang.IllegalArgumentException的解决方案!
- Android 中 java.lang.IllegalArgumentException: pointerIndex out of range 异常的处理方法
- Android 中 java.lang.IllegalArgumentException: pointerIndex out of range 异常的处理方法
- Tomcat的异常 之 java.lang.IllegalArgumentException: Document base
- JAXB 的xjc任务时出现java.lang.IllegalArgumentException异常
- Tomcat的异常 之 java.lang.IllegalArgumentException: Document base
- java.lang.IllegalArgumentException: Wrong FS ...异常的解决
- hibernate中java.lang.IllegalArgumentException异常可能的原因
- Tomcat的异常 之 java.lang.IllegalArgumentException: Document base
- iOS7下變更狀態欄文字顏色
- jquery 触发click等事件
- 异常机制
- C# 杀进程的方法
- javascript--表单验证
- 使用Android提供的模拟任意地理位置,报java.lang.IllegalArgumentException: Incomplete location object异常的解决方法
- JQuery对数组的一些操作总结
- 一次分布式计算实践(项目完成上线成功,但事实上已经与分布式计算无关了)
- 数字示波器的用法
- 以列表形式展示当月截止今天所有日期
- 为所有指定用户重置密码
- 在两个ViewController之间通信的方式(转帖整理)
- 网站数据分析要分析哪些数据
- h.264标准