在服务机器人定位监听器无法正常工作,直到我重新打开无线/移动网络 [英] Android Location listener in Service does not work until I reopen WiFi/mobile network

查看:157
本文介绍了在服务机器人定位监听器无法正常工作,直到我重新打开无线/移动网络的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的位置监听器正常工作,收集数据,没有任何问题。但是,有时它不会收集任何数据。我必须关闭并重新启动我的位置提供在这个时候。重新启动解决这个问题。但我不能说用户重新启动供应商。

My location listener works normally, collects data without any problem. But, sometimes it doesn't collect any data. I have to turn off and restart my location provider at this time. Restarting fix the problem. But I can't say user to restart the provider.

当我使用GPS作为提供者,是没有问题的。

When I use GPS as provider, there is no problem.

位置监听器工作在服务。我无法理解的问题。它是关于Android还是我?

Location listener works in Service. I can't understand the problem. Is it about Android or me?

在此先感谢。

推荐答案

您可以使用新的位置提供(FusedLocationProvider),它结合了信息从不同的位置,供应商,因此,如果您的设备有任何可能获得的位置,你会得到知道。当然,你应该能够在preferences为您的设备通过应用程序使用位置信息。

You could use new location provider (FusedLocationProvider), which combines info from different location providers, so if your device has any possibility to obtain location, You'll get know it. Of course, You should enable in preferences for your device to use location info by apps.

检查developers.android.com关于该供应商扩展的信息。

Check developers.android.com for extended info about this provider.

这是解决方案的工作对我罚款:

This is solution working fine for me:

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
    }

}

这篇关于在服务机器人定位监听器无法正常工作,直到我重新打开无线/移动网络的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆