
我的位置监听器正常工作,收集数据没有任何问题.但有时它不会收集任何数据.此时我必须关闭并重新启动我的位置提供程序.重新启动修复了问题,但是,这可能不是用户期望做的最好的事情.
当我使用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位置监听器无效所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)