Android使用GPS定位
1. 代码
package android.test; import java.io.IOException; import java.util.List; import java.util.Locale; import android.app.Activity; import android.content.Context; import android.location.Address; import android.location.Criteria; import android.location.Geocoder; import android.location.Location; import android.location.LocationListener; import android.location.LocationManager; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import android.widget.Toast; import com.google.android.maps.GeoPoint; public class Main extends Activity { private TextView m_textview1; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); m_textview1 = (TextView) findViewById(R.id.myTextview1); LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); Criteria c = new Criteria(); c.setAccuracy(Criteria.ACCURACY_COARSE); c.setAltitudeRequired(true); c.setBearingRequired(true); c.setCostAllowed(true); c.setPowerRequirement(Criteria.POWER_MEDIUM); String strLocation = locationManager.getBestProvider(c, false); locationManager.requestLocationUpdates(strLocation, 1000, 0, locationListener); } private final LocationListener locationListener = new LocationListener() { public void onLocationChanged(Location location) { // 当坐标改变时触发此函数,如果Provider传进相同的坐标,它就不会被触发 // log it when the location changes if (location != null) { Log.i("SuperMap", "Location changed : Lat: " + location.getLatitude() + " Lng: " + location.getLongitude()); // m_curGeoPoint = GetGeoByLocation(location); // m_textview1.setText(GetAddressByGeoPoint(m_curGeoPoint)); // Toast.makeText(Main.this, // GetAddressByGeoPoint(m_curGeoPoint), 100); String str = "SuperMap, Location changed : Lat: " + location.getLatitude() + " Lng: " + location.getLongitude(); m_textview1.setText(str); } } public void onProviderDisabled(String provider) { // Provider被disable时触发此函数,比如GPS被关闭 } public void onProviderEnabled(String provider) { // Provider被enable时触发此函数,比如GPS被打开 } public void onStatusChanged(String provider, int status, Bundle extras) { // Provider的转态在可用、暂时不可用和无服务三个状态直接切换时触发此函数 } }; private String GetAddressByGeoPoint(GeoPoint point) { String str = ""; try { if (point != null) { Geocoder coder = new Geocoder(Main.this, Locale.getDefault()); double dGeoLatitude = (int) point.getLatitudeE6() / 1E6; double dGeoLongitude = (int) point.getLongitudeE6() / 1E6; List<Address> addresses = coder.getFromLocation(dGeoLatitude, dGeoLongitude, 1); StringBuilder sb = new StringBuilder(); if (addresses.size() > 0) { Address addr = addresses.get(0); for (int i = 0; i < addresses.size(); ++i) { sb.append(addr.getAddressLine(i)).append("/n"); } sb.append(addr.getLocality()).append("/n"); sb.append(addr.getPostalCode()).append("/n"); sb.append(addr.getCountryName()).append("/n"); str = sb.toString(); } } } catch (IOException e) { e.printStackTrace(); } return str; } private GeoPoint GetGeoByLocation(Location location) { GeoPoint point = null; if (location != null) { double dGeoLatitude = location.getLatitude() * 1E6; double dGeoLongitude = location.getLongitude() * 1E6; point = new GeoPoint((int) dGeoLatitude, (int) dGeoLongitude); } return point; } }
2. AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android.test" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="7" /> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".Main" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> <uses-sdk android:minSdkVersion="7"/> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> </manifest>
更多相关文章
- Android之Camera预览
- Android(安卓)Kotlin继承
- android中的状态保存
- android录像预览功能
- Android(安卓)View的构造方法
- android 多媒体框架
- Android(安卓)onTouchEvent, onClick及onLongClick的调用机制
- android GPS定位和卫星个数
- 箭头函数的基础使用