小弟最近研究接受GPS信号,需要手动得到GPS数据,在网上看见很多代码,我做了如下修改,但是数据无法更新。使用模拟器发送GPS数据,debug看到每次按键获得的都是最开始的老数据,没有更新,请达人们指教。。。。
- Java code
public class LocationTest extends Activity{ LocationManager locManager; EditText show; private Button mButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); show = (EditText) findViewById(R.id.show); // 从GPS获取最近的最近的定位信息 Location location = locManager.getLastKnownLocation( LocationManager.GPS_PROVIDER); // 使用location根据EditText的显示,自定义函数 updateView(location); mButton=(Button) findViewById(R.id.button1); //做了个按键,手动收数据 mButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { //不是说这句话是接受最新数据吗?? Location location = locManager.getLastKnownLocation( LocationManager.GPS_PROVIDER); updateView(location); } }); //下面是原有循环接受的代码,模拟器下测试可用 // 设置每3秒获取一次GPS的定位信息,移动8m一会运行 /*locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER , 3000, 8, new LocationListener() { @Override public void onLocationChanged(Location location) { // 当GPS定位信息发生改变时,更新位置 updateView(location); } @Override public void onProviderDisabled(String provider) {// GPS关闭,清空信息 updateView(null); } @Override public void onProviderEnabled(String provider) { // 当GPS LocationProvider可用时,更新位置 updateView(locManager .getLastKnownLocation(provider)); } @Override public void onStatusChanged(String provider, int status, Bundle extras) { } }); */ } // 更新EditText中显示的内容 public void updateView(Location newLocation) { if (newLocation != null) { StringBuilder sb = new StringBuilder(); sb.append("实时的位置信息:\n"); sb.append("经度:"); sb.append(newLocation.getLongitude()); sb.append("\n纬度:"); sb.append(newLocation.getLatitude()); } }}
------解决方案--------------------
不可能,你只能利用事件驱动得到最新的GPS数据。