通过android提供的gps功能可以方便的得到位置信息。由于本文是再模拟器中使用的gps所以要通过ddms发送gps位置信息。
main.xml文件只有一个textview节点就不在给出了。还有就是操作gps需要得到如下权限
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
具体的操作代码如下:
MainActivity.java
package com.example.locationmanager;import android.app.Activity;import android.content.Context;import android.location.Location;import android.location.LocationListener;import android.location.LocationManager;import android.os.Bundle;import android.view.Menu;import android.widget.TextView;public class MainActivity extends Activity { private TextView tv_show; //定位管理器 private LocationManager lm; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv_show = (TextView) this.findViewById(R.id.tv_show); //获得系统提供的定位管理器 lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); //从gps获得最近的定位信息 Location location = lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); //使用location显示信息 updateView(location); //设置监听器 lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 8, new LocationListener() { @Override public void onStatusChanged(String provider, int status, Bundle extras) { } @Override public void onProviderEnabled(String provider) { //当gps可用时,更新位置 updateView(lm.getLastKnownLocation(provider)); } @Override public void onProviderDisabled(String provider) { updateView(null); } @Override public void onLocationChanged(Location location) { //当gps定位信息发生改变时,更新位置' updateView(location); } }); } private void updateView(Location location) { if(location != null){ StringBuffer sb = new StringBuffer(); sb.append("实施位置信息:\n"); sb.append("精度:"); sb.append(location.getLongitude()); sb.append("\n维度:"); sb.append(location.getLatitude()); sb.append("\n高度:"); sb.append(location.getAltitude()); sb.append("\n速度:"); sb.append(location.getSpeed()); sb.append("\n方向:"); sb.append(location.getBearing()); tv_show.setText(sb.toString()); }else { tv_show.setText(""); } }}- 1楼yangheng3294天前 10:28
- 给力啊。强