如何检测位置提供者? GPS 或网络提供商

Posted

技术标签:

【中文标题】如何检测位置提供者? GPS 或网络提供商【英文标题】:How to detect Location Provider ? GPS or Network Provider 【发布时间】:2013-12-19 11:33:19 【问题描述】:

我在我的应用中使用Fused Location Provider 进行位置更新。根据 Fused Location Provided 文档,它使用所有可用资源(例如 Wifi、GPS、手机信号塔等)来优化位置。

但我想知道,有没有办法在位置更新接收器中检测到当前位置更新来自 GPS 提供商或网络提供商?

【问题讨论】:

您所阅读的关于融合位置提供者的内容,请您提供任何文档 我已经阅读了这些链接:thenextweb.com/google/2013/05/16/… 和 kpbird.com/2013/06/fused-location-provider-example.html @ManetiVinay 不客气...:) 【参考方案1】:

您可以通过location.getProvider()从您获取的位置查看位置提供者。

无论您使用的是融合位置 API 还是以前的 API,您都将从 locationManager.getLastKnownLocationLocationServices.FusedLocationApi.getLastLocation 获取位置,并且从位置您可以通过 location.getProvider 获取提供者

【讨论】:

能否详细说明? 查看您使用的是融合位置 api 还是以前的位置,您将从 locationManager.getLastKnownLocation 或 LocationServices.FusedLocationApi.getLastLocation 定位,从位置您可以通过 location.getProvider 获取提供者【参考方案2】:

就在 Google 发布用于位置侦听器的新的简单 api 的几个月前。

几行代码就很简单了。

让我解释一下

第1步:使用SDK管理器下载Google play服务库。因为位置服务连接到Google play。

第 2 步:将库导入您的工作空间

第 3 步:将库添加到您的项目中

第四步:编写如下代码。

public class MainActivity extends Activity 

    LocationClient mlocationclient;

    Location location;

    LocationRequest mlocationrequest;

    int trasition_type=Geofence.GEOFENCE_TRANSITION_ENTER;

    LocationListener mlistener;

    PendingIntent lviolation;
    @Override
    protected void onCreate(Bundle savedInstanceState) 
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        int isGooglePlayServiceAvilable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
        if (isGooglePlayServiceAvilable == ConnectionResult.SUCCESS) 
        //Create the location client
        mlocationclient=new LocationClient(getApplicationContext(),  new CallBack(), new ConnectError());

        mlocationclient.connect();



        //create the location request objetcs..
        mlocationrequest=LocationRequest.create().setInterval(1000).setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);




        //Crearte the location listener when we want to get location.
        mlistener=new LocationListener() 

            @Override
            public void onLocationChanged(Location location) 
                // TODO Auto-generated method stub


                Log.i("Mine Location", ""+location);

            
        ;

        public class ConnectError implements GooglePlayServicesClient.OnConnectionFailedListener
        


            @Override
            public void onConnectionFailed(ConnectionResult result) 
                // TODO Auto-generated method stub

            

        

        public class CallBack implements GooglePlayServicesClient.ConnectionCallbacks
        



            @Override
            public void onConnected(Bundle connectionHint) 
                // TODO Auto-generated method stub

                location=mlocationclient.getLastLocation();

                mlocationclient.requestLocationUpdates(mlocationrequest, mlistener);

                //new GetAddress(getApplicationContext()).execute(location);



            


        

第 5 步:将此代码放入 android 清单文件中

 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>` 


 <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

【讨论】:

我正在使用这个库,它是我正在谈论的 Fused Location 库。 如果您在开发者站点中记录的 Fused Location Provider 上工作,我在上面讨论的内容相同。它的 Google play jar 文件会带到我们的应用程序中。因为位置服务通过 Google play API 获取。

以上是关于如何检测位置提供者? GPS 或网络提供商的主要内容,如果未能解决你的问题,请参考以下文章