return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP00)).append(ds.IMEI()).append(CMDEND).toString();\r
}\r
\r
+ //处理 登录 BP00\r
+ public void handleBP00(String cmd){\r
+ String[] msg=cmd.split(CMDSPLIT);\r
+// get Msg :IWBP00,20191229171933,8# (size)24\r
+// 12-30 01:19:33.861 6492-6492/com.ic.protocol I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 , IWBP00,20191229171933,8\r
+\r
+ if (msg.length>=3) {\r
+ log("handleBP00", "Set Datetime " + msg[1]);\r
+ log("handleBP00", "Set TimeZone " + msg[2]);\r
+ }else{\r
+ log("handleBP00","format Error");\r
+ }\r
+ }\r
+\r
+\r
public static String AP03(Runtime ds) {\r
//示例数据:IWAP03,06000908000102,5555,30# IWAP03,000000null00000,0,0#\r
return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP03)).append(CMDSPLIT).append(String.format("%03d",abs(ds.getSignalStrength())))\r
.append(ds.getProtection()).append(ds.getWorkMode()).append(CMDSPLIT)\r
.append(ds.getTotalStepCount()).append(CMDSPLIT).append(0/*rolltime*/).append(CMDEND).toString();\r
}\r
+ //处理 心跳 BP03\r
+ public void handleBP03(String cmd){\r
+ log("BP03心跳接收成功");\r
+ }\r
+\r
\r
public static String AP10(Runtime ds){\r
\r
.append(ds.getLBSData()).append(CMDSPLIT).append(ds.getWifiInfo()).append(CMDEND).toString();\r
}\r
\r
+ //处理 定位 BP01\r
+ public void handleBP01(String cmd){\r
+ log("BP01定位接收成功");\r
+ }\r
+\r
+\r
+\r
\r
public static String APXL(String id){\r
//设备响应: IWAPXL,080835#\r
Logger.i("BPXY format error!");\r
}\r
}\r
- /*语音下行反馈*/\r
- public static 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
- .append(CMDSPLIT).append(name)\r
- .append(CMDSPLIT).append(msg)\r
- .append(CMDSPLIT).append(packagecount)\r
- .append(CMDSPLIT).append(currentpackageindex)\r
- .append(CMDSPLIT).append(received_success)\r
- .append(CMDEND).toString();\r
- }\r
-\r
- public interface CmdHandler\r
- {\r
-\r
- boolean handleCmd(CMD_TYPE type, String cmd);\r
- boolean handleCmd(CMD_TYPE type, String cmd,byte[] bytes);\r
\r
- }\r
\r
\r
//重启\r
.append(CMDSPLIT).append(index)\r
.append(CMDEND).toString();\r
}\r
+\r
public void handleBP18(Connection connection,String cmd) {\r
\r
// IWBP18,867155030001063,161723\r
}\r
//恢复出厂设置\r
\r
-\r
public static String AP17(String index){\r
return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP17))\r
.append(CMDSPLIT).append(index)\r
.append(CMDSPLIT).append(phnumbs[9])\r
.append(CMDEND).toString();\r
}\r
-//设置通讯录,白名单\r
+//设置通讯录,白名单(10个)\r
public void handleBP14(Connection connection,String cmd){\r
// IWBP14,867155030001063,357444,9b44529b|13554820016,,,,,,,,,\r
/**\r
- * IWBP14,353456789012345,080835,D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx#\r
+ * IWBP14,353456789012345,080835,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx,\r
+ * D3590D54|135xxxxxxxxxx#\r
*/\r
String[] cmdlist=cmd.split(CMDSPLIT);\r
String[] phnums=new String[]{"","","","","","","","","",""};\r
\r
}\r
\r
+\r
+\r
+ public static String AP85(Runtime ds,String cmddata){\r
+//示例数据:IWAP49,68##\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
+ .append(CMDSPLIT).append(cmddata)\r
+ .append(CMDEND).toString();\r
+\r
+ }\r
//设置闹钟\r
public void handleBP85(String cmd , Connection connection,Runtime runtime){\r
// IWBP85,867155030001063,155312,1,1,0235,12,1,1\r
}\r
\r
\r
+// AP05命令L02服务器不适用\r
+// public static String AP05(boolean recvFlag){\r
+//\r
+//// IWAP05,1#\r
+// return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP05))\r
+// .append(CMDSPLIT).append(recvFlag?1:0)\r
+// .append(CMDEND).toString();\r
+//\r
+// }\r
+//\r
+//\r
+// public void handleBP05(String cmd){\r
+//// IWBP05,6#\r
+// String[] cmdlist=cmd.split(CMDSPLIT);\r
+// if (cmdlist.length>1){\r
+// Logger.i(" 服务器有 " +cmdlist[1]+" 条语音未接收!");\r
+// }\r
+// }\r
\r
- public static String AP05(boolean recvFlag){\r
-\r
-// IWAP05,1#\r
- return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP05))\r
- .append(CMDSPLIT).append(recvFlag?1:0)\r
- .append(CMDEND).toString();\r
\r
- }\r
\r
\r
- public void handleBP05(String cmd){\r
-// IWBP05,6#\r
- String[] cmdlist=cmd.split(CMDSPLIT);\r
- if (cmdlist.length>1){\r
- Logger.i(" 服务器有 " +cmdlist[1]+" 条语音未接收!");\r
- }\r
- }\r
- public static String AP85(Runtime ds,String cmddata){\r
-//示例数据:IWAP49,68##\r
- return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP85))\r
- .append(CMDSPLIT).append(cmddata)\r
+ public static String AP33(String cmdindex,int workMode){\r
+//IWAP33,080835,1#\r
+//080835:指令流水号\r
+//1:设置信息,供服务器同步\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
+ .append(CMDSPLIT).append(cmdindex)\r
+ .append(CMDSPLIT).append(workMode)\r
.append(CMDEND).toString();\r
-\r
}\r
\r
//设置工作模式\r
}\r
\r
}\r
- public static String AP33(String cmdindex,int workMode){\r
-//IWAP33,080835,1#\r
-//080835:指令流水号\r
-//1:设置信息,供服务器同步\r
- return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP33))\r
- .append(CMDSPLIT).append(cmdindex)\r
- .append(CMDSPLIT).append(workMode)\r
- .append(CMDEND).toString();\r
- }\r
+\r
\r
\r
/**\r
\r
}\r
\r
+\r
+\r
+\r
/**\r
* 返回上传心率血压的协议字串\r
* @param ds\r
.append(CMDEND).toString();\r
}\r
\r
+\r
+ //立即定位反馈\r
+ public static String AP16(String cmdindex){\r
+//IWAP16,080835#\r
+//080835:指令流水号\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
+ .append(CMDSPLIT).append(cmdindex)\r
+ .append(CMDEND).toString();\r
+ }\r
// 立即定位指令(长链接有效)\r
public void handleBP16(Connection connection,Runtime runtime,String cmd){\r
//示例数据:IWBP16,867155030001063,335386\r
log("error BP16 format");\r
}\r
}\r
- //立即定位反馈\r
- public static String AP16(String cmdindex){\r
-//IWAP16,080835#\r
-//080835:指令流水号\r
- return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP16))\r
- .append(CMDSPLIT).append(cmdindex)\r
- .append(CMDEND).toString();\r
- }\r
+\r
\r
/*通过基站获取时间和坐标*/\r
public static String APTM(Runtime ds){\r
//示例数据:IWAPTM,460,0,9750,3613#\r
+ //说明:\r
+ //IW:标识符\r
+ //APTM : 命令字符\r
+ //460:MCC\r
+ //0: MNC\r
+ //9750: LAC\r
+ //3613: CID\r
+\r
return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APTM))\r
- .append(CMDSPLIT).append("460")\r
- .append(CMDSPLIT).append("0")\r
- .append(CMDSPLIT).append("9750")\r
- .append(CMDSPLIT).append("3613")\r
+ .append(CMDSPLIT).append(ds.getLocationInstance().getMCC())\r
+ .append(CMDSPLIT).append(ds.getLocationInstance().getMNC())\r
+ .append(CMDSPLIT).append(ds.getLocationInstance().getLAC())\r
+ .append(CMDSPLIT).append(ds.getLocationInstance().getGSMStationCID())\r
.append(CMDEND).toString();\r
\r
}\r
- //处理 登录 BP00\r
- public void handleBP00(String cmd){\r
- String[] msg=cmd.split(CMDSPLIT);\r
-// get Msg :IWBP00,20191229171933,8# (size)24\r
-// 12-30 01:19:33.861 6492-6492/com.ic.protocol I/ICSrv.protocolAPIHelper: found cmd keyid=BP00 ,keyname=BP00 , IWBP00,20191229171933,8\r
\r
- if (msg.length>=3) {\r
- log("handleBP00", "Set Datetime " + msg[1]);\r
- log("handleBP00", "Set TimeZone " + msg[2]);\r
- }else{\r
- log("handleBP00","format Error");\r
- }\r
- }\r
+ public void handleBPTM(String cmd){\r
+ //平台响应: IWBPTM,20160225090909,22.123456,113.654321#\r
+ //返回时间,格式为:yyyyMMddHHmmss ,为UTC0 时间\r
+ //经纬度保留六位小数,若没取到则返回 0\r
+ String[] list=cmd.split(CMDSPLIT);\r
\r
- //设置联系人白名单(10个)\r
- private void handleBP14(String cmd){\r
- //IWBP14,353456789012345,080835,D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx,\r
- // D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx,\r
- // D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx, D3590D54|135xxxxxxxxxx#\r
- //D3590D54|135xxxxxxxxxx : 一组联系人,使用|分隔名称和电话号码名称使用UNICODE编码直接下发byte,多组之间使用逗号分隔,未填写的可为空,但位置仍需保留\r
+ if(list.length==4){\r
\r
+ String time=list[1];\r
+ String lat=list[2];\r
+ String lon=list[3];\r
+ Logger.i("BPTM , time="+time+", lat="+lat+", lon="+lon);\r
+ }else{\r
+ Logger.i("BPTM format error");\r
+ }\r
\r
\r
}\r
\r
+public static String AP15(String index){\r
+//IWAP15, 080835#\r
+//080835:指令流水号\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP15))\r
+ .append(CMDSPLIT).append(index)\r
+ .append(CMDEND).toString();\r
+}\r
+\r
//设置定位周期\r
- public void handleBP15(String cmd){\r
+ public void handleBP15(String cmd ,Connection connection,Runtime runtime){\r
// IWBP15, 353456789012345, 080835, 30#\r
// 353456789012345:IMEI号,设备唯一ID\r
// 080835 :指令流水号\r
// 30: 表示频率为30分钟\r
\r
+ String[] list=cmd.split(CMDSPLIT);\r
+\r
+ if(list.length==4){\r
+ String index=list[2];\r
+ String time=list[3];\r
+ connection.send(protocolAPIHelper.genStringMessage("AP15",AP15(index)));\r
+ Logger.i("BP15 , 定位周期="+time+"分钟");\r
+ }else{\r
+ Logger.i("BP15 format error");\r
+ }\r
+\r
}\r
\r
\r
\r
- //处理 定位 BP01\r
- public void handleBP01(String cmd){\r
- log("BP01定位接收成功");\r
- }\r
\r
- //处理 心跳 BP03\r
- public void handleBP03(String cmd){\r
- log("BP03心跳接收成功");\r
- }\r
\r
\r
+ /*语音下行反馈*/\r
+ public static 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
+ .append(CMDSPLIT).append(name)\r
+ .append(CMDSPLIT).append(msg)\r
+ .append(CMDSPLIT).append(packagecount)\r
+ .append(CMDSPLIT).append(currentpackageindex)\r
+ .append(CMDSPLIT).append(received_success)\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
//处理 BP28 语音消息\r
public void handleBP28(Connection connection,String cmd,byte[] bytes) {\r
//log("handleBP28 msg"+cmd);\r
}\r
\r
\r
+ //白名单开关(下行协议号:BP84,响应:AP84)\r
+ public static String AP84(String index,int success){\r
\r
- public static String formatLat(double paramDouble) {\r
- if (paramDouble >= 0.0D) {\r
- StringBuilder stringBuilder1 = new StringBuilder();\r
- stringBuilder1.append("N");\r
- stringBuilder1.append(paramDouble);\r
- return stringBuilder1.toString();\r
- }\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("S");\r
- stringBuilder.append(-paramDouble);\r
- return stringBuilder.toString();\r
- }\r
-\r
- public static String formatLng(double paramDouble) {\r
- if (paramDouble >= 0.0D) {\r
- StringBuilder stringBuilder1 = new StringBuilder();\r
- stringBuilder1.append("E");\r
- stringBuilder1.append(paramDouble);\r
- return stringBuilder1.toString();\r
+ //设备响应: IWAP80,080835,1#\r
+ //080835:指令流水号\r
+ //1:表示设备执行成功,0 表示设备执行失败\r
+ return new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.AP84))\r
+ .append(CMDSPLIT).append(index)\r
+ .append(CMDSPLIT).append(success)\r
+ .append(CMDEND).toString();\r
+ }\r
+\r
+ public void handleBP84(String cmd,Connection connection){\r
+//示例:\r
+ //IWBP84,353456789012345,080835,1#\r
+ //说明:\r
+ //IW:标识符\r
+ //BP84 : 命令字符\r
+ //353456789012345:IMEI号,设备唯一ID\r
+ //080835 :指令流水号\r
+ //1: 表示白名单开,0 表示白名单关\r
+ String[] list=cmd.split(CMDSPLIT);\r
+\r
+ if (list.length==4){\r
+ String index=list[2];\r
+ String whitelist_switch=list[3];\r
+ connection.send(protocolAPIHelper.genStringMessage("AP84",AP84(index,1)));\r
+ Logger.i("收到服务器指令:白名单"+(whitelist_switch.equals("1")?"开":"关"));\r
+ }else{\r
+\r
+ Logger.i("BP84 format error!");\r
}\r
- StringBuilder stringBuilder = new StringBuilder();\r
- stringBuilder.append("W");\r
- stringBuilder.append(-paramDouble);\r
- return stringBuilder.toString();\r
+\r
}\r
+\r
+ public interface CmdHandler\r
+ {\r
+\r
+ boolean handleCmd(CMD_TYPE type, String cmd);\r
+ boolean handleCmd(CMD_TYPE type, String cmd,byte[] bytes);\r
+\r
+ }\r
+\r
}\r
import android.net.Uri;\r
import android.net.wifi.WifiManager;\r
import android.os.Build;\r
+import android.os.Environment;\r
import android.os.PowerManager;\r
import android.telephony.TelephonyManager;\r
+import android.util.Log;\r
\r
\r
import com.ic.protocol.ICContentProvider;\r
import com.ic.protocol.bean.Silent;\r
import com.ic.protocol.bean.Runtime;\r
\r
+import java.lang.reflect.Method;\r
import java.util.ArrayList;\r
import java.util.Calendar;\r
import java.util.Iterator;\r
this.wifiManager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);\r
this.sensorManager = (SensorManager)context.getSystemService(Context.SENSOR_SERVICE);\r
}\r
- \r
- private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, int paramInt) {\r
- StringBuilder stringBuilder = new StringBuilder("silent:");\r
- stringBuilder.append(paramString1);\r
- stringBuilder.append(",");\r
- stringBuilder.append(paramString2);\r
- stringBuilder.append(",");\r
- stringBuilder.append(paramString3);\r
- stringBuilder.append(",");\r
- stringBuilder.append(paramInt);\r
- paramString1 = stringBuilder.toString();\r
- Intent intent = new Intent(this.context, com.ic.protocol.service.protocolMainServer.class);\r
- intent.setAction("com.enqualcomm.icare.ACTION_ISSILENCE");\r
- intent.putExtra("SilentData", paramString1);\r
- return PendingIntent.getService(this.context, 0, intent, FLAG_UPDATE_CURRENT);\r
- }\r
+\r
\r
private PendingIntent getPendingIntent(String paramString1, String paramString2, String paramString3, String paramString4, int paramInt) {\r
StringBuilder stringBuilder = new StringBuilder("alarm:");\r
\r
public WifiManager getWifiManager() { return this.wifiManager; }\r
\r
- public void reboot() {\r
- PowerManager powerManager = (PowerManager)this.context.getSystemService(Context.POWER_SERVICE);\r
- try {\r
- powerManager.reboot("remote reboot");\r
- Logger.i("命令重启");\r
- return;\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
- return;\r
- } \r
- }\r
- \r
+\r
public void resolverAlarm(ArrayList<Alarm> paramArrayList) {\r
Cursor cursor = this.context.getContentResolver().query(ICContentProvider.ALARM_URI, null, null, null, null);\r
char c = '\001';\r
}\r
}\r
}\r
- \r
- public void resolverSilent(ArrayList<Silent> paramArrayList) {\r
- Calendar calendar1 = Calendar.getInstance();\r
- calendar1.set(Calendar.SECOND, 0);\r
- Calendar calendar2 = Calendar.getInstance();\r
- calendar2.set(Calendar.SECOND, 0);\r
- long l = System.currentTimeMillis();\r
- Cursor cursor = this.context.getContentResolver().query(ICContentProvider.SILENT_URI, null, null, null, null);\r
- char c = '\013';\r
- int j = 5;\r
- int k = 4;\r
- if (cursor != null) {\r
- char c1 = Character.MIN_VALUE;\r
- while (cursor.moveToNext()) {\r
- if ("ON".equals(cursor.getString(k))) {\r
- String str1 = cursor.getString(1);\r
- String str2 = cursor.getString(2);\r
- String str3 = cursor.getString(3);\r
- if (!(c1==Character.MIN_VALUE)) {\r
- int n = Integer.parseInt(str1.substring(2, k));\r
- int i1 = Integer.parseInt(str1.substring(j, 7));\r
- calendar1.set(c, n);\r
- calendar1.set(Calendar.MINUTE, i1);\r
- n = Integer.parseInt(str2.substring(2, k));\r
- i1 = Integer.parseInt(str2.substring(j, 7));\r
- calendar2.set(c, n);\r
- calendar2.set(Calendar.MINUTE, i1);\r
- }\r
- char[] arrayOfChar = str3.toCharArray();\r
- int m = arrayOfChar.length;\r
- byte b = 1;\r
- char c2 = (char)k;\r
- k = j;\r
- j = c;\r
- while (b < m) {\r
- j = arrayOfChar[b] - '/';\r
- this.alarmManager.cancel(getPendingIntent(str1, str2, str3, j));\r
- c = c1;\r
- if (c1 == Character.MIN_VALUE) {\r
- calendar1.set(Calendar.DAY_OF_WEEK, j);\r
- long l1 = calendar1.getTimeInMillis();\r
- calendar2.set(Calendar.DAY_OF_WEEK, j);\r
- long l2 = calendar2.getTimeInMillis();\r
- c = c1;\r
- if (l1 <= l) {\r
- c = c1;\r
- if (l2 > l)\r
- c = '\001';\r
- }\r
- }\r
- b++;\r
- j = 11;\r
- k = 5;\r
- c2 = '\004';\r
- c1 = c;\r
- }\r
- c = (char)j;\r
- j = k;\r
- k = c2;\r
- }\r
- }\r
- cursor.close();\r
- c = c1;\r
- } else {\r
- c = Character.MIN_VALUE;\r
- }\r
- Iterator iterator = paramArrayList.iterator();\r
- int i;\r
- for (i = 0; iterator.hasNext(); i = k) {\r
- Silent silent = (Silent)iterator.next();\r
- k = i;\r
- if ("ON".equals(silent.status)) {\r
- j = Integer.parseInt(silent.start.substring(2, 4));\r
- k = Integer.parseInt(silent.start.substring(5, 7));\r
- calendar1.set(Calendar.HOUR_OF_DAY, j);\r
- calendar1.set(Calendar.MINUTE, k);\r
- j = Integer.parseInt(silent.end.substring(2, 4));\r
- k = Integer.parseInt(silent.end.substring(5, 7));\r
- calendar2.set(Calendar.HOUR_OF_DAY, j);\r
- calendar2.set(Calendar.MINUTE, k);\r
- char[] arrayOfChar = silent.week.toCharArray();\r
- int m = arrayOfChar.length;\r
- j = 1;\r
- while (true) {\r
- k = i;\r
- if (j < m) {\r
- k = arrayOfChar[j] - '/';\r
- calendar1.set(Calendar.DAY_OF_WEEK, k);\r
- long l1 = calendar1.getTimeInMillis();\r
- calendar2.set(Calendar.DAY_OF_WEEK, k);\r
- long l2 = calendar2.getTimeInMillis();\r
- if (l1 <= l)\r
- if (l2 <= l) {\r
- l1 += 604800000L;\r
- } else {\r
- i = 1;\r
- }\r
- PendingIntent pendingIntent = getPendingIntent(silent.start, silent.end, silent.week, k);\r
- AlarmHelper.setAlarm(this.alarmManager, l1, pendingIntent);\r
- j++;\r
- continue;\r
- }\r
- break;\r
- }\r
- }\r
- }\r
- if (c != '\000' && i == 0) {\r
- Intent intent = new Intent(this.context, com.ic.protocol.service.protocolMainServer.class);\r
- intent.setAction("com.enqualcomm.icare.ACTION_ISSILENCE");\r
- intent.putExtra("SilentData", "silent:cancel");\r
- this.context.startService(intent);\r
- }\r
- }\r
+\r
\r
public void sendBroadcast(String cmd, Runtime dev) {\r
Intent intent = new Intent();\r
intent.putExtra("stheartRateType", paramInt);\r
this.context.sendBroadcast(intent, "com.eqc.broadcast.permission");\r
}\r
- \r
- public void shutdown() {\r
- String str = Build.VERSION.RELEASE;\r
- try {\r
- Object object = Class.forName("android.os.ServiceManager").getMethod("getService", new Class[] { String.class }).invoke(null, new Object[] { "power" });\r
- object = Class.forName("android.os.IPowerManager$Stub").getMethod("asInterface", new Class[] { android.os.IBinder.class }).invoke(null, new Object[] { object });\r
- if (str.contains("7.0")) {\r
- object.getClass().getMethod("shutdown", new Class[] { boolean.class, String.class, boolean.class }).invoke(object, new Object[] { Boolean.valueOf(false), null, Boolean.valueOf(true) });\r
- return;\r
- } \r
- object.getClass().getMethod("shutdown", new Class[] { boolean.class, boolean.class }).invoke(object, new Object[] { Boolean.valueOf(false), Boolean.valueOf(true) });\r
-\r
- } catch (Exception e) {\r
- e.printStackTrace();\r
\r
- } \r
- }\r
- \r
- public void startSearchActivity() {\r
+ public void reboot() {\r
+ PowerManager powerManager = (PowerManager)this.context.getSystemService(Context.POWER_SERVICE);\r
try {\r
- Intent intent = new Intent("com.enqualcomm.icare.SEARCH");\r
- intent.setFlags(FLAG_ACTIVITY_NEW_TASK);\r
- this.context.startActivity(intent);\r
+ powerManager.reboot("remote reboot");\r
+ Logger.i("命令重启");\r
return;\r
} catch (Exception e) {\r
e.printStackTrace();\r
return;\r
- } \r
+ }\r
}\r
+\r
+\r
+ public void shutdown() {\r
+ try {\r
+\r
+ //获得ServiceManager类\r
+ Class ServiceManager = Class\r
+ .forName("android.os.ServiceManager");\r
+\r
+ //获得ServiceManager的getService方法\r
+ Method getService = ServiceManager.getMethod("getService", java.lang.String.class);\r
+\r
+ //调用getService获取RemoteService\r
+ Object oRemoteService = getService.invoke(null, Context.POWER_SERVICE);\r
+\r
+ //获得IPowerManager.Stub类\r
+ Class cStub = Class\r
+ .forName("android.os.IPowerManager$Stub");\r
+ //获得asInterface方法\r
+ Method asInterface = cStub.getMethod("asInterface", android.os.IBinder.class);\r
+ //调用asInterface方法获取IPowerManager对象\r
+ Object oIPowerManager = asInterface.invoke(null, oRemoteService);\r
+ //获得shutdown()方法\r
+ Method shutdown = oIPowerManager.getClass().getMethod("shutdown",boolean.class,boolean.class);\r
+ //调用shutdown()方法\r
+ shutdown.invoke(oIPowerManager,false,true);\r
+\r
+ } catch (Exception e) {\r
+ e.printStackTrace();\r
+ }\r
+ }\r
+\r
+ public static final String ACTION_MASTER_CLEAR = "android.intent.action.MASTER_CLEAR";\r
+ public static final String EXTRA_REASON = "android.intent.extra.REASON";\r
+ public static final String EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE";\r
+\r
+ public void doMasterClear() {\r
+ Intent intent = new Intent(ACTION_MASTER_CLEAR);\r
+ intent.setPackage("android");\r
+ intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);\r
+ intent.putExtra(EXTRA_REASON, "MasterClearConfirm");\r
+ if (Environment.isExternalStorageRemovable()) {\r
+ intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, true);\r
+ }else\r
+ {\r
+ intent.putExtra(EXTRA_WIPE_EXTERNAL_STORAGE, false);\r
+ }\r
+ this.context.sendBroadcast(intent);\r
+ }\r
+\r
}\r
\r
\r