import org.json.JSONStringer;\r
\r
import java.io.File;\r
+import java.util.ArrayList;\r
+import java.util.HashMap;\r
+import java.util.Map;\r
import java.util.concurrent.TimeUnit;\r
\r
import static com.enqualcomm.support.utils.Util.connectWifiByReflectMethod;\r
return Util.getSystemPropertiesInt("persist.sys."+Constants.SHAREKEY_SETTING_SLEEP_SCORE,0);\r
\r
}\r
+\r
+ public static boolean enableSleep=false;\r
/**\r
* 参考数据,平均每分钟步数来判断,大于 KeepSitJudgementRefValue 认为没有坐着。小于等于这个值认为坐着。\r
*/\r
public static int KeepSitJudgementRefValue=30;\r
+\r
+ /***\r
+ * persist.sys.alarmConfig=ALARM_SOS,ALARM_LOWBATTERY,ALARM_ANTIOFF,ALARM_WEARED,ALARM_CUTOFF,ALARM_FALL,ALARM_ABNORMAL_HEART_RATE,ALARM_HEART_RATE_HIGH,ALARM_HEART_RATE_LOW,ALARM_BPH_HIGH,ALARM_BPH_LOW,ALARM_BPL_HIGH,ALARM_BPL_LOW,ALARM_SEDENTARY,ALARM_ILLEGAL_CUTOFF,ALARM_LOCK_WATCH,ALARM_TEMP_HIGH,ALARM_TEMP_LOW,ALARM_POWER_OFF,ALARM_ESCAPE,ALARM_NONE\r
+ * 配在里面的表示开启,没配的表示关闭。 默认ALARM_SOS,ALARM_LOWBATTERY,ALARM_POWER_OFF开启\r
+ * ALARM_ILLEGAL_CUTOFF,ALARM_FALL,ALARM_ABNORMAL_HEART_RATE 没有使用,设置了也没有用\r
+ */\r
+ public static void loadAlarmConfig(){\r
+ String configvalues=Util.getSystemProperties("persist.sys.alarmConfig","");\r
+ String[] values=configvalues.split(",");\r
+ if (values.length>0){\r
+ for (int i=0; i< values.length;i++)\r
+ {\r
+ for (Runtime.AlarmType at: Runtime.AlarmType.values()) {\r
+ if (values[i].trim().equals(at.name())){\r
+ ConfigAlarm(at,true);\r
+ break;\r
+ }\r
+ }\r
+ }\r
+ }\r
+ dumpAlarmConfig();\r
+ }\r
+\r
+ public static void ConfigAlarm(Runtime.AlarmType alarmType,boolean enabled){\r
+ AlarmConfiglist.put(alarmType.ordinal(),enabled);\r
+ }\r
+ private static void dumpAlarmConfig(){\r
+ for (int i=0;i<AlarmConfiglist.size();i++) {\r
+ ICLogger.i(Runtime.AlarmType.values()[i].name()+" "+AlarmConfiglist.get(i));\r
+ }\r
+ }\r
+ private static HashMap<Integer,Boolean> AlarmConfiglist;\r
+ static {\r
+ AlarmConfiglist=new HashMap<Integer,Boolean>();\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_SOS.ordinal(),true);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_LOWBATTERY.ordinal(),true);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_ANTIOFF.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_WEARED.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_CUTOFF.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_FALL.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_ABNORMAL_HEART_RATE.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_HEART_RATE_HIGH.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_HEART_RATE_LOW.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPH_HIGH.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPH_LOW.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPL_HIGH.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_BPL_LOW.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_SEDENTARY.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_LOCK_WATCH.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_TEMP_HIGH.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_TEMP_LOW.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_POWER_OFF.ordinal(),true);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_ESCAPE.ordinal(),false);\r
+ AlarmConfiglist.put(Runtime.AlarmType.ALARM_NONE.ordinal(),false);\r
+ }\r
+\r
+ public static boolean isAlarmTypeEnabled(Runtime.AlarmType alarmType){\r
+\r
+ boolean en=false;\r
+ if (AlarmConfiglist.containsKey(alarmType)){\r
+ en=AlarmConfiglist.get(alarmType);\r
+ }\r
+ return en;\r
+ }\r
+\r
}\r
\r
Config.setPPGTestCycle(this, 60);\r
Config.setTemperatureTestCycle(runtime, 60 * 60);\r
Config.setConfigInitFlag(this, 1);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_ANTIOFF,true);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_WEARED,true);\r
}\r
}else if (Config.custom_branch_name.equals("l004")) {\r
if (Config.getConfigInitFlag(this) == 0) {\r
Config.setPPGTestCycle(this, 0);\r
Config.setTemperatureTestCycle(runtime, 0);\r
Config.setConfigInitFlag(this, 1);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF,true);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF,true);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH,true);\r
}\r
}else if (Config.custom_branch_name.equals("AK")) {\r
if (Config.getConfigInitFlag(this)==0) {\r
Config.setPPGTestCycle(this, 0);\r
Config.setTemperatureTestCycle(runtime, 0);\r
Config.setConfigInitFlag(this, 1);\r
+ Config.enableSleep=true;\r
// int contactcount=runtime.getDbHelper().getContactCount(getContentResolver());\r
// ICLogger.i("=====Contact count "+contactcount);\r
// if(contactcount==0){ //如果没有SOS\r
// runtime.getDbHelper().saveContacts(contactArray,false,false,false,false,false,true);\r
// }\r
}\r
- }else if (Config.custom_branch_name.equals("SGL")) {\r
+ }else if (Config.custom_branch_name.equals("SGL")) { //C5项目\r
if (Config.getConfigInitFlag(this)==0) {\r
Config.setLocationMode(this, CUSTOM_MOD8_GPS);\r
Config.setLocationCycle(this, 1800);\r
Config.setPPGTestCycle(this, 0);\r
Config.setTemperatureTestCycle(runtime, 0);\r
Config.setConfigInitFlag(this, 1);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_ESCAPE,true);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_CUTOFF,true);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_ILLEGAL_CUTOFF,true);\r
+ Config.ConfigAlarm(Runtime.AlarmType.ALARM_LOCK_WATCH,true);\r
// int contactcount=runtime.getDbHelper().getContactCount(getContentResolver());\r
// ICLogger.i("=====Contact count "+contactcount);\r
// if(contactcount==0){ //如果没有SOS\r
Config.loadCustomServerAddr(this);\r
Config.loadServerSettings(runtime);\r
\r
+ //读取Alarm环境配置,项目不需要的Alarm不要发送, 目前环境变量配置优先。默认值会被覆盖。\r
+ Config.loadAlarmConfig();\r
+\r
Config.enable_NTP_Server(this,!Config.disable_ntp_server);\r
\r
\r
//提醒后 重置 lastCheckSitTime 以及 lastSitCheckStepCount , 重新计时\r
Runtime.lastSitCheckStepCount=runtime.getTotalStepCount();\r
Runtime.lastSitCheckTiimeyyyyMMddHHmmss=TimeUtil.getSystemTime3();\r
+\r
+ if(Config.isAlarmTypeEnabled(Runtime.AlarmType.ALARM_SEDENTARY)){\r
+ runtime.setAlarmType(Runtime.AlarmType.ALARM_SEDENTARY);\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
}else{\r
//只要 平均每分钟活动数大于参考值,则重置 lastCheckSitTime 以及 lastSitCheckStepCount\r
ICLogger.i("SitCheck 平均每分钟活动数大于参考值,则重置 lastCheckSitTime 以及 lastSitCheckStepCount");\r
+ " light " + si.getLightsleep_minutes()\r
+ " score " + si.getScore()\r
);\r
- Deliver.sendLocationMSG(protocolAPIHelper.getSleepMSG(SleepInfo.getInstance(),runtime));\r
+ if (Config.enableSleep) {\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getSleepMSG(SleepInfo.getInstance(), runtime));\r
+ }else{\r
+ ICLogger.i(" 没有开启睡眠协议,skip send message!");\r
+ }\r
// }\r
// });\r
\r
cycle=runtime.getLocationInstance().getLocation_cycle();\r
break;\r
}\r
-\r
+ if(cycle == 0)\r
+ {\r
+ ICLogger.i("locationCycle == 0 stop Location !");\r
+ Config.noLocationCycle=true;\r
+ }\r
if (Config.noLocationCycle==false)\r
AlarmHelper.setRealTimeAlarmInSeconds(runtime.getContextProxy().context,cycle, ACTION_LOCATION_ALARM);\r
else\r
cell_number_to_reply=phonenumber;\r
broadCastStartFotaUpdate(mContext);\r
sendSMS(phonenumber, "start fota update !");\r
+ } else if (sms.equals(ENCRYPED_HEADER+"#FotaUpdateWiFi#=")){\r
+ String tmp[] = sms.split("=");\r
+ if (tmp.length == 2) {\r
+ String tmplist[]=tmp[1].split(",");\r
+ if (tmplist.length==3){\r
+\r
+ String SSID=tmplist[0];\r
+ String PWD=tmplist[1];\r
+ String encyptType=tmplist[2];\r
+ Config.setWiFiSSID(mContext,SSID);\r
+ Config.setWiFiPasswd(mContext,PWD);\r
+ runtime.setNoTurnOffOnScreenOff(true);\r
+ StringBuilder sb=new StringBuilder();\r
+ if ( !Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)){\r
+ Util.turnOnWifiForConnect(runtime.getContextProxy().context,runtime);\r
+ }\r
+ sb.append("connect to Wifi SSID " + Config.getWiFiSSID(mContext) +", WiFiPassword "+Config.getWiFiPasswd(mContext)+ ", encryptType "+encyptType+"!");\r
+ sb.append(" And start to Update");\r
+ cell_number_to_reply=phonenumber;\r
+ sendSMS(phonenumber, sb.toString());\r
+ //connect to wifi\r
+ new Handler().postDelayed(new Runnable() {\r
+ @Override\r
+ public void run() {\r
+ Deliver.connectToWifi(SSID,PWD,encyptType);\r
+ broadCastStartFotaUpdate(mContext);\r
+ }\r
+ }, 500);\r
+ }else {\r
+ sendSMS(phonenumber, "FotaUpdateWiFi Control format error!");\r
+ }\r
+ } else {\r
+ sendSMS(phonenumber, "FotaUpdateWiFi Control format error!");\r
+ }\r
+\r
\r
}else if (sms.startsWith(ENCRYPED_HEADER+"#nolocationcycle#=")&& sms.endsWith("#")) {\r
String tmp[] = sms.split("=");\r
import static com.enqualcomm.support.Config.WiFiLocationTimeoutInSeconds;\r
import static com.enqualcomm.support.Constants.ACTION_CHECK_LOCATION_RESULT;\r
\r
+/***\r
+ * 周期定位:按周期进行,如果正在定位,则skip此次定位。\r
+ * 强制定位:随机根据指令执行,如果正在定位,强制停止当前定位,立即执行新的定位。\r
+ * 1、模式1 WiFi+LBS定位、15分钟一次,WiFi扫描3次如果都没有结果,20秒内返回LBS定位\r
+ * 2、模式2 WiFi+LBS模式,1小时1一次,WiFi扫描3次如果都没有结果,20秒内返回LBS定位\r
+ * 3、模式3 GPS定位模式,1分钟一次定位,GPS常开,超时返回WiFi定位。GPS 15秒内信号很差的话会提前关闭,返回wifi+LBS定位。\r
+ * 4、模式4 GPS定位模式,1分钟定位一次,GPS常开,超时返回WiFi定位,GPS 15秒内信号很差的话会提前关闭,返回wifi+LBS定位。5分钟后自动工作在模式1上。\r
+ * 5、模式5、8 GPS定位模式,客户自定义定位时间, 1分钟以内含1分钟,GPS常开,超时返回WiFi+LBS定位,1分钟以上的,GPS超2分钟时会关闭,GPS 15秒内信号很差的话也会提前关闭,返回wifi+LBS定位。\r
+ * 6、模式9 WiFi模式,客户自定义定位时间,WiFi扫描3次如果都没有结果,20秒内返回LBS定位\r
+ * 7、即时定位返回当前模式的定位方式,会强制进行定位。\r
+ * 8、每次切换定位模式,会执行一次强制定位。\r
+ */\r
public class LocationClient {\r
private static final String TAG = LocationClient.class.getSimpleName();\r
private static final long CHANGENETMODETIME = 43200000L;\r
import android.content.Context;\r
import android.support.constraint.solver.widgets.Helper;\r
\r
+import com.enqualcomm.support.Config;\r
import com.enqualcomm.support.adapter.LBSHelper;\r
import com.enqualcomm.support.utils.ContextProxy;\r
import com.enqualcomm.support.utils.DBHelper;\r
* 07:心率异常, 08:心率过高, 09:心率过低,10:收缩压过高,11:收缩压过低,12:舒张压过高,13:舒张压过低,\r
* 14:久坐提醒,15:非法解锁(剪断报警),16:锁定提醒(佩戴提醒),17:体温过高,18体温过低) 19 关机事件(非服务器指令关机), 20,escape逃跑事件(离开蓝牙管控范围)\r
*/\r
- public void setAlarmType(AlarmType alarm){\r
+ public boolean setAlarmType(AlarmType alarm){\r
// if ( !fall && !lowbattery && !sos && antioff)\r
g_alarm=alarm;\r
\r
+ if (Config.isAlarmTypeEnabled(alarm) == false){\r
+ ICLogger.i(alarm.name()+" is disabled, skip!");\r
+ return false;\r
+ }\r
//同时更新防走丢设备状态标志\r
setFZDDevStatus(alarm);\r
\r
alarmType="00";\r
break;\r
}\r
-\r
+ return true;\r
}\r
\r
\r
send_cutoff_event_broadcast(0);\r
}\r
mRuntime.Cut_off_flag = 0;\r
- mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOCK_WATCH);\r
- StringMessage msg = protocolAPIHelper.getWarningMSG(mRuntime);\r
- Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ if(mRuntime.setAlarmType(Runtime.AlarmType.ALARM_LOCK_WATCH)) {\r
+ StringMessage msg = protocolAPIHelper.getWarningMSG(mRuntime);\r
+ Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ }\r
\r
// try {\r
// sleep(1000);\r
send_cutoff_event_broadcast(1);\r
}\r
mRuntime.Cut_off_flag=1;\r
- mRuntime.setAlarmType(Runtime.AlarmType.ALARM_CUTOFF);\r
- StringMessage msg=protocolAPIHelper.getWarningMSG(mRuntime);\r
- Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ if(mRuntime.setAlarmType(Runtime.AlarmType.ALARM_CUTOFF)) {\r
+ StringMessage msg = protocolAPIHelper.getWarningMSG(mRuntime);\r
+ Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ }\r
// try {\r
// sleep(1000);\r
// } catch (InterruptedException e) {\r
send_anti_event_broadcast(0);\r
}\r
mRuntime.Anti_off_flag = 0;\r
- mRuntime.setAlarmType(Runtime.AlarmType.ALARM_WEARED);\r
- StringMessage msg = protocolAPIHelper.getWarningMSG(mRuntime);\r
- Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
-\r
+ if(mRuntime.setAlarmType(Runtime.AlarmType.ALARM_WEARED)) {\r
+ StringMessage msg = protocolAPIHelper.getWarningMSG(mRuntime);\r
+ Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ }\r
// try {\r
// sleep(1000);\r
// } catch (InterruptedException e) {\r
send_anti_event_broadcast(1);\r
}\r
mRuntime.Anti_off_flag=1;\r
- mRuntime.setAlarmType(Runtime.AlarmType.ALARM_ANTIOFF);\r
- StringMessage msg=protocolAPIHelper.getWarningMSG(mRuntime);\r
- Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ if(mRuntime.setAlarmType(Runtime.AlarmType.ALARM_ANTIOFF)) {\r
+ StringMessage msg = protocolAPIHelper.getWarningMSG(mRuntime);\r
+ Deliver.sendLocationMSG(msg); //消息很重要,所以利用带buffer的对列来发送!\r
+ }\r
// try {\r
// sleep(1000);\r
// } catch (InterruptedException e) {\r
//ppg\r
if(runtime.getHRS().ppg_threshold_max>0 && runtime.getHRS().getPPG() >runtime.getHRS().ppg_threshold_max){\r
\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_HIGH)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
\r
}else if ( runtime.getHRS().ppg_threshold_min>0 && runtime.getHRS().getPPG()<runtime.getHRS().ppg_threshold_min) {\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));\r
+ if( runtime.setAlarmType(Runtime.AlarmType.ALARM_HEART_RATE_LOW)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
}\r
\r
//bph\r
if(runtime.getHRS().bph_threshold_max>0 && runtime.getHRS().getBPH() >runtime.getHRS().bph_threshold_max){\r
\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_HIGH);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_HIGH)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
\r
}else if ( runtime.getHRS().bph_threshold_min>0 && runtime.getHRS().getBPH()<runtime.getHRS().bph_threshold_min) {\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_LOW);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));\r
-\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_BPH_LOW)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
}\r
\r
//bpl\r
if(runtime.getHRS().bpl_threshold_max>0 && runtime.getHRS().getBPL() >runtime.getHRS().bpl_threshold_max){\r
\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_HIGH);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_HIGH)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
\r
}else if ( runtime.getHRS().bpl_threshold_min>0 && runtime.getHRS().getBPL()<runtime.getHRS().bpl_threshold_min) {\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_LOW);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG( protocolAPIHelper.getWarningMSG(runtime));\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_BPL_LOW)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
\r
}\r
}\r
case 0:\r
break;\r
case 1:\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_HIGH);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_HIGH)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
break;\r
case 2:\r
- runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_LOW);\r
- //trigger AP10 报警定位\r
- Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ if(runtime.setAlarmType(Runtime.AlarmType.ALARM_TEMP_LOW)) {\r
+ //trigger AP10 报警定位\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getWarningMSG(runtime));\r
+ }\r
break;\r
}\r
}\r
public static void reboot(Context context) {\r
PowerManager powerManager = (PowerManager)context.getSystemService(Context.POWER_SERVICE);\r
try {\r
+ ICLogger.i("do reboot!");\r
powerManager.reboot("remote reboot");\r
ICLogger.i("命令重启");\r
return;\r
\r
public static void shutdown() {\r
try {\r
-\r
+ ICLogger.i("do shutdown!");\r
//获得ServiceManager类\r
Class ServiceManager = Class\r
.forName("android.os.ServiceManager");\r
public static final String EXTRA_WIPE_EXTERNAL_STORAGE = "android.intent.extra.WIPE_EXTERNAL_STORAGE";\r
\r
public static void doMasterClear(Context context) {\r
+ ICLogger.i("do doMasterClear!");\r
Intent intent = new Intent(ACTION_MASTER_CLEAR);\r
intent.setPackage("android");\r
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);\r