package com.test;import android.app.Activity;import android.content.Context;import android.content.Intent;import android.location.Address;import android.location.Criteria;import android.location.Geocoder;import android.location.Location;import android.location.LocationManager;import android.os.Bundle;import android.provider.Settings;import android.widget.TextView;import android.widget.Toast;import java.io.IOException;import java.util.List;public class Test2 extends Activity { protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.main); openGPSSettings(); } private void openGPSSettings() { LocationManager alm = (LocationManager) this .getSystemService(Context.LOCATION_SERVICE); if (alm .isProviderEnabled(android.location.LocationManager.GPS_PROVIDER)) { Toast.makeText(this, "GPS模块正常", Toast.LENGTH_SHORT) .show(); doWork(); return; } Toast.makeText(this, "请开启GPS!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); startActivityForResult(intent,0); //此为设置完成后返回到获取界面 } private void doWork() { String msg = ""; TextView textView = (TextView) findViewById(R.id.tv1); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria criteria = new Criteria(); // 获得最好的定位效果 criteria.setAccuracy(Criteria.ACCURACY_FINE); criteria.setAltitudeRequired(false); criteria.setBearingRequired(false); criteria.setCostAllowed(false); // 使用省电模式 criteria.setPowerRequirement(Criteria.POWER_LOW); // 获得当前的位置提供者 String provider = locationManager.getBestProvider(criteria, true); // 获得当前的位置 Location location = locationManager.getLastKnownLocation(provider); Geocoder gc = new Geocoder(this); List<Address> addresses = null; try { addresses = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } if (addresses.size() > 0) { msg += "AddressLine:" + addresses.get(0).getAddressLine(0)+ "\n"; msg += "CountryName:" + addresses.get(0).getCountryName()+ "\n"; msg += "Locality:" + addresses.get(0).getLocality() + "\n"; msg += "FeatureName:" + addresses.get(0).getFeatureName(); } textView.setText(msg); }}
?
Manifest 权限:
?
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FIND_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>?
1 楼 liang86liang 2011-08-23
Criteria criteria = new Criteria();
// 获得最好的定位效果
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
// 使用省电模式
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 获得当前的位置提供者
String provider = locationManager.getBestProvider(criteria, true);
为什么我的provider为null呢????????????
// 获得最好的定位效果
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
// 使用省电模式
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 获得当前的位置提供者
String provider = locationManager.getBestProvider(criteria, true);
为什么我的provider为null呢????????????
2 楼 jmshx8 2011-09-13
这种方法在2.2以上的版本就显示不出地址了
3 楼 AndMacLinuXp 2011-12-04
liang86liang 写道
Criteria criteria = new Criteria();
// 获得最好的定位效果
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
// 使用省电模式
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 获得当前的位置提供者
String provider = locationManager.getBestProvider(criteria, true);
为什么我的provider为null呢????????????
// 获得最好的定位效果
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(false);
// 使用省电模式
criteria.setPowerRequirement(Criteria.POWER_LOW);
// 获得当前的位置提供者
String provider = locationManager.getBestProvider(criteria, true);
为什么我的provider为null呢????????????
有的手机 criteria.setAccuracy(Criteria.ACCURACY_FINE);对于这个设置是不行的,比如nexus s。你试试 criteria.setAccuracy(Criteria.ACCURACY_COARSE);
4 楼 wangjunjunwangjunjun 2012-03-16
写出的代码不能运行,为什么啊?
5 楼 sarah_susan 2012-04-23
我想说的是: 真机测试的时候,addresses = gc.getFromLocation(location.getLatitude(), location.getLongitude(), 1); 这句话执行的结果为null。真心头疼,不知道怎么办,求解。