Android的查询 - 检测位置 [英] Android Query - detecting location
本文介绍了Android的查询 - 检测位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用的是Android查询来检测用户的位置。
I am using Android Query to detect user's location.
由于某些原因,当我试图找回我的经度和纬度,这说明我的previous位置是走了几百米,就好像是缓存。
For some reason, when I try to retrieve my latitude and longitude, it shows my previous location which is a couple hundred meters away, as if it was cached.
什么在这里可能是这个问题?
What could be the issue here?
public class LocationHelper {
private Context mContext;
private double latitude;
private double longitude;
public LocationHelper(Context mContext) {
this.mContext = mContext;
location_ajax();
}
public double getLatitude() {
return latitude;
}
public double getLongitude() {
return longitude;
}
private void location_ajax() {
// Get the location
LocationAjaxCallback cb = new LocationAjaxCallback();
cb.weakHandler(this, "locationCb");
cb.async(mContext);
}
public void locationCb(String url, Location loc, AjaxStatus status) {
if (loc != null) {
//Toast.makeText(mContext, loc.toString(), Toast.LENGTH_LONG).show();
this.latitude = loc.getLatitude();
this.longitude = loc.getLongitude();
} else {
Toast.makeText(mContext, mContext.getString(R.string.msg_could_not_retrieve_location), Toast.LENGTH_LONG).show();
}
}
}
logcat的:
Logcat:
03-19 23:03:17.146: W/AQuery(29954): reporting:java.lang.reflect.InvocationTargetException
03-19 23:03:17.146: W/AQuery(29954): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 23:03:17.146: W/AQuery(29954): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 23:03:17.146: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeMethod(AQUtility.java:206)
03-19 23:03:17.146: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeHandler(AQUtility.java:183)
03-19 23:03:17.146: W/AQuery(29954): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:577)
03-19 23:03:17.146: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.failure(LocationAjaxCallback.java:192)
03-19 23:03:17.146: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.access$3(LocationAjaxCallback.java:183)
03-19 23:03:17.146: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback$Listener.run(LocationAjaxCallback.java:308)
03-19 23:03:17.146: W/AQuery(29954): at java.util.Timer$TimerImpl.run(Timer.java:284)
03-19 23:03:17.146: W/AQuery(29954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-19 23:03:17.146: W/AQuery(29954): at android.os.Handler.<init>(Handler.java:121)
03-19 23:03:17.146: W/AQuery(29954): at android.widget.Toast$TN.<init>(Toast.java:361)
03-19 23:03:17.146: W/AQuery(29954): at android.widget.Toast.<init>(Toast.java:97)
03-19 23:03:17.146: W/AQuery(29954): at android.widget.Toast.makeText(Toast.java:254)
03-19 23:03:17.146: W/AQuery(29954): at uk.ac.gla.project.helpers.LocationHelper.locationCb(LocationHelper.java:46)
03-19 23:03:17.146: W/AQuery(29954): ... 9 more
03-19 23:03:20.001: W/AQuery(29954): reporting:java.lang.reflect.InvocationTargetException
03-19 23:03:20.001: W/AQuery(29954): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 23:03:20.001: W/AQuery(29954): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 23:03:20.001: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeMethod(AQUtility.java:206)
03-19 23:03:20.001: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeHandler(AQUtility.java:183)
03-19 23:03:20.001: W/AQuery(29954): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:577)
03-19 23:03:20.001: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.failure(LocationAjaxCallback.java:192)
03-19 23:03:20.001: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.access$3(LocationAjaxCallback.java:183)
03-19 23:03:20.001: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback$Listener.run(LocationAjaxCallback.java:308)
03-19 23:03:20.001: W/AQuery(29954): at java.util.Timer$TimerImpl.run(Timer.java:284)
03-19 23:03:20.001: W/AQuery(29954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-19 23:03:20.001: W/AQuery(29954): at android.os.Handler.<init>(Handler.java:121)
03-19 23:03:20.001: W/AQuery(29954): at android.widget.Toast$TN.<init>(Toast.java:361)
03-19 23:03:20.001: W/AQuery(29954): at android.widget.Toast.<init>(Toast.java:97)
03-19 23:03:20.001: W/AQuery(29954): at android.widget.Toast.makeText(Toast.java:254)
03-19 23:03:20.001: W/AQuery(29954): at uk.ac.gla.project.helpers.LocationHelper.locationCb(LocationHelper.java:46)
03-19 23:03:20.001: W/AQuery(29954): ... 9 more
03-19 23:03:20.671: W/AQuery(29954): reporting:java.lang.reflect.InvocationTargetException
03-19 23:03:20.671: W/AQuery(29954): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 23:03:20.671: W/AQuery(29954): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 23:03:20.671: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeMethod(AQUtility.java:206)
03-19 23:03:20.671: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeHandler(AQUtility.java:183)
03-19 23:03:20.671: W/AQuery(29954): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:577)
03-19 23:03:20.671: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.failure(LocationAjaxCallback.java:192)
03-19 23:03:20.671: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.access$3(LocationAjaxCallback.java:183)
03-19 23:03:20.671: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback$Listener.run(LocationAjaxCallback.java:308)
03-19 23:03:20.671: W/AQuery(29954): at java.util.Timer$TimerImpl.run(Timer.java:284)
03-19 23:03:20.671: W/AQuery(29954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-19 23:03:20.671: W/AQuery(29954): at android.os.Handler.<init>(Handler.java:121)
03-19 23:03:20.671: W/AQuery(29954): at android.widget.Toast$TN.<init>(Toast.java:361)
03-19 23:03:20.671: W/AQuery(29954): at android.widget.Toast.<init>(Toast.java:97)
03-19 23:03:20.671: W/AQuery(29954): at android.widget.Toast.makeText(Toast.java:254)
03-19 23:03:20.671: W/AQuery(29954): at uk.ac.gla.project.helpers.LocationHelper.locationCb(LocationHelper.java:46)
03-19 23:03:20.671: W/AQuery(29954): ... 9 more
03-19 23:03:20.906: W/AQuery(29954): reporting:java.lang.reflect.InvocationTargetException
03-19 23:03:20.906: W/AQuery(29954): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 23:03:20.906: W/AQuery(29954): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 23:03:20.906: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeMethod(AQUtility.java:206)
03-19 23:03:20.906: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeHandler(AQUtility.java:183)
03-19 23:03:20.906: W/AQuery(29954): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:577)
03-19 23:03:20.906: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.failure(LocationAjaxCallback.java:192)
03-19 23:03:20.906: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.access$3(LocationAjaxCallback.java:183)
03-19 23:03:20.906: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback$Listener.run(LocationAjaxCallback.java:308)
03-19 23:03:20.906: W/AQuery(29954): at java.util.Timer$TimerImpl.run(Timer.java:284)
03-19 23:03:20.906: W/AQuery(29954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-19 23:03:20.906: W/AQuery(29954): at android.os.Handler.<init>(Handler.java:121)
03-19 23:03:20.906: W/AQuery(29954): at android.widget.Toast$TN.<init>(Toast.java:361)
03-19 23:03:20.906: W/AQuery(29954): at android.widget.Toast.<init>(Toast.java:97)
03-19 23:03:20.906: W/AQuery(29954): at android.widget.Toast.makeText(Toast.java:254)
03-19 23:03:20.906: W/AQuery(29954): at uk.ac.gla.project.helpers.LocationHelper.locationCb(LocationHelper.java:46)
03-19 23:03:20.906: W/AQuery(29954): ... 9 more
03-19 23:03:21.061: W/AQuery(29954): reporting:java.lang.reflect.InvocationTargetException
03-19 23:03:21.061: W/AQuery(29954): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 23:03:21.061: W/AQuery(29954): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 23:03:21.061: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeMethod(AQUtility.java:206)
03-19 23:03:21.061: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeHandler(AQUtility.java:183)
03-19 23:03:21.061: W/AQuery(29954): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:577)
03-19 23:03:21.061: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.failure(LocationAjaxCallback.java:192)
03-19 23:03:21.061: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.access$3(LocationAjaxCallback.java:183)
03-19 23:03:21.061: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback$Listener.run(LocationAjaxCallback.java:308)
03-19 23:03:21.061: W/AQuery(29954): at java.util.Timer$TimerImpl.run(Timer.java:284)
03-19 23:03:21.061: W/AQuery(29954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-19 23:03:21.061: W/AQuery(29954): at android.os.Handler.<init>(Handler.java:121)
03-19 23:03:21.061: W/AQuery(29954): at android.widget.Toast$TN.<init>(Toast.java:361)
03-19 23:03:21.061: W/AQuery(29954): at android.widget.Toast.<init>(Toast.java:97)
03-19 23:03:21.061: W/AQuery(29954): at android.widget.Toast.makeText(Toast.java:254)
03-19 23:03:21.061: W/AQuery(29954): at uk.ac.gla.project.helpers.LocationHelper.locationCb(LocationHelper.java:46)
03-19 23:03:21.061: W/AQuery(29954): ... 9 more
03-19 23:03:21.486: W/AQuery(29954): reporting:java.lang.reflect.InvocationTargetException
03-19 23:03:21.486: W/AQuery(29954): at java.lang.reflect.Method.invokeNative(Native Method)
03-19 23:03:21.486: W/AQuery(29954): at java.lang.reflect.Method.invoke(Method.java:511)
03-19 23:03:21.486: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeMethod(AQUtility.java:206)
03-19 23:03:21.486: W/AQuery(29954): at com.androidquery.util.AQUtility.invokeHandler(AQUtility.java:183)
03-19 23:03:21.486: W/AQuery(29954): at com.androidquery.callback.AbstractAjaxCallback.callback(AbstractAjaxCallback.java:577)
03-19 23:03:21.486: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.failure(LocationAjaxCallback.java:192)
03-19 23:03:21.486: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback.access$3(LocationAjaxCallback.java:183)
03-19 23:03:21.486: W/AQuery(29954): at com.androidquery.callback.LocationAjaxCallback$Listener.run(LocationAjaxCallback.java:308)
03-19 23:03:21.486: W/AQuery(29954): at java.util.Timer$TimerImpl.run(Timer.java:284)
03-19 23:03:21.486: W/AQuery(29954): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
03-19 23:03:21.486: W/AQuery(29954): at android.os.Handler.<init>(Handler.java:121)
03-19 23:03:21.486: W/AQuery(29954): at android.widget.Toast$TN.<init>(Toast.java:361)
03-19 23:03:21.486: W/AQuery(29954): at android.widget.Toast.<init>(Toast.java:97)
03-19 23:03:21.486: W/AQuery(29954): at android.widget.Toast.makeText(Toast.java:254)
03-19 23:03:21.486: W/AQuery(29954): at uk.ac.gla.project.helpers.LocationHelper.locationCb(LocationHelper.java:46)
有没有可靠的替代品?
Are there any reliable alternatives?
推荐答案
为什么这么复杂?使用谷歌播放服务。它们是免费的,并使用复杂的位选择战略
Why so complicated ? Use Google Play Services. They are for free and uses complex Location Strategies
这篇关于Android的查询 - 检测位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文