在我重新启动WiFi 移动网络之前,服务中的Android位置监听器无效

在我重新启动WiFi 移动网络之前,服务中的Android位置监听器无效,第1张

概述我的位置监听器正常工作,收集数据没有任何问题.但有时它不会收集任何数据.此时我必须关闭并重新启动我的位置提供程序.重新启动修复了问题,但是,这可能不是用户期望做的最好的事情.当我使用GPS作为提供者时,没有问题.位置监听器在服务中工作.我无法理解这个问题.它是关于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位置监听器无效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1113162.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-29
下一篇2022-05-29

发表评论

登录后才能评论

评论列表(0条)

    保存