大佬教程收集整理的这篇文章主要介绍了在我重新启动WiFi /移动网络之前,服务中的Android位置监听器无效,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我的位置监听器正常工作,收集数据没有任何问题.但有时它不会收集任何数据.此时我必须关闭并重新启动我的位置提供程序.重新启动修复了问题,但是,这可能不是用户期望做的最好的事情.
当我使用GPS作为提供者时,没有问题.
位置监听器在服务中工作.我无法理解这个问题.它是关于Android还是我的代码?
提前致谢.
解决方法:
您可以使用新的位置提供程序(FusedLOCATIOnProvider),它结合了来自不同位置提供程序的信息,因此,如果您的设备有可能获取位置,您将会知道它.当然,您应该在设备的偏好设置中启用应用的位置信息.
查看developers.android.com以获取有关此提供商的扩展信息.
这个解决方案对我来说很好:
public class FusedLOCATIOnListener implements GooglePlayservicesClient.ConnectionCallBACks, GooglePlayservicesClient.onConnectionFailedListener, com.google.android.gms.LOCATIOn.LOCATIOnListener {
public interface LOCATIOnListener {
public void onReceiveLOCATIOn(LOCATIOn LOCATIOn);
}
private LOCATIOnListener mListener;
public static final String TAG = "Fused";
private LOCATIOnClient LOCATIOnClient;
private LOCATIOnrequest LOCATIOnrequest;
protected int minDistanCEToupdate = 1000;
protected int minTimeToupdate = 10*1000;
protected Context mContext;
@Override
public void onConnected(Bundle bundlE) {
Log.d(tag, "Connected");
LOCATIOnrequest = new LOCATIOnrequest();
LOCATIOnrequest.setsmallestDisplacement(1);
LOCATIOnrequest.setPriority(LOCATIOnrequest.PRIORITY_HIGH_ACCURACY);
LOCATIOnrequest.seTinterval(30000);
LOCATIOnrequest.setNumupdates(1);
LOCATIOnClient.requestLOCATIOnupdates(LOCATIOnrequest, this);
}
@Override
public void onDisconnected() {
Log.d(tag, "Disconnected");
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
Log.d(tag, "Failed");
}
private static FusedLOCATIOnListener instance;
public static synchronized FusedLOCATIOnListener geTinstance(Context context, LOCATIOnListener listener){
if (null==instancE) {
instance = new FusedLOCATIOnListener(context, listener);
}
return instance;
}
private FusedLOCATIOnListener(Context context, LOCATIOnListener listener){
mContext = context;
mListener = listener;
}
public void start(){
Log.d(tag, "Listener started");
LOCATIOnClient = new LOCATIOnClient(mContext,this,this);
LOCATIOnClient.connect();
}
@Override
public void onLOCATIOnChanged(LOCATIOn LOCATIOn) {
Log.d(tag, "LOCATIOn received: " + LOCATIOn.getLatitude() + ";" + LOCATIOn.getLongitude());
//notify listener with new LOCATIOn
mlistener.onReceiveLOCATIOn(LOCATIOn);
}
public void stop() {
LOCATIOnClient.removeLOCATIOnupdates(this);
}
}
用法:
public class MyActivity extends Activity implements FusedLOCATIOnListener.LOCATIOnListener {
@Override
public void onCreate(Bundle savedInstanceStatE) {
FusedLOCATIOnListener LOCATIOnListener FusedLOCATIOnListener.geTinstance(getApplicationContext(), this);
LOCATIOnListener.start();
}
@Override
public void onReceiveLOCATIOn(LOCATIOn LOCATIOn) {
//handle LOCATIOn here
}
}
以上是大佬教程为你收集整理的在我重新启动WiFi /移动网络之前,服务中的Android位置监听器无效全部内容,希望文章能够帮你解决在我重新启动WiFi /移动网络之前,服务中的Android位置监听器无效所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。