博主之前设计电动自行车,因为测速电路不好设计,因此采用蓝牙连接主控,手机GPS测速并且授速于硬件CPU。
##GPS测速程序如下 #FF0011
GPSmessage = (TextView) this.findViewById(R.id.textView4);//实例化控件用于显示
String serviceName = this.LOCATION_SERVICE;
//获得位置服务的管理对象
LocationManager locationManager = (LocationManager)getSystemService(serviceName);
// 通过GPS获取定位的位置数据
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);// 高精度
criteria.setAltitudeRequired(false);// 设置不需要获取海拔方向数据
criteria.setBearingRequired(false);// 设置不需要获取方位数据
criteria.setCostAllowed(true);// 设置允许产生资费
criteria.setPowerRequirement(Criteria.POWER_HIGH);// 低功耗
location = locationManager.getLastKnownLocation(locationManager.GPS_PROVIDER);
updateToNewLocation(location);
locationManager.requestLocationUpdates(locationManager.GPS_PROVIDER, 500, 1, new LocationListener() {//监听参数500ms更新一次或者1米更新一次
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
public void onLocationChanged(Location location) {
updateToNewLocation(location);//进入更新程序
}
});
更新程序
private void updateToNewLocation(Location location) {
if (location != null) {
double latitude = location.getLatitude();//维度
double longitude= location.getLongitude();//经度
float speed=location.getSpeed();//取得速度
DecimalFormat decimalFormat=new DecimalFormat("0.00");//构造方法的字符格式这里如果小数不足2位,会以0补足.
String p=decimalFormat.format(speed*3.6);//format 返回的是字符串
GPSmessage.setText("速度:"+p);
} else {
GPSmessage.setText("无法获取地理信息");
}
}