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