在楼主使用百度定位sdk locSDK3.3.zip 过程中,出现表面看来无法定位的情况;
经过手机端大量日志记录分析情况下,确定该值为百度定位默认值。
场景:
在正常定位情况下,首次定位就能定位到真实数据,继而开始逐步求精过程,并未发现异常,手机端记录情况如下:
2013-10-15 17:18:45|i|BDLocationService|onStart
2013-10-15 17:18:47|i|GPSLocationService|BDLocation is null!
2013-10-15 17:18:47|i|GPSLocationService|onStart
2013-10-15 17:18:49|i|BDLocationService|location :108.37548/22.820262
2013-10-15 17:18:52|i|BDLocationService|location :108.37548/22.820262
然而,情况并非一帆风顺的,不巧百度SDK地图模块又报错误,程序奔溃,之后日志如下:
2013-10-15 19:30:08|i|BDLocationService|onStart
2013-10-15 19:30:08|i|GPSLocationService|BDLocation is null!
2013-10-15 19:30:08|i|GPSLocationService|onStart
2013-10-15 19:30:09|i|BDLocationService|location :4.9E-324/4.9E-324
2013-10-15 19:30:11|i|BDLocationService|location :4.9E-324/4.9E-324
2013-10-15 19:30:13|i|BDLocationService|location :4.9E-324/4.9E-324
2013-10-15 19:30:14|i|GPSLocationService|location :108.31615703563057/22.783749351836388
2013-10-15 19:30:15|i|BDLocationService|location :108.326661/22.786804
而在楼主的程序中,增加了自行过滤经纬度的模块,当两次定位超过2000米距离的情况下后面的记录就无法记录,从而导致程序无法正常运行。通过分析日志发现漏掉了这个默认值,增加之后一切OK!
这里先给一个处理时间格式的代码:
下面是:
滑动条控制代码:
bar = (SeekBar) findViewById(R.id.seekBar);
bar.setOnSeekBarChangeListener(this);
int progress;
@Override
public void onProgressChanged(SeekBar arg0, int arg1, boolean arg2) {
// TODO Auto-generated method stub
System.out.println("目前位置:" + arg1);
progress = arg1;
// player.seekTo(progress);
}
@Override
public void onStartTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStopTrackingTouch(SeekBar arg0) {
// TODO Auto-generated method stub
player.seekTo(progress);
}
源码下载
http://www.pjrc.com/teensy/td_libs_DS1307RTC.html
下载相关的库程序
连接:
DS1306:
1.接3.3V
2.SDA接A4
3.SCL接A5
读取:
#include <Wire.h>
#include <Time.h>
#include <DS1307RTC.h>
在setup里执行读取
setSyncProvider(RTC.get);
写入时间办法:
通过例程TimeRTCSet直接在串口发送"Tunix_timestamp"修改时间
注意:在那里输出的unixtimestamp,有些有时区的可能会有时差,因此应该加上相应的时差.