import android.os.HandlerThread;
import android.provider.Settings;
-import com.enqualcomm.support.bean.EventLooperHandlerThread;
import com.enqualcomm.support.bean.ICLocation;
import com.enqualcomm.support.bean.ICLocation.GPS_locationStatus;
import com.enqualcomm.support.bean.Runtime;
public class NMEAListener implements NmeaListener, LocationListener {
private static boolean listening = false;
+ private String strLatitude;
+ private String strLongitude;
+
+ public String getStrLatitude() {
+ return strLatitude;
+ }
+
+ public String getStrLongitude() {
+ return strLongitude;
+ }
public boolean isListening() {
return listening;
}
if (nmeastr.startsWith("$GPGLL,") || nmeastr.startsWith("$GNGLL,")) {
String tmplist[] = nmeastr.split(",");
-// GPGLL编辑
-//(地理定位信息)
-// 例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D
-// 字段0:$GPGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息
-// 字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
-// 字段2:纬度N(北纬)或S(南纬)
-// 字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0)
-// 字段4:经度E(东经)或W(西经)
-// 字段5:UTC时间,hhmmss.sss格式
-// 字段6:状态,A=定位,V=未定位
-// 字段7:校验值($与*之间的数异或后的值)
+ // GPGLL编辑
+ //(地理定位信息)
+ //例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D
+ //字段0:$GPGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息
+ //字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
+ //字段2:纬度N(北纬)或S(南纬)
+ //字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0)
+ //字段4:经度E(东经)或W(西经)
+ //字段5:UTC时间,hhmmss.sss格式
+ //字段6:状态,A=定位,V=未定位
+ //字段7:校验值($与*之间的数异或后的值)
String Lat = tmplist[1];
String lon = tmplist[3];
String fixed = tmplist[6];
// ICLogger.i("GPGLL Lat="+Lat+",Lon="+lon+",fixed="+fixed);
} else if (nmeastr.startsWith("$GPRMC,") || nmeastr.startsWith("$GNRMC,")) {
-// GPRMC编辑
-//(推荐定位信息数据格式)
-// 例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
-// 字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
-// 字段1:UTC时间,hhmmss.sss格式
-// 字段2:状态,A=定位,V=未定位
-// 字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
-// 字段4:纬度N(北纬)或S(南纬)
-// 字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
-// 字段6:经度E(东经)或W(西经)
-// 字段7:速度,节,Knots
-// 字段8:方位角,度
-// 字段9:UTC日期,DDMMYY格式
-// 字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
-// 字段11:磁偏角方向,E=东W=西
-// 字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)
-// 字段13:校验值($与*之间的数异或后的值)
+ // GPRMC编辑
+ //(推荐定位信息数据格式)
+ //例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50
+ //字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息
+ //字段1:UTC时间,hhmmss.sss格式
+ //字段2:状态,A=定位,V=未定位
+ //字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
+ //字段4:纬度N(北纬)或S(南纬)
+ //字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)
+ //字段6:经度E(东经)或W(西经)
+ //字段7:速度,节,Knots
+ //字段8:方位角,度
+ //字段9:UTC日期,DDMMYY格式
+ //字段10:磁偏角,(000 - 180)度(前导位数不足则补0)
+ //字段11:磁偏角方向,E=东W=西
+ //字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)
+ //字段13:校验值($与*之间的数异或后的值)
String tmplist[] = nmeastr.split(",");
String utctime = tmplist[1];
String Lat = tmplist[3];
} else if (nmeastr.startsWith("$GPGSV,") || nmeastr.startsWith("$GLGSV,") || nmeastr.startsWith("$GAGSV,") || nmeastr.startsWith("$GBGSV,") || nmeastr.startsWith("$BDGSV,")) {
-// GPGSV编辑
-// (可见卫星信息)
-// 例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70
-// 字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息
-// 字段1:本次GSV语句的总数目(1 - 3)
-// 字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)
-// 字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)
-// 字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
-// 字段5:卫星仰角(00 - 90)度(前导位数不足则补0)
-// 字段6:卫星方位角(00 - 359)度(前导位数不足则补0)
-// 字段7:信噪比(00-99)dbHz
-// 字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
-// 字段9:卫星仰角(00 - 90)度(前导位数不足则补0)
-// 字段10:卫星方位角(00 - 359)度(前导位数不足则补0)
-// 字段11:信噪比(00-99)dbHz
-// 字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
-// 字段13:卫星仰角(00 - 90)度(前导位数不足则补0)
-//// 字段14:卫星方位角(00 - 359)度(前导位数不足则补0)
-//// 字段15:信噪比(00-99)dbHz
-// 字段16:校验值($与*之间的数异或后的值)
+ // GPGSV编辑
+ // (可见卫星信息)
+ // 例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70
+ // 字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息
+ // 字段1:本次GSV语句的总数目(1 - 3)
+ // 字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)
+ // 字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)
+ // 字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
+ // 字段5:卫星仰角(00 - 90)度(前导位数不足则补0)
+ // 字段6:卫星方位角(00 - 359)度(前导位数不足则补0)
+ // 字段7:信噪比(00-99)dbHz
+ // 字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
+ // 字段9:卫星仰角(00 - 90)度(前导位数不足则补0)
+ // 字段10:卫星方位角(00 - 359)度(前导位数不足则补0)
+ // 字段11:信噪比(00-99)dbHz
+ // 字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)
+ // 字段13:卫星仰角(00 - 90)度(前导位数不足则补0)
+ //// 字段14:卫星方位角(00 - 359)度(前导位数不足则补0)
+ //// 字段15:信噪比(00-99)dbHz
+ // 字段16:校验值($与*之间的数异或后的值)
String tmplist[] = nmeastr.split(",");
int maxPageCount = 0;
} else if (nmeastr.startsWith("$GPGGA,") || nmeastr.startsWith("$GNGGA,")) {
-// GPGGA编辑
-//(定位信息)
-// 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,12.2,M,19.7,M,,0000*1F
-// 字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息
-// 字段1:UTC 时间,hhmmss.sss,时分秒格式
-// 字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
-// 字段3:纬度N(北纬)或S(南纬)
-// 字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
-// 字段5:经度E(东经)或W(西经)
-// 字段6:GPS状态,0=不可用(FIX NOT valid),1=单点定位(GPS FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK FIX),5=RTK FLOAT,6=正在估算
-// 字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
-// 字段8:HDOP水平精度因子(0.5 - 99.9)
-// 字段9:海拔高度(-9999.9 - 99999.9)
-// 字段10:单位:M(米)
-// 字段11:地球椭球面相对大地水准面的高度 WGS84水准面划分
-// 字段12:WGS84水准面划分单位:M(米)
-// 字段13:差分时间(从接收到差分信号开始的秒数,如果不是差分定位将为空)
-// 字段14:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
-// 字段15:校验值($与*之间的数异或后的值)
+ // GPGGA编辑
+ //(定位信息)
+ // 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,12.2,M,19.7,M,,0000*1F
+ // 字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息
+ // 字段1:UTC 时间,hhmmss.sss,时分秒格式
+ // 字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)
+ // 字段3:纬度N(北纬)或S(南纬)
+ // 字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)
+ // 字段5:经度E(东经)或W(西经)
+ // 字段6:GPS状态,0=不可用(FIX NOT valid),1=单点定位(GPS FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK FIX),5=RTK FLOAT,6=正在估算
+ // 字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)
+ // 字段8:HDOP水平精度因子(0.5 - 99.9)
+ // 字段9:海拔高度(-9999.9 - 99999.9)
+ // 字段10:单位:M(米)
+ // 字段11:地球椭球面相对大地水准面的高度 WGS84水准面划分
+ // 字段12:WGS84水准面划分单位:M(米)
+ // 字段13:差分时间(从接收到差分信号开始的秒数,如果不是差分定位将为空)
+ // 字段14:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)
+ // 字段15:校验值($与*之间的数异或后的值)
String tmplist[] = nmeastr.split(",");
String utctime = tmplist[1];
String fixed = tmplist[6];
String usedStarts = tmplist[7];
String hdop = tmplist[8];
-
+ String altitude = tmplist[9];
+ ICLogger.d("altitude ==> " + altitude);
if ((fixed.trim().equals("1")) || (fixed.trim().equals("2")) || (fixed.trim().equals("6"))) {
-
-
// 转换GPS坐标为度,以便在各种应用中可以方便查找。
try {
latitude = Double.valueOf(Lat);
} catch (Exception e) {
}
// 转换单位,从分转换到度
-
double intdu = (int) (longitude / 100f); //小数转换到分为单位
double du = (longitude - intdu * 100) / 60f;
double last = intdu + du;
// 经纬度 保留4位小数点
DecimalFormat df = new DecimalFormat("#.0000000");
- String strLatitude = df.format(latitude);
- String strLongitude = df.format(longitude);
+ strLatitude = df.format(latitude);
+ strLongitude = df.format(longitude);
//定位
StringBuilder sb = new StringBuilder();
- sb.append("GPGGA, location time= " + TimeUtil.getLocalTime() + ", FixedCount=" + locationFixedCount + ", GPSTime=" + utctime + ", Lat(" + latname + ")=" + Lat + " (" + strLatitude + "), Lon(" + lonname + ")=" + lon + " (" + strLongitude + "), fixed=" + fixed + ", hdop=" + hdop + ", usedStarts=" + usedStarts);
+ sb.append("GPGGA, location time= " + TimeUtil.getLocalTime() +
+ ", FixedCount=" + locationFixedCount + ", " +
+ "GPSTime=" + utctime + ", Lat(" + latname + ")=" + Lat +
+ " (" + strLatitude + "), Lon(" + lonname + ")=" +
+ lon + " (" + strLongitude + "), fixed=" + fixed +
+ ", hdop=" + hdop + ", usedStarts=" + usedStarts);
ICLogger.i(sb.toString());
if (Config.LOG_TOFILE)
ICLogger.logToFile("GPS", sb.toString());
locationFixedCount++;
} else {
ICLogger.i("HDOP is larger than " + ICLocation.MAX_HDOP + " , skip this location!");
- if (Config.LOG_TOFILE)
+ if (Config.LOG_TOFILE) {
ICLogger.logToFile("GPS", "HDOP is larger than " + ICLocation.MAX_HDOP + " , skip this location!");
+ }
}
if (locationFixedCount > MaxFixedTimes) {
/*
@Override
public void onLocationChanged(Location location) {
-
+ ICLogger.d("location 变化...");
+ float bearing = location.getBearing();
+ runtime.getLocationInstance().getLocation().bearing = bearing;
+ ICLogger.d("bearing==> " + bearing);
+ double altitude = location.getAltitude();
+ runtime.getLocationInstance().getLocation().altitude = altitude;
+ ICLogger.d("altitude==> " + altitude);
+ //设置到runtime中
+ double latitude = location.getLatitude();
+ runtime.getLocationInstance().getLocation().lat = latitude;
+ double longitude = location.getLongitude();
+ runtime.getLocationInstance().getLocation().lon = longitude;
+ ICLogger.d("latitude == > " + latitude + " longitude==> " + longitude);
+ float speed = location.getSpeed();
+ runtime.getLocationInstance().getLocation().speed = speed;
+ ICLogger.d("speed==> " + speed);
}
public void onStatusChanged(String paramString, int paramInt, Bundle paramBundle) {
public boolean startListen() {
- if (this.listening == false) {
+ if (!listening) {
Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, true);
runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_OPEN);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);// 设置为最大精度
- criteria.setAltitudeRequired(false);//不要求海拔信息
- criteria.setBearingRequired(false);// 不要求方位信息
+ //by TrillGates,S123的协议需要海拔和方位信息
+ //所以修改一下这个
+ //criteria.setAltitudeRequired(false);//不要求海拔信息
+ criteria.setAltitudeRequired(true);//不要求海拔信息
+ //criteria.setBearingRequired(false);// 不要求方位信息
+ criteria.setBearingRequired(true);// 不要求方位信息
criteria.setCostAllowed(true);//是否允许付费
criteria.setPowerRequirement(Criteria.POWER_LOW);// 对电量的要求
searchCout = 0;
locationFixedCount = 0;
gpsMode = GPS_CURRENT_STATUS.GPS_LISTENING;
-// locationManager.addGpsStatusListener(statusListener);//监听搜星状态
+ //locationManager.addGpsStatusListener(statusListener);//监听搜星状态
locationManager.addNmeaListener(this); //监听NMEA 协议数据。
//做个热启动
/* AP01 定位 */
- public double temperature_adjustValue = 0.0f;
-
public boolean isGPSFixed() {
return (gpsp.getLocationStat() == ICLocation.LOCATION_STAT.LOCATION_FIXED);
}
- public String getGPSData() {
+ public String getS123GpsData() {
+ StringBuilder sb = new StringBuilder();
+ ICLogger.d("isGPSFixed() ==> " + isGPSFixed());
+ if (isGPSFixed()) {
+ sb.append("A").append(",");
+ String latGPSStr = gpsp.getLocation().latGPSStr;
+ String lonGPSStr = gpsp.getLocation().lonGPSStr;
+ float hdop = gpsp.getLocation().hdop;
+ float speed = gpsp.getLocation().speed;
+ float getheading = gpsp.getLocation().heading;
+ float bearing = gpsp.getLocation().bearing;
+ float altitude = (float) gpsp.getLocation().altitude;
+ ICLogger.d("getheading ==> " + getheading);
+ ICLogger.d("hdop==> " + hdop);
+ ICLogger.d("speed==> " + hdop);
+ ICLogger.d("gpsp.getLocation().latGPSStr==> " + latGPSStr);
+ ICLogger.d("gpsp.getLocation().lonGPSStr==> " + lonGPSStr);
+ sb.append(latGPSStr);
+ sb.append(",");
+ sb.append(lonGPSStr);
+ sb.append(",").append(hdop);
+ sb.append(",").append(speed);
+ sb.append(",").append(bearing);
+ sb.append(",").append(altitude);
+ } else {
+ sb.append("V").append(",").append("0,0,0,0,0,0");
+ }
+ ICLogger.d("s123 gsp data==> " + sb.toString());
+ return sb.toString();
+ }
-// 2232.9806N11404.9355E000.1: 北纬22度32.9806分,东经114度04.9355分,速度为000.1 km/h,如经纬度无效,可默认全为0,如0000.0000N00000.0000E
-// 纬度格式为: ddmm.mmmm ,长度不足长度前补0
-// 经度格式为:dddmm.mmmm,长度不足前补0
+ public String getGPSData() {
+ //2232.9806N11404.9355E000.1: 北纬22度32.9806分,东经114度04.9355分,速度为000.1 km/h,如经纬度无效,可默认全为0,如0000.0000N00000.0000E
+ //纬度格式为: ddmm.mmmm ,长度不足长度前补0
+ //经度格式为:dddmm.mmmm,长度不足前补0
StringBuilder sb = new StringBuilder();
int lati = (int) gpsp.getLocation().lat;
int latl = (int) ((gpsp.getLocation().lat - lati) * 10000);
sb.append("V").append(gpsStr);
}
-
return sb.toString();
}
public String getMqttGPSData() {
-/***
- * A,22.570733,N,113.8626083,E,0.00,249.5,0.0,6
- * A,gps 定位有效
- * 22.570733,纬度 N,
- * 113.8626083,经度 E,
- * 0.00,速度
- * 249.5,方向
- * 0.0,海拔
- * 6,卫星个数
- */
+ /***
+ * A,22.570733,N,113.8626083,E,0.00,249.5,0.0,6
+ * A,gps 定位有效
+ * 22.570733,纬度 N,
+ * 113.8626083,经度 E,
+ * 0.00,速度
+ * 249.5,方向
+ * 0.0,海拔
+ * 6,卫星个数
+ */
StringBuilder sb = new StringBuilder();
int speedi = (int) gpsp.getLocation().speed;
int speedl = (int) ((gpsp.getLocation().speed - speedi) * 100);
public String getFZDGPSData() {
-/***
- * A,22.570733,N,113.8626083,E,0.00,249.5,0.0,6
- * A,gps 定位有效
- * 22.570733,纬度 N,
- * 113.8626083,经度 E,
- * 0.00,速度
- * 249.5,方向
- * 0.0,海拔
- * 6,卫星个数
- */
+ /***
+ * A,22.570733,N,113.8626083,E,0.00,249.5,0.0,6
+ * A,gps 定位有效
+ * 22.570733,纬度 N,
+ * 113.8626083,经度 E,
+ * 0.00,速度
+ * 249.5,方向
+ * 0.0,海拔
+ * 6,卫星个数
+ */
StringBuilder sb = new StringBuilder();
int speedi = (int) gpsp.getLocation().speed;
int speedl = (int) ((gpsp.getLocation().speed - speedi) * 100);
//AP03 用的多基站定位数据
public String getLBSMultiStationData() {
- // 7: 表示共有7组基站
+ // 7: 表示共有7组基站
// 460: MCC 国家码
// 0: MNC运营商代码
// 9520|3671|10: LAC|CID|dbm表示一组基站信息,后面数量需和基站组数地应 10:dbm为信号强度多基站信号强度建议从高到低排列后上传,信号强度转正数:150 – abs(dbm)
}
public String getLBSData() {
-
// 460,0,9520,3671 : LBS基站数据,MCC国家码,460为中国,0:MNC,0为移动,9520:LAC,十进制,3671,CID,十进制
StringBuilder sb = new StringBuilder();
sb.append(gpsp.getMCC()).append(",")
.append(gpsp.getMNC()).append(",")
-
.append(gpsp.getLAC()).append(",")
.append(gpsp.getGSMStationCID());
return sb.toString();
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
+import android.database.Cursor;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Environment;
mConnection.send(APFX(mRuntime));
}
+ /**
+ * 发送签到信息
+ *
+ * @param value
+ */
+ public void sendSignMsg(String value) {
+ ICLogger.d("value ==> " + value);
+ //如果是-1,那么是空消息
+ //如果是其他数字,通过id去查询即可
+ if (!"none".equals(value)) {
+ //先查询出内容,再组装数据
+ ContentResolver resolver = mRuntime.getContextProxy().getResolver();
+ Cursor query = resolver.query(Uri.parse(ShootTextProvider.SHOOT_TEXT),
+ new String[]{ICDatabaseHelper.shoot_value},
+ ICDatabaseHelper.shoot_id + "=?",
+ new String[]{value}, null);
+ String contentValue = "";
+ if (query != null) {
+ if (query.moveToNext()) {
+ //要判断数据是否为空
+ contentValue = query.getString(0);
+ }
+ query.close();
+ }
+ //组装数据
+ //IWAPRP,080524, 102533,128,36.6,88,120,90,90,XXXXXXXX,
+ // A,22.567898,113.1234567, 50,5,61, 120, wgs84, 99, 20, 460, 0,
+ // 9520|3671|-54&9521|3675|-53,
+ // Home|74-DE-2B-44-88-8C|97&
+ // Home1|74-DE-2B-44-88-8C|97&
+ // Home2|74-DE-2B-44-88-8C|97&
+ // Home3|74-DE-2B-44-88-8C|97
+ //IW标识符
+ //APAL:命令字
+ //080524: 2008 年05 月24
+ //102533: 10点25分33秒
+ //128: 步数
+ //36.6: 体温
+ //88: 心率
+ //120: 收缩压
+ //90: 舒张压
+ //90: 电池电量 0~100
+ mConnection.send(APRP(contentValue));
+ }
+ }
+
+ public StringMessage APRP(String msg) {
+ int step = mRuntime.getTotalStepCount();
+ double temp = mRuntime.tempInfo.currentBodyTemp;
+ int heartRate = mRuntime.getHRS().getPPG();
+ int lowPressure = mRuntime.getHRS().getBPL();
+ int highPressure = mRuntime.getHRS().getBPH();
+ int batteryLev = mRuntime.getBatterylevel();
+ //定位数据
+ // String s123GpsData = mRuntime.getS123GpsData();
+ return genStringMessage(cmdMap.get(CMD_TYPE.APRP),
+ new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APRP))
+ .append(TimeUtil.getSystemDateYYMMDD())
+ .append(CMDSPLIT).append(TimeUtil.getSystemTimeHHmmss())
+ .append(CMDSPLIT).append(step)
+ .append(CMDSPLIT).append(temp)
+ .append(CMDSPLIT).append(heartRate)
+ .append(CMDSPLIT).append(lowPressure)
+ .append(CMDSPLIT).append(highPressure)
+ .append(CMDSPLIT).append(batteryLev)
+ .append(CMDSPLIT).append(msg)
+ .append(CMDSPLIT).append(mRuntime.getS123GpsData())
+ .append(CMDSPLIT).append("wgs84")//原始经纬度
+ .append(CMDSPLIT).append(mRuntime.getSignalStrength())
+ .append(CMDSPLIT).append(mRuntime.getBatterylevel())
+ .append(CMDSPLIT).append(mRuntime.getLBSData())
+ .append(CMDSPLIT).append(mRuntime.getWifiInfo())
+ .append(CMDEND).toString());
+ }
+
public enum CMD_TYPE {
/*终端发起*/
AP00,//登录包
BPCH,
APBR,//上传蓝牙扫描结果
BPBR,
+ APRP,//签到信息上传
+ BPRP,
/* 服务器发起*/
AP12,
BP12,//SOS 号码设置
cmdMap.put(CMD_TYPE.APBR, "APBR");
cmdMap.put(CMD_TYPE.BPBR, "BPBR");
cmdMap.put(CMD_TYPE.APGJ, "APGJ");
+ cmdMap.put(CMD_TYPE.APRP, "APRP");
+ cmdMap.put(CMD_TYPE.BPRP, "BPRP");
/* 服务器发起*/
cmdMap.put(CMD_TYPE.AP12, "AP12");
cmdMap.put(CMD_TYPE.BP12, "BP12");
/**/
public static StringMessage genStringMessage(String cmdName, String msg) {
//设置cmdName,在这里配置进去的msg没有实际用到
+ ICLogger.d("msg == > " + msg);
StringMessage sm = new StringMessage(new String[]{cmdName, msg});
//用此函数设置要发送的内容
sm.refresh(msg);
/**
* 如果解析出来的cmdlist不是空,且数据不是完整cmd则保留 最后一条数据到last_inCompletecmd
*/
- if (cmdlist.length > 0 && iscmdComplete == false) {
+ if (cmdlist.length > 0 && !iscmdComplete) {
listlen -= 1;
last_inCompletecmd = cmdlist[listlen];
ICLogger.d("cmd not complete , " + last_inCompletecmd);
ICLogger.d("found cmd keyid=" + key + " ,keyname=" + cmdMap.get(key) + " , " + cmdlist[i]);
if (key == CMD_TYPE.BP28) {
//如果是BP28则 后面的数据是音频,需要保留
- byte[] amrBuf;
int amrLen = getBP28Amrlen(cmdlist[i]);
if (bytes.length > amrLen) {
handleCmd(key, cmdlist[i], bytes);
* 00:第一个0:是否需要回复地址信息,0:不回复,1回复.
* HOME|74-DE-2B-44-88-8C|97&HOME1|74-DE-2B-44-88-8C|97&HOME2|74-DE-2B-44-88-8C|97&HOME3|74-DE-2B-44-88-8C|97#
*/
- return genStringMessage(cmdMap.get(CMD_TYPE.AP10), new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP10)).append(TimeUtil.getShortDate())
+ return genStringMessage(cmdMap.get(CMD_TYPE.AP10), new StringBuffer(CMDHEADER)
+ .append(cmdMap.get(CMD_TYPE.AP10))
+ .append(TimeUtil.getShortDate())
.append(ds.getGPSData()).append(TimeUtil.getShortTime()).append(ds.getGPSHeading())
.append(String.format("%03d", abs(ds.getSignalStrength())))
.append(ds.getGPSLocationStarNums()).append(ds.getBattery()).append("0")
ICLogger.d("服务器收到飞行模式打开请求.");
handleBPFX();
break;
+ case BPRP:
+ ICLogger.d("服务器收到签到信息.");
+ handleBPRP();
+ break;
case APTM:
break;
case APCH:
return ret;
}
+ /**
+ * 修改配置项的值为success,让UI展示Success
+ */
+ private void handleBPRP() {
+ //UI展示完要重置成none
+ updateSettingValue("sign_action_flag", "success");
+ }
+
/**
* 处理飞行模式打开的结果反馈,修改设置项的值
*/