1.获取权限
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <uses-permission android:name="android.permission.LOCATION_HARDWARE"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <uses-permission android:name="android.permission.INTERNET"/>
2.主函数
- public class MainActivity extends AppCompatActivity {
- private LocationManager syst;
- private TextView tv;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_main);
- syst = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
- tv = (TextView) findViewById(R.id.tv);
- if (!syst.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
- Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
- startActivityForResult(intent, 1);
- return;
- }
- // String best = syst.getBestProvider(getcriteria(), true);
- syst.addGpsStatusListener(gps);
- // syst.requestLocationUpdates(LocationManager.GPS_PROVIDER, 1000, 1, lo);
- syst.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, lo);
- }
- // 位置监听
- LocationListener lo = new LocationListener() {
- /**
- * 位置信息变化时触发
- */
- @Override
- public void onLocationChanged(Location location) {
- up(location);
- // Log.d("aa", "时间:" + location.getTime());
- // Log.d("aa", "经度:" + location.getLongitude());
- // Log.d("aa", "纬度:" + location.getLatitude());
- // Log.d("aa", "海拔:" + location.getAltitude());
- }
- /**
- * GPS状态变化时触发
- */
- @Override
- public void onStatusChanged(String s, int i, Bundle bundle) {
- }
- /**
- * 位置信息变化时触发
- */
- @Override
- public void onProviderEnabled(String s) {
- }
- /**
- * GPS禁用时触发
- */
- @Override
- public void onProviderDisabled(String s) {
- }
- };
- // 状态监听
- GpsStatus.Listener gps=new GpsStatus.Listener() {
- @Override
- public void onGpsStatusChanged(int i) {
- // switch (i) {
- // case GpsStatus.GPS_EVENT_FIRST_FIX:
- // Log.d("aa", "第一次定位");
- // break;
- // case GpsStatus.GPS_EVENT_SATELLITE_STATUS:
- // Log.d("aa", "卫星状态改变");
- // // 获取当前状态
- // GpsStatus gpsStatus = syst.getGpsStatus(null);
- // // 获取卫星颗数的默认最大值
- // int maxSatellites = gpsStatus.getMaxSatellites();
- // // 创建一个迭代器保存所有卫星
- // Iterator<GpsSatellite> iters = gpsStatus.getSatellites()
- // .iterator();
- // int count = 0;
- // while (iters.hasNext() && count <= maxSatellites) {
- // GpsSatellite s = iters.next();
- // count++;
- // }
- // System.out.println("搜索到:" + count + "颗卫星");
- // break;
- //
- // case GpsStatus.GPS_EVENT_STARTED:
- // Log.d("aa", "定位启动");
- // break;
- // case GpsStatus.GPS_EVENT_STOPPED:
- // Log.d("aa", "定位停止");
- // break;
- // }
- }
- };
- // public Criteria getcriteria(){
- // Criteria criteria = new Criteria();
- // criteria.setAccuracy(Criteria.ACCURACY_FINE);
- // return criteria;
- // }
- public void up(Location lo){
- tv.setText(String.valueOf(lo.getLongitude()));
- // tv.setText(String.valueOf(lo.getLatitude()));
- }
- }
3.主布局
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main"
- android:layout_width="match_parent" android:layout_height="match_parent"
- tools:context="com.example.myapplication.MainActivity"
- android:orientation="vertical">
- <TextView
- android:id="@+id/tv"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="Hello World!" />
- </LinearLayout>