说明:通过手机GPS掉的定位功能,我们可以查询所有的位置provider。并且获得最后查到的一个位置provider。有gps passive 还有network。但是目前只有GPSprovider能正常使用。
1、在androidMenifest的配置文件中的<manifest>节点下 添加 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>权限。
2、编写代码如下:
public class LoactionActivity extends Activity {
TextView tvLocation;
Button btnLocation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_loaction);
tvLocation= (TextView)findViewById(R.id.tv_location);
btnLocation=(Button)findViewById(R.id.btn_bind_service);
btnLocation.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//绑定家庭器
LocationManager locationManager =(LocationManager)LoactionActivity.this.getSystemService(Context.LOCATION_SERVICE);
//定义当前使用的LocationProvider
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, new TestLocationListener());
System.out.println("绑定成功");
List<String> lp = locationManager.getAllProviders();
for (String item:lp)
{
Log.i("8023", "可用位置服务:"+item);
}
Criteria criteria = new Criteria();
// criteria.setCostAllowed(false);
//设置位置服务免费
// criteria.setAccuracy(Criteria.ACCURACY_COARSE); //设置水平位置精度
//getBestProvider 只有允许访问调用活动的位置供应商将被返回
String providerName = locationManager.getBestProvider(criteria, false);
Log.i("8023", "------位置服务:"+providerName);
if (providerName != null)
{
//providerName="gps";
Location location = locationManager.getLastKnownLocation(providerName);
Log.i("8023", "-------"+location);
//获取维度信息
double latitude = location.getLatitude();
//获取经度信息
double longitude = location.getLongitude();
tvLocation.setText("定位方式: "+providerName+" 维度:"+latitude+" 经度:"+longitude);
}
else
{
}
}
});
}
class TestLocationListener implements LocationListener
{
@Override
public void onLocationChanged(Location location) {
Double Longitude= location.getLongitude();
Double Latitude= location.getLatitude();
tvLocation.setText("精度:"+Longitude.toString() +" 维度:"+Latitude.toString());
System.out.println("精度:"+Longitude.toString() +" 维度:"+Latitude.toString());
}
@Override
public void onProviderDisabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
}