Android   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了在我重新启动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,请注明来意。
标签: