如何检测位置提供者? 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 或网络提供商的主要内容,如果未能解决你的问题,请参考以下文章

如何同时使用 GPS 和网络提供商在 Android 中获取当前位置的纬度和经度值

如何获取当前 GPS 位置? (最后不知道)

如何查看 WIFI 或 GPS 提供的用户位置

在网络与 gps 提供商之间连接

gps 使用网络提供商和 gps 提供商?

在网络和 GPS 提供商之间切换