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