From: snickersun Date: Mon, 30 Dec 2019 12:40:09 +0000 (+0800) Subject: update 1230 X-Git-Url: http://git.snicker.com.cn/?a=commitdiff_plain;h=355ce064dfdbae1e9fb580577ca90836234c0bc0;p=icsupport.git update 1230 --- diff --git a/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_IAtChannel_classes_jar_unspecified_jar.xml b/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_IAtChannel_classes_jar_unspecified_jar.xml new file mode 100644 index 00000000..9801cf8f --- /dev/null +++ b/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_IAtChannel_classes_jar_unspecified_jar.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_framework_jar_unspecified_jar.xml b/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_framework_jar_unspecified_jar.xml new file mode 100644 index 00000000..bd2db024 --- /dev/null +++ b/.idea/libraries/Gradle____local_jars___D__workspace_icsupport_app_libs_framework_jar_unspecified_jar.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/java/com/ic/protocol/MainActivity.java b/app/src/main/java/com/ic/protocol/MainActivity.java index ea9f7da9..e351ab6e 100644 --- a/app/src/main/java/com/ic/protocol/MainActivity.java +++ b/app/src/main/java/com/ic/protocol/MainActivity.java @@ -8,6 +8,7 @@ import android.widget.Button; import android.widget.Toast; import com.ic.protocol.service.protocolMainServer; +import com.ic.protocol.utils.ICLog; import com.ic.protocol.utils.RxSocket; import java.net.InetAddress; @@ -61,13 +62,8 @@ public class MainActivity extends AppCompatActivity { if(mProtocolMainServer !=null) mProtocolMainServer.sendMsg(new String("IWAP00867155030001063#")); break; case R.id.btnWrite2: - String msg="IWAP00938495856921245#"; - String msg1="IWAP0093849566856921245#IWAP0"; - String msg2="IWAP00938495856921245#IWAP0093849585692fff5#"; - msg.split("#"); - msg1.split("#"); - msg2.split("#"); + if(mProtocolMainServer !=null) mProtocolMainServer.testGpsData(); break; } diff --git a/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java b/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java new file mode 100644 index 00000000..33b8d257 --- /dev/null +++ b/app/src/main/java/com/ic/protocol/adapter/LBSHelper.java @@ -0,0 +1,394 @@ +package com.ic.protocol.adapter; + +import android.Manifest; +import android.content.BroadcastReceiver; +import android.content.Context; +import android.content.Intent; +import android.content.IntentFilter; +import android.content.pm.PackageManager; +import android.net.wifi.ScanResult; +import android.net.wifi.WifiManager; +import android.os.Build; +import android.os.Handler; +import android.os.Message; +import android.os.SystemClock; +import android.support.annotation.Nullable; +import android.support.v4.app.ActivityCompat; +import android.telephony.CellLocation; +import android.telephony.NeighboringCellInfo; +import android.telephony.PhoneStateListener; +import android.telephony.SignalStrength; +import android.telephony.TelephonyManager; +import android.telephony.cdma.CdmaCellLocation; +import android.telephony.gsm.GsmCellLocation; + +import com.ic.protocol.bean.deviceStatus; +import com.ic.protocol.utils.ICLog; + +import java.util.Collections; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.Timer; +import java.util.TimerTask; + +import static android.net.wifi.WifiManager.WIFI_STATE_DISABLED; +import static android.net.wifi.WifiManager.WIFI_STATE_DISABLING; +import static android.net.wifi.WifiManager.WIFI_STATE_ENABLED; +import static android.net.wifi.WifiManager.WIFI_STATE_ENABLING; +import static android.net.wifi.WifiManager.WIFI_STATE_UNKNOWN; +import static android.telephony.PhoneStateListener.LISTEN_SIGNAL_STRENGTHS; +import static android.telephony.TelephonyManager.NETWORK_TYPE_LTE; + +public class LBSHelper { + private boolean IS_HASOPEN = false; + private boolean IS_OPEN = false; + private Context context; + Handler mHandler; + private int mLastSignal; + private LBSHelper.OnWiFiInfoListener mListener; + private LBSHelper.MyPhoneStateListener mMyListener; + int mNetworkType; + private Timer mTimer; + public deviceStatus runtime; + private BroadcastReceiver wifiChangedReceiver; + private String wifiInfoResult; + private WifiManager wifiManager; + + + public LBSHelper(Context _context, WifiManager _wifiManager, deviceStatus dev) { + this.wifiManager = _wifiManager; + this.context = _context; + this.runtime = dev; + initHelper(); + registerBroadReceiver(); + this.mMyListener = new LBSHelper.MyPhoneStateListener(); + TelephonyManager tm = ((TelephonyManager) LBSHelper.this.context.getSystemService(Context.TELEPHONY_SERVICE)); + tm.listen(this.mMyListener, LISTEN_SIGNAL_STRENGTHS); + this.mNetworkType = tm.getNetworkType(); + } + + private void initHelper() { + this.mHandler = new Handler() { + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + if (msg.what == 104) { + LBSHelper.this.wifiManager.setWifiEnabled(false); + if (LBSHelper.this.mListener != null) { + LBSHelper.this.mListener.getWifiInfoCallBack((String) null); + } + + LBSHelper.this.mTimer = null; + } + } + }; + this.wifiChangedReceiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + +// WIFI_STATE_DISABLING = 0 +// WIFI_STATE_DISABLED = 1 +// WIFI_STATE_ENABLING = 2 +// WIFI_STATE_ENABLED = 3 +// WIFI_STATE_UNKNOWN = 4 + switch (intent.getIntExtra("wifi_state", 0)) { + case WIFI_STATE_ENABLED: + LBSHelper.this.wifiManager.startScan(); + if (LBSHelper.this.mListener == null) { + LBSHelper.this.mMyListener = new MyPhoneStateListener(); + } + + if (LBSHelper.this.IS_OPEN) { + (new Thread(new Runnable() { + public void run() { + SystemClock.sleep(3000L); + StringBuilder sb = LBSHelper.this.handScanResults(); + if (sb == null) { + LBSHelper.this.wifiInfoResult = null; + } else { + LBSHelper.this.wifiInfoResult = sb.toString(); + } + + LBSHelper.this.mListener.getWifiInfoCallBack(LBSHelper.this.wifiInfoResult); + LBSHelper.this.wifiManager.setWifiEnabled(false); + LBSHelper.this.IS_OPEN = false; + LBSHelper.this.IS_HASOPEN = false; + if (LBSHelper.this.mTimer != null) { + LBSHelper.this.mTimer.cancel(); + LBSHelper.this.mTimer.purge(); + LBSHelper.this.mTimer = null; + } + + } + })).start(); + return; + } else if (LBSHelper.this.IS_HASOPEN) { + if (LBSHelper.this.wifiManager == null) { + if (LBSHelper.this.mListener != null) { + LBSHelper.this.mListener.getWifiInfoCallBack((String) null); + } + + return; + } + + (new Thread(new Runnable() { + public void run() { + SystemClock.sleep(3000L); + StringBuilder sb = LBSHelper.this.handScanResults(); + if (sb == null) { + LBSHelper.this.wifiInfoResult = null; + } else { + LBSHelper.this.wifiInfoResult = sb.toString(); + } + + LBSHelper.this.mListener.getWifiInfoCallBack(LBSHelper.this.wifiInfoResult); + LBSHelper.this.IS_OPEN = false; + LBSHelper.this.IS_HASOPEN = false; + } + })).start(); + return; + } else if (LBSHelper.this.mListener != null) { + LBSHelper.this.mListener.getWifiInfoCallBack((String) null); + } + case WIFI_STATE_DISABLING: + case WIFI_STATE_DISABLED: + case WIFI_STATE_ENABLING: + case WIFI_STATE_UNKNOWN: + return; + default: + } + } + }; + + + } + + @Nullable + private StringBuilder handScanResults() { + List var4 = this.wifiManager.getScanResults(); + if (var4.size() < 2) { + return null; + } else { + this.sortByLevel(var4); + StringBuilder var3 = new StringBuilder(); + Iterator var6 = var4.iterator(); + int var1 = 0; + + while (var6.hasNext()) { + ScanResult var5 = (ScanResult) var6.next(); + if (var5.level != 0) { + var3.append("+"); + var3.append(var5.BSSID); + var3.append("@"); + var3.append(var5.level); + int var2 = var1 + 1; + var1 = var2; + if (var2 == 6) { + break; + } + } + } + + var3.deleteCharAt(0); + return var3; + } + } + + private void sortByLevel(List var1) { + Collections.sort(var1, new Comparator() { + public int compare(ScanResult var1, ScanResult var2) { + return var2.level - var1.level; + } + }); + } + + public void sendBroadcast(){ + Intent intent = new Intent("android.net.wifi.WIFI_STATE_CHANGED"); + intent.putExtra("wifi_state",3); + this.context.sendBroadcast(intent); + + } + private void startTimer() { + if (this.mTimer == null) { + this.mTimer = new Timer(); + } + + this.mTimer.schedule(new TimerTask() { + @Override + public void run() { + LBSHelper.this.mHandler.sendEmptyMessage(104); + } + }, 10000L); + } + + private void unRegisterBroadReceiver() { + this.context.unregisterReceiver(this.wifiChangedReceiver); + } + + public String getAttchCellInfo(TelephonyManager tm) { + return this.getCellInfo(tm); + } + + public String getCellInfo(TelephonyManager telephonyManager) { + int var3 = Build.VERSION.SDK_INT; + int var2 = 0; + String var4; + if (var3 > 23) { + var4 = telephonyManager.getSimOperator(); + if (var4 == null) { + ICLog.i("operator == null"); + return null; + } + + var4 = var4.substring(0, 5); + } else { + var4 = telephonyManager.getNetworkOperator(); + } + + if (var4 != null && var4.length() > 3) { + if (ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this.context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) { + // TODO: Consider calling + // ActivityCompat#requestPermissions + // here to request the missing permissions, and then overriding + // public void onRequestPermissionsResult(int requestCode, String[] permissions, + // int[] grantResults) + // to handle the case where the user grants the permission. See the documentation + // for ActivityCompat#requestPermissions for more details. + return "Failed Check permission for getCellLocation"; + } + CellLocation celllocation = telephonyManager.getCellLocation(); + if (celllocation == null) { + ICLog.i("cellLocation = null"); + return null; + } else { + StringBuilder gsmSb = new StringBuilder(var4); + StringBuilder mccmnc = new StringBuilder(var4); + StringBuilder cdmaSB = new StringBuilder(); + gsmSb.insert(3, "@"); + mccmnc.insert(3, "@"); + this.runtime.setMccAndMnc(mccmnc.toString()); + if (celllocation instanceof GsmCellLocation) { + GsmCellLocation gsmCell = (GsmCellLocation)celllocation; + gsmSb.append("@"); + gsmSb.append(gsmCell.getLac()); + gsmSb.append("@"); + gsmSb.append(gsmCell.getCid()); + gsmSb.append("@"); + gsmSb.append(this.mLastSignal); + this.runtime.setCdmaInfo(gsmSb.toString()); + ICLog.i("GsmCellLocation "+ gsmSb.toString()); + } else if (celllocation instanceof CdmaCellLocation) { + CdmaCellLocation cdmaCelllocation = (CdmaCellLocation)celllocation; + cdmaSB.append(cdmaCelllocation.getSystemId()); + cdmaSB.append(","); + cdmaSB.append(cdmaCelllocation.getNetworkId()); + cdmaSB.append(","); + cdmaSB.append(cdmaCelllocation.getBaseStationId()); + cdmaSB.append(","); + cdmaSB.append(""); + cdmaSB.append(","); + cdmaSB.append(""); + cdmaSB.append(","); + cdmaSB.append(this.mLastSignal); + this.runtime.setCdmaInfo(cdmaSB.toString()); + ICLog.i("CdmaCellLocation"); + Context var16 = this.context; + StringBuilder var8 = new StringBuilder(); + var8.append("CDMA_info="); + var8.append(cdmaSB.toString()); + ICLog.i(var8.toString()); +// FileOutputUtil.fileOutput(var16, "onCellLocationChanged", var8.toString()); + } else { + this.runtime.setCdmaInfo((String)null); + } + + this.runtime.setCurrentCellInfo(gsmSb.toString()); + + cdmaSB = new StringBuilder(); + cdmaSB.append("lbsInfo CurrentCellInfo== "); + cdmaSB.append(this.runtime.getCurrentCellInfo()); + ICLog.i(cdmaSB.toString()); + + Context var13 = this.context; + StringBuilder var17 = new StringBuilder(); + var17.append("lbsInfo currentCellInfo== "); + var17.append(this.runtime.getCurrentCellInfo()); +// FileOutputUtil.fileOutput(var13, "cellInfoTest", var17.toString()); + ICLog.i("cellInfoTest "+ var17.toString()); + List neighboringCell_list = telephonyManager.getNeighboringCellInfo(); + if (neighboringCell_list != null && !neighboringCell_list.isEmpty()) { + Iterator cell = neighboringCell_list.iterator(); + + while(cell.hasNext()) { + NeighboringCellInfo mNeighboringCellInfo = (NeighboringCellInfo)cell.next(); + if (mNeighboringCellInfo.getLac() == -1) { + break; + } + + gsmSb.append("+"); + gsmSb.append(mccmnc); + gsmSb.append("@"); + gsmSb.append(mNeighboringCellInfo.getLac()); + gsmSb.append("@"); + gsmSb.append(mNeighboringCellInfo.getCid()); + gsmSb.append("@"); + gsmSb.append(mNeighboringCellInfo.getRssi() + 110); + var3 = var2 + 1; + var2 = var3; + if (var3 == 5) { + break; + } + } + } + ICLog.i("return "+ gsmSb.toString()); + return gsmSb.toString(); + } + } else { + ICLog.i("operator == null || operator.length() <= 3"); + return null; + } + } + + public void getWifiInfo() { + if (this.wifiManager.isWifiEnabled()) { + this.IS_HASOPEN = true; + } else { + this.wifiManager.setWifiEnabled(true); + this.IS_OPEN = true; + this.startTimer(); + } + } + + public void registerBroadReceiver() { + IntentFilter var1 = new IntentFilter(); + var1.addAction("android.net.wifi.WIFI_STATE_CHANGED"); + this.context.registerReceiver(this.wifiChangedReceiver, var1); + } + + public void setOnWiFiInfoListener(LBSHelper.OnWiFiInfoListener var1) { + this.mListener = var1; + } + + private class MyPhoneStateListener extends PhoneStateListener { + private MyPhoneStateListener() { + } + + public void onSignalStrengthsChanged(SignalStrength ss) { + super.onSignalStrengthsChanged(ss); +// if (((TelephonyManager) LBSHelper.this.context.getSystemService(Context.TELEPHONY_SERVICE)).getNetworkType() == NETWORK_TYPE_LTE) { +// String[] siglist = ss.toString().split(" "); +// LBSHelper.this.mLastSignal = Integer.parseInt(siglist[9]) + 110; +// } else { +// LBSHelper.this.mLastSignal = ss.getGsmSignalStrength() * 2 - 113 + 110; +// } +// LBSHelper.this.runtime.setSignalStrength(LBSHelper.this.mLastSignal - 110); + LBSHelper.this.mLastSignal = ss.getGsmSignalStrength();//ss.getDbm(); + LBSHelper.this.runtime.setSignalStrength(LBSHelper.this.mLastSignal); + } + } + + public interface OnWiFiInfoListener { + void getWifiInfoCallBack(String var1); + } +} diff --git a/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java b/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java index f8f08543..654d104e 100644 --- a/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java +++ b/app/src/main/java/com/ic/protocol/adapter/protocolAPIHelper.java @@ -214,6 +214,17 @@ public class protocolAPIHelper { .append(ds.getStepCount()).append(CMDSPLIT).append(ds.getRolltimes()).append(CMDEND).toString(); } + public String AP01(deviceStatus ds){ + //示例数据:IWAP01080524A2232.9806N11404.9355E000.1061830323.8706000908000102, + // 460,0,9520,3671, + // 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# +// IWAP01191230A2232.9807N11404.9355E000.1161320000.0006000910000000,460,00,9520,3671,# + return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP01)).append(ds.getShortDate()) + .append(ds.getGPSData()).append(ds.getShortTime()).append(ds.getGPSHeading()).append(ds.getGSMSignal()) + .append(ds.getGPSLocationStarNums()).append(ds.getBatteryLevel()).append("0") + .append(ds.getProtection()).append(ds.getWorkMode()).append(CMDSPLIT) + .append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiData()).append(CMDEND).toString(); + } public String AP28(String name,String msg,int packagecount,int currentpackageindex,int received_success){ //示例数据:IWAP28,D3590D54,xxxx,6,1,1# return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP28)) @@ -233,6 +244,9 @@ public class protocolAPIHelper { case BP00: handleBP00(cmd); break; + case BP01: + handleBP01(cmd); + break; case BP03: handleBP03(cmd); break; @@ -260,9 +274,14 @@ public class protocolAPIHelper { } } + //处理 心跳 BP01 + private void handleBP01(String cmd){ + log("BP01定位接收成功"); + } + //处理 心跳 BP03 private void handleBP03(String cmd){ - + log("BP03心跳接收成功"); } //处理 BP28 语音消息 private void handleBP28(String cmd) { @@ -276,6 +295,8 @@ public class protocolAPIHelper { log(msg[5]); log(msg[6]); + }else{ + log("handleBP28","format Error"); } } diff --git a/app/src/main/java/com/ic/protocol/bean/ICLocation.java b/app/src/main/java/com/ic/protocol/bean/ICLocation.java new file mode 100644 index 00000000..4ddfacc2 --- /dev/null +++ b/app/src/main/java/com/ic/protocol/bean/ICLocation.java @@ -0,0 +1,113 @@ +package com.ic.protocol.bean; + +import java.util.HashMap; + +public class ICLocation { + + private LOCATION_STAT currentStat; + private GPS_LocationPoint currentLP=null; + private LBS_Data currentLBS=null; + public class GPS_LocationPoint{ + public double lat; + public double lon; + public double speed; + public double heading; + public int used_gps_numbs; + } + public class LBS_Data{ + HashMap wifi_aps=null; + HashMap gsm_stations=null; + } + public enum LOCATION_STAT{ + LOCATION_FIXED, + LOCATION_GPS_FAILED, + LOCATION_WIFI_FAILED, + } + + public ICLocation(){ + if (currentLP == null) + currentLP=new GPS_LocationPoint(); + + currentStat = LOCATION_STAT.LOCATION_FIXED; + if (currentLBS == null) + currentLBS = new LBS_Data(); + if (currentLBS.gsm_stations==null) + currentLBS.gsm_stations=new HashMap(); + if (currentLBS.wifi_aps==null) + currentLBS.wifi_aps=new HashMap(); + + init_data(); + } + + + private void init_data(){ + currentLP.lat=2232.9806f; + currentLP.lon=11404.9355f; + currentLP.speed=000.1f; + currentLP.heading=0.0f; + + currentLBS.wifi_aps.put("74-DE-2B-44-88-8C",97); + currentLBS.wifi_aps.put("74-DE-2B-44-88-8D",97); + + + } + public LOCATION_STAT getLocationStat(){ + return currentStat; + } + + public GPS_LocationPoint getLocation(){ + return currentLP; + } + + public void setLocation(double lat,double lon,double speed,double heading){ + currentLP.lat=lat; + currentLP.lon=lon; + currentLP.speed=speed; + currentLP.heading=heading; + } + + public void clearLBSdata(){ + currentLBS.wifi_aps.clear(); + currentLBS.gsm_stations.clear(); + } + + public void append_gsmstation(String station,int rssi){ + currentLBS.gsm_stations.put(station,rssi); + } + public void append_wifiap(String wifi,int rssi){ + currentLBS.wifi_aps.put(wifi,rssi); + } + + + // MCC,Mobile Country Code,移动国家代码(中国的为460); +// MNC,Mobile Network Code,移动网络号码(中国移动为00,中国联通为01); +// LAC,Location Area Code,位置区域码; +// CID,Cell Identity,基站编号,是个16位的数据(范围是0到65535)。 + + + private String MCC; + private String MNC; + private long LAC; + private long CID; + public void setMCC(String mcc){ MCC=mcc;} + public void setMNC(String mnc){MNC = mnc;} + public void setLAC(long lac){LAC=lac;} + public void setCID(long cid) { CID=cid;} + public String getMCC(){ + return MCC; + } + public String getMNC(){ + return MNC; + } + public long getLAC(){ + return LAC; + } + public long getGSMStationCID(){ + return CID; + } + + public LBS_Data getLBSdata(){ + return currentLBS; + } + +} diff --git a/app/src/main/java/com/ic/protocol/bean/deviceStatus.java b/app/src/main/java/com/ic/protocol/bean/deviceStatus.java index 379feaae..7be87536 100644 --- a/app/src/main/java/com/ic/protocol/bean/deviceStatus.java +++ b/app/src/main/java/com/ic/protocol/bean/deviceStatus.java @@ -1,59 +1,216 @@ package com.ic.protocol.bean; +import com.ic.protocol.utils.ICLog; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; +import java.util.Locale; + public class deviceStatus { - private String imei="867155030001063"; - private final String UserDebug ="userdebug"; - private final String User ="user"; + private String imei = "867155030001063"; + private final String UserDebug = "userdebug"; + private final String User = "user"; + + private ICLocation gpsp = null; + public deviceStatus() { + if (gpsp == null) gpsp = new ICLocation(); + } - public String getIMEI(){ + public String getIMEI() { return imei; } - public boolean isNetworkAvailable(){ + public boolean isNetworkAvailable() { return true; } /* return UserDebug , User */ - public String BuildType() - { + public String BuildType() { return UserDebug; } - public String HardwareInfo(){ + public String HardwareInfo() { return "SC9820E C41 V1.0"; } - public String BuildVersion(){ + public String BuildVersion() { return "C41-GW-V0.0.1"; } - public String getBatteryLevel(){ + public String getBatteryLevel() { return "100"; } - public String getGSMSignal(){ + /* AP03 心跳包 */ + public String getGSMSignal() { return "060"; } - public String getGPSLocationStarNums(){ + public String getGPSLocationStarNums() { return "009"; } - public String getProtection(){ + + public String getProtection() { return "00"; } - public String getWorkMode(){ + + public String getWorkMode() { return "00"; } - public String getStepCount(){ + + public String getStepCount() { return "23425"; } - public String getRolltimes(){ + public String getRolltimes() { return "00"; } + /* AP03 心跳包 end */ + + /* AP01 定位 */ + + /* 返回 2位年2位月2位日, 如2019-12-30 返回 191230*/ + public String getShortDate() { + String DEFAULT_TIME_FORMAT = "yyMMdd"; + SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT); + String dateStr = dateFormatter.format(Calendar.getInstance().getTime());//获取当前时间 + return dateStr; + } + + public void parseDatetiime(String datetimeStr){ + + SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式 + SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式 + SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + Date date1 = null; + try { + date1 = dff.parse(datetimeStr); + } catch (ParseException e) { + e.printStackTrace(); + } + String str1 = df1.format(date1); + String str2 = df2.format(date1); + + } + /*061830: 格林尼治时间06 点18 分30 秒 */ + public String getShortTime(){ + String DEFAULT_TIME_FORMAT = "HHmmss"; + //设置时间的格式 + // yyyy-MM-dd 1969-12-31 + // yyyy-MM-dd 1970-01-01 + // yyyy-MM-dd HH:mm 1969-12-31 16:00 + // yyyy-MM-dd HH:mm 1970-01-01 00:00 + // yyyy-MM-dd HH:mmZ 1969-12-31 16:00-0800 + // yyyy-MM-dd HH:mmZ 1970-01-01 00:00+0000 + // yyyy-MM-dd HH:mm:ss.SSSZ 1969-12-31 16:00:00.000-0800 + // yyyy-MM-dd HH:mm:ss.SSSZ 1970-01-01 00:00:00.000+0000 + // yyyy-MM-dd'T'HH:mm:ss.SSSZ 1969-12-31T16:00:00.000-0800 + // yyyy-MM-dd'T'HH:mm:ss.SSSZ 1970-01-01T00:00:00.000+0000 + //注:HH显示的是24小时制,hh显示的是12小时制 + + SimpleDateFormat dateFormatter = new SimpleDateFormat(DEFAULT_TIME_FORMAT); + String dateStr = dateFormatter.format(Calendar.getInstance().getTime());//获取当前时间 +// SimpleDateFormat dff = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS", Locale.ENGLISH);//输入的被转化的时间格式 +// SimpleDateFormat df1 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//需要转化成的时间格式 +// SimpleDateFormat df2 = new SimpleDateFormat("yyyyMMddHHmmssSSS"); + + return dateStr; + } + + public boolean isGPSFixed(){ + return (gpsp.getLocationStat() == ICLocation.LOCATION_STAT.LOCATION_FIXED); + } + + 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); + int loni=(int)gpsp.getLocation().lon; + int lonl=(int) ((gpsp.getLocation().lon - loni)*10000); + int speedi=(int)gpsp.getLocation().speed; + int speedl=(int) ((gpsp.getLocation().speed - speedi)*10); + + if (isGPSFixed()) + { + String gpsStr=String.format("%04d.%04dN%05d.%04dE%03d.%01d",lati,latl,loni,lonl,speedi,speedl); + sb.append("A").append(gpsStr); + }else{ + String gpsStr=String.format("%04d.%04dN%05d.%04dE%03d.%01d",0,0,0,0,0,0); + sb.append("V").append(gpsStr); + } + + + return sb.toString(); + } + + public String getGPSHeading(){ + int headingi=(int)gpsp.getLocation().heading; + int headingl=(int) ((gpsp.getLocation().heading - headingi)*100); + String gpsStr=String.format("%03d.%02d",headingi,headingl); + return gpsStr; + } + + public void setSignalStrength(int signal){ + ICLog.i("setSignalStrength "+signal); + } + + public void setMccAndMnc(String MccMnc){ + String [] list=MccMnc.split("@"); + if (list.length>=2){ + gpsp.setMCC(list[0]); + gpsp.setMNC(list[1]); + } + ICLog.i("setMccAndMnc "+MccMnc); + } + + public void setCdmaInfo(String cdma){ + ICLog.i("setCdmaInfo "+cdma); + } + + private String cellinfo; + public void setCurrentCellInfo(String _cellinfo){ + ICLog.i("setCurrentCellInfo "+_cellinfo); + cellinfo = _cellinfo; + } + + public String getCurrentCellInfo(){ + return cellinfo; + } + + 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(); + } + + public String getWifiData(){ + StringBuilder sb=new StringBuilder(); + + int i=0; + for (String mac : gpsp.getLBSdata().wifi_aps.keySet()){ + sb.append("AP").append(i).append("|").append(mac).append("|").append(gpsp.getLBSdata().wifi_aps.get(mac)).append(","); + i++; + } + if (i>0){ + int index=sb.lastIndexOf(","); + sb.replace(index,index+1,""); + } + return sb.toString(); + } + /* AP01 定位 end */ } diff --git a/app/src/main/java/com/ic/protocol/bean/location.java b/app/src/main/java/com/ic/protocol/bean/location.java deleted file mode 100644 index c905b32f..00000000 --- a/app/src/main/java/com/ic/protocol/bean/location.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ic.protocol.bean; - -public class location { - - private LOCATION_STAT currentStat; - private LocationPoint currentLP=new LocationPoint(); - public class LocationPoint{ - public double lat; - public double lon; - } - public enum LOCATION_STAT{ - LOCATION_SUCCESS, - LOCATION_GPS_FAILED, - LOCATION_WIFI_FAILED, - } - public LOCATION_STAT getLocationStat(){ - return currentStat; - } - - public LocationPoint getLocation(){ - return currentLP; - } - - public void setLocation(double lat,double lon){ - currentLP.lat=lat; - currentLP.lon=lon; - } -} diff --git a/app/src/main/java/com/ic/protocol/service/protocolMainServer.java b/app/src/main/java/com/ic/protocol/service/protocolMainServer.java index 024b8c8e..68aa148c 100644 --- a/app/src/main/java/com/ic/protocol/service/protocolMainServer.java +++ b/app/src/main/java/com/ic/protocol/service/protocolMainServer.java @@ -2,10 +2,12 @@ package com.ic.protocol.service; import android.app.Service; import android.content.Intent; +import android.net.wifi.WifiManager; import android.os.IBinder; import android.support.annotation.Nullable; import android.widget.Toast; +import com.ic.protocol.adapter.LBSHelper; import com.ic.protocol.adapter.protocolAPIHelper; import com.ic.protocol.bean.Config; import com.ic.protocol.bean.deviceStatus; @@ -42,6 +44,7 @@ public class protocolMainServer extends Service { private Toastc toast = null; private static protocolMainServer mProtocolServer=null; + private static LBSHelper lbshelper=null; public boolean isServerConnected(){ return (RxSocket.getInstance().getSocketStatus()==RxSocket.SocketStatus.CONNECTED)?true:false; @@ -146,11 +149,12 @@ public class protocolMainServer extends Service { private static boolean mCallStateIsIdle = true; // 非通话活动 private TelephonyManager telManager; private Timer mTimer_keepalive=null; - + private WifiManager mWifiManager=null; private Config mConfig=null; - private deviceStatus mDevStat=null; + private static deviceStatus mDevStat=null; private protocolAPIHelper mProtocolAPI=null; + private void log(String msg) { ICLog.log(TAG,msg); } @@ -193,8 +197,14 @@ public class protocolMainServer extends Service { private void init_protocols(){ if (mConfig == null) mConfig = new Config(); - if (mDevStat == null) mDevStat =new deviceStatus(); + if (mDevStat == null) { + mDevStat =new deviceStatus(); + log("new mDevStat"); + } if (mProtocolAPI == null) mProtocolAPI = new protocolAPIHelper(); + if (mWifiManager == null) mWifiManager = (WifiManager)this.getApplicationContext().getSystemService(Context.WIFI_SERVICE); + if (lbshelper==null) lbshelper = new LBSHelper(this,mWifiManager,mDevStat); + toast = new Toastc(this, Toast.LENGTH_SHORT); //监听Socket的收包 RxSocket.getInstance().read() @@ -239,6 +249,14 @@ public class protocolMainServer extends Service { } } + public class WifiInfolistener implements LBSHelper.OnWiFiInfoListener { + + @Override + public void getWifiInfoCallBack(String var1) { + + log("getWifiInfoCallBack "+var1); + } + } public void do_timer_task(){ if(!isServerConnected()) { @@ -258,6 +276,20 @@ public class protocolMainServer extends Service { log("do_timer_task send cmd "+ mProtocolAPI.AP03(mDevStat)); sendMsg(mProtocolAPI.AP03(mDevStat)); + lbshelper.setOnWiFiInfoListener(new WifiInfolistener()); + lbshelper.getWifiInfo(); + lbshelper.getCellInfo(this.telManager); + + log("do_timer_task send cmd "+ mProtocolAPI.AP01(mDevStat)); + + sendMsg(mProtocolAPI.AP01(mDevStat)); + + + } + + public void testGpsData(){ + mProtocolAPI.AP01(mDevStat); + log( mProtocolAPI.AP01(mDevStat)); } private void stopTimer(){ if (mTimer_keepalive !=null){ diff --git a/app/src/main/java/com/ic/protocol/utils/ICLog.java b/app/src/main/java/com/ic/protocol/utils/ICLog.java index 86d71531..551558cf 100644 --- a/app/src/main/java/com/ic/protocol/utils/ICLog.java +++ b/app/src/main/java/com/ic/protocol/utils/ICLog.java @@ -4,7 +4,50 @@ import android.util.Log; public class ICLog { private static final boolean DEBUG = true; //BuildConfig.DEBUG; + private static String getFunctionName() { + StackTraceElement[] currentStack = Thread.currentThread().getStackTrace(); + if (currentStack == null) { + return null; + } else { + int stackLen = currentStack.length; + for(int i = 0; i < stackLen; ++i) { + StackTraceElement stackElement = currentStack[i]; + if (!stackElement.isNativeMethod() && !stackElement.getClassName().equals(Thread.class.getName()) && !stackElement.getClassName().equals(ICLog.class.getName())) { + StringBuilder sb = new StringBuilder(); + sb.append("[ "); + sb.append(Thread.currentThread().getName()); + sb.append(": "); + sb.append(stackElement.getFileName()); + sb.append(":"); + sb.append(stackElement.getLineNumber()); + sb.append(" "); + sb.append(stackElement.getMethodName()); + sb.append(" ]"); + return sb.toString(); + } + } + + return null; + } + } + + public static void i(Object var0) { + if (DEBUG) { + String var1 = getFunctionName(); + if (var1 != null) { + StringBuilder sb = new StringBuilder(); + sb.append(var1); + sb.append(" - "); + sb.append(var0.toString()); + log("WatchService", sb.toString()); + return; + } + + log("WatchService", var0.toString()); + } + + } public static void log(String TAG, String msg) { if (DEBUG) { Log.i(TAG, msg);