// }
}
dependencies {
+ implementation 'com.android.support.constraint:constraint-layout:1.1.3'
compile fileTree(include: ['*.jar', '*.aar'], dir: 'libs')
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
- compile 'com.android.support:appcompat-v7:25.1.0'
- compile 'com.github.ChestnutPlus:TestModules:v1.0.16'
+ implementation 'com.android.support:appcompat-v7:25.1.0'
+ implementation 'com.github.ChestnutPlus:TestModules:v1.0.16'
testCompile 'junit:junit:4.12'
implementation project(path: ':dNSCache')
}
return new Date().format("yyMMddHHmm", TimeZone.getTimeZone("GMT+08:00"))
-}
\ No newline at end of file
+}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- android:sharedUserId="android.uid.system"
+ package="com.enqualcomm.support"
+ android:allowBackup="true"
android:persistent="true"
android:screenOrientation="portrait"
- android:supportsRtl="true"
- android:allowBackup="true"
- package="com.enqualcomm.support">
- <!--按用户发送消息-->
- <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
-
- <!--允许程序读取或写入系统设置 -->
- <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
- <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
-
- <!-- 联网的权限 -->
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
- <uses-permission android:name="android.permission.INTERNET"/>
-
- <!--打电话权限-->
- <uses-permission android:name="android.permission.CALL_PHONE"/>
-
- <!--监听电话状态权限-->
- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
- <uses-permission android:name="android.permission.READ_CALL_LOG"/>
-
- <!--联系人-->
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
-
- <!--灭屏-->
- <uses-permission android:name="android.permission.WAKE_LOCK"/>
-
- <!--<user-permission android:name="android.permission.DEVICE_POWER"/>-->
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
- <!--删除进程-->
- <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"/>
-
- <!--监听FOTA消息-->
- <permission android:name="com.adups.fota.permission"/>
-
- <!--振动-->
- <uses-permission android:name="android.permission.VIBRATE"/>
-
- <!--高德定位SDK需要的权限 BEGIN-->
- <!--用于进行网络定位-->
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <!--用于访问GPS定位-->
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <!--用于获取运营商信息,用于支持提供运营商信息相关的接口-->
+ android:sharedUserId="android.uid.system"
+ android:supportsRtl="true">
+ <!-- 按用户发送消息 -->
+ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" /> <!-- 允许程序读取或写入系统设置 -->
+ <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" /> <!-- 联网的权限 -->
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <uses-permission android:name="android.permission.INTERNET" /> <!-- 打电话权限 -->
+ <uses-permission android:name="android.permission.CALL_PHONE" /> <!-- 监听电话状态权限 -->
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+ <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
+ <uses-permission android:name="android.permission.READ_CALL_LOG" /> <!-- 联系人 -->
+ <uses-permission android:name="android.permission.READ_CONTACTS" />
+ <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <!-- 灭屏 -->
+ <uses-permission android:name="android.permission.WAKE_LOCK" /> <!-- <user-permission android:name="android.permission.DEVICE_POWER"/> -->
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- 删除进程 -->
+ <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" /> <!-- 监听FOTA消息 -->
+ <permission android:name="com.adups.fota.permission" /> <!-- 振动 -->
+ <uses-permission android:name="android.permission.VIBRATE" /> <!-- 高德定位SDK需要的权限 BEGIN -->
+ <!-- 用于进行网络定位 -->
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <!-- 用于访问GPS定位 -->
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于获取运营商信息,用于支持提供运营商信息相关的接口 -->
<!-- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission> -->
- <!--用于访问wifi网络信息,wifi信息会用于进行网络定位-->
+ <!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位 -->
<!-- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission> -->
- <!--用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
- <!--用于访问网络,网络定位需要上网-->
+ <!-- 用于获取wifi的获取权限,wifi信息会用来进行网络定位 -->
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <!-- 用于访问网络,网络定位需要上网 -->
<!-- <uses-permission android:name="android.permission.INTERNET"></uses-permission> -->
- <!--用于读取手机当前的状态-->
+ <!-- 用于读取手机当前的状态 -->
<!-- <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission> -->
- <!--用于写入缓存数据到扩展存储卡-->
- <!--<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>-->
- <!--用于申请调用A-GPS模块-->
- <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
- <!--用于申请获取蓝牙信息进行室内定位-->
- <uses-permission android:name="android.permission.BLUETOOTH"/>
- <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
- <!--高德定位SDK需要的权限 END-->
-
-
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
- <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS"/>
- <uses-permission android:name="android.permission.INTERNET"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
- <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
- <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES"/>
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
- <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
- <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
- <uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
- <uses-permission android:name="android.permission.WAKE_LOCK"/>
- <uses-permission android:name="android.permission.DEVICE_POWER"/>
- <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
- <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.CAMERA"/>
- <uses-permission android:name="android.permission.RECORD_AUDIO"/>
- <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
- <uses-permission android:name="android.permission.VIBRATE"/>
- <uses-permission android:name="android.permission.BLUETOOTH"/>
- <uses-permission android:name="android.permission.SEND_SMS"/>
- <uses-permission android:name="android.permission.RECEIVE_SMS"/>
- <uses-permission android:name="android.permission.READ_SMS"/>
- <uses-permission android:name="android.permission.READ_CONTACTS"/>
- <uses-permission android:name="android.permission.WRITE_CONTACTS"/>
- <uses-permission android:name="android.permission.BODY_SENSORS"/>
- <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.READ_CALL_LOG"/>
- <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
- <uses-feature android:name="android.hardware.camera"/>
- <uses-feature android:name="android.hardware.camera.autofocus"/>
- <uses-permission android:name="android.permission.GET_TASKS"/>
-
+ <!-- 用于写入缓存数据到扩展存储卡 -->
+ <!-- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> -->
+ <!-- 用于申请调用A-GPS模块 -->
+ <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <!-- 用于申请获取蓝牙信息进行室内定位 -->
+ <uses-permission android:name="android.permission.BLUETOOTH" />
+ <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" /> <!-- 高德定位SDK需要的权限 END -->
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+ <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
+ <uses-permission android:name="android.permission.INTERNET" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
+ <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.WRITE_SETTINGS" />
+ <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
+ <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
+ <uses-permission android:name="android.permission.WAKE_LOCK" />
+ <uses-permission android:name="android.permission.DEVICE_POWER" />
+ <uses-permission android:name="android.permission.READ_PHONE_STATE" />
+ <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.CAMERA" />
+ <uses-permission android:name="android.permission.RECORD_AUDIO" />
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+ <uses-permission android:name="android.permission.VIBRATE" />
+ <uses-permission android:name="android.permission.BLUETOOTH" />
+ <uses-permission android:name="android.permission.SEND_SMS" />
+ <uses-permission android:name="android.permission.RECEIVE_SMS" />
+ <uses-permission android:name="android.permission.READ_SMS" />
+ <uses-permission android:name="android.permission.READ_CONTACTS" />
+ <uses-permission android:name="android.permission.WRITE_CONTACTS" />
+ <uses-permission android:name="android.permission.BODY_SENSORS" />
+ <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
+ <uses-permission android:name="android.permission.READ_CALL_LOG" />
+ <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
+
+ <uses-feature android:name="android.hardware.camera" />
+ <uses-feature android:name="android.hardware.camera.autofocus" />
+
+ <uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.WRITE_APN_SETTINGS" />
- <permission android:name="com.enqualcomm.support.permission.MIPUSH_RECEIVE" android:protectionLevel="signature"/>
- <uses-permission android:name="com.enqualcomm.support.permission.MIPUSH_RECEIVE"/>
- <protected-broadcast android:name="com.enqualcomm.support.ACTION_EQC_ALARM"/>
- <protected-broadcast android:name="com.eqc.heartrate.action.SILENT_START"/>
- <protected-broadcast android:name="com.enqualcomm.support.ACTION_ISCONNECTED"/>
- <protected-broadcast android:name="com.eqc.deskclock.YUN_ALARM_CHANGE"/>
- <protected-broadcast android:name="com.enqualcomm.support.sos"/>
+ <permission
+ android:name="com.enqualcomm.support.permission.MIPUSH_RECEIVE"
+ android:protectionLevel="signature" />
+
+ <uses-permission android:name="com.enqualcomm.support.permission.MIPUSH_RECEIVE" />
+ <protected-broadcast android:name="com.enqualcomm.support.ACTION_EQC_ALARM" />
+ <protected-broadcast android:name="com.eqc.heartrate.action.SILENT_START" />
+ <protected-broadcast android:name="com.enqualcomm.support.ACTION_ISCONNECTED" />
+ <protected-broadcast android:name="com.eqc.deskclock.YUN_ALARM_CHANGE" />
+ <protected-broadcast android:name="com.enqualcomm.support.sos" />
<application
android:name=".ICApplication"
android:icon="@mipmap/ic_launcher"
android:supportsRtl="true"
android:theme="@style/AppTheme">
- <activity android:name="com.enqualcomm.support.MainActivity" >
+ <activity android:name=".toolActivity"></activity>
+ <activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
- <service android:name="com.enqualcomm.support.CoreService"> <!--协议通讯服务-->
+ <service android:name=".CoreService"> <!-- 协议通讯服务 -->
<intent-filter>
<action android:name="com.enqualcomm.support.startsrv" />
<action android:name="com.enqualcomm.support.ACTION_ALARM" />
<action android:name="com.enqualcomm.support.HEART_ALARM" />
</intent-filter>
</service>
- <service android:name="com.enqualcomm.support.CoreService$InnerService"/>
+ <service android:name=".CoreService$InnerService" />
<provider
+ android:name=".ICContentProvider"
android:authorities="com.enqualcomm.support"
- android:exported="true"
- android:name="com.enqualcomm.support.ICContentProvider"/>
+ android:exported="true" />
- <receiver android:exported="true" android:name="com.enqualcomm.support.BootCompleteReceiver">
+ <receiver
+ android:name=".BootCompleteReceiver"
+ android:exported="true">
<intent-filter>
- <action android:name="android.intent.action.BOOT_COMPLETED"/>
+ <action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
- <receiver android:exported="true" android:name="com.enqualcomm.support.utils.ProcessReceiver">
+ <receiver
+ android:name=".utils.ProcessReceiver"
+ android:exported="true">
<intent-filter>
- <action android:name="com.enqualcomm.support.DIALOG"/>
- <action android:name="com.enqualcomm.imessage.RESUME_ACTION"/>
- <action android:name="com.enqualcomm.support.ACTION_STEP_COUNT_ALARM"/>
- <action android:name="com.enqualcomm.imessage.SOS_ACTION"/>
- <action android:name="com.enqualcomm.support.ACTION_REMOTE_CAMERA"/>
- <action android:name="com.enqualcomm.support.CloseUnreadMsg"/>
- <action android:name="android.intent.action.BATTERY_LOW"/>
- <action android:name="com.enqualcomm.support.ACTION_MISSED_CALL_GET"/>
-
- <!-- <action android:name="com.eqc.heartrate.action.SILENT_START" />-->
+ <action android:name="com.enqualcomm.support.DIALOG" />
+ <action android:name="com.enqualcomm.imessage.RESUME_ACTION" />
+ <action android:name="com.enqualcomm.support.ACTION_STEP_COUNT_ALARM" />
+ <action android:name="com.enqualcomm.imessage.SOS_ACTION" />
+ <action android:name="com.enqualcomm.support.ACTION_REMOTE_CAMERA" />
+ <action android:name="com.enqualcomm.support.CloseUnreadMsg" />
+ <action android:name="android.intent.action.BATTERY_LOW" />
+ <action android:name="com.enqualcomm.support.ACTION_MISSED_CALL_GET" />
+
+ <!-- <action android:name="com.eqc.heartrate.action.SILENT_START" /> -->
</intent-filter>
</receiver>
-
-
</application>
</manifest>
\ No newline at end of file
}\r
} else if ("android.intent.action.SCREEN_OFF".equals(param1Intent.getAction()) && Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)) {\r
CoreService.is_wifi_network_ok = true;\r
- Util.turnOffWifiForSleep(runtime.getContextProxy().context, runtime);\r
+ if (!runtime.isNoTurnOffWifiOnScreenOff()) {\r
+ //不关闭wifi when ScreenOff\r
+ Util.turnOffWifiForSleep(runtime.getContextProxy().context, runtime);\r
+ }\r
}\r
}\r
};\r
});\r
\r
}else {\r
+ sendSMS(phonenumber, "WiFi Control format error!");\r
+ }\r
+ } else if (tmp[1].startsWith("noTurnOffWhenScreenOff,")) {\r
+\r
+ String tmplist[]=tmp[1].split(",");\r
+ if (tmplist.length==2){\r
+ String enabled=tmplist[1];\r
+ boolean isenabled=enabled.toLowerCase().equals("true")?true:false;\r
+ runtime.setNoTurnOffOnScreenOff(isenabled);\r
+ StringBuilder sb=new StringBuilder();\r
+ if (isenabled && !Util.isWifiIsOpen(runtime.getContextProxy().context,runtime)){\r
+ Util.turnOnWifiForConnect(runtime.getContextProxy().context,runtime);\r
+ sb.append(" Turn On Wifi first and ");\r
+ }\r
+ sb.append("set noTurnOffWhenScreenOff " + enabled);\r
+ sendSMS(phonenumber,sb.toString() );\r
\r
- sendSMS(phonenumber, "set SkipMoveCheck " + LocationClient.getSkipMoveCheck() + " success!");\r
+ }else {\r
+ sendSMS(phonenumber, "WiFi Control format error!");\r
}\r
} else {\r
sendSMS(phonenumber, "WiFi Control format error!");\r
}\r
}\r
});\r
- }else if (!logfile.isEmpty()&& logfile.startsWith("SDLog:")){\r
+ }else if (!logfile.isEmpty()&& ( logfile.startsWith("SDLog:")||logfile.startsWith("SDLogInfo:"))){\r
\r
String sdfilelist[] = logfile.split(":");\r
if (sdfilelist.length==2) {\r
}\r
if ( new File(filepath).exists()) {\r
\r
- sendSMS(phonenumber, "start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ...");\r
+ sendSMS(phonenumber,"start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ...");\r
+\r
+ if (logfile.startsWith("SDLogInfo:")){\r
+ Util.ShowToast(runtime,"start Upload " + filepath + " to " + Config.getFtpServer(mContext) + " ...");\r
+ }\r
String logtime = TimeUtil.getSystemTime3();\r
\r
if (upload_logs_via_ftp) {\r
if (ftpUtils.upload(serverurl, Config.getFtpUser(mContext), Config.getFtpPWD(mContext), new File(filepath))) {\r
sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!");\r
+\r
+ if (logfile.startsWith("SDLogInfo:")){\r
+ Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!");\r
+ }\r
} else {\r
sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!");\r
+ if (logfile.startsWith("SDLogInfo:")){\r
+ Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!");\r
+ }\r
}\r
} else {\r
if (ICHttpUtil.uploadFile(filepath, runtime, logtime)) {\r
sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!");\r
+ if (logfile.startsWith("SDLogInfo:")){\r
+ Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " success!");\r
+ }\r
} else {\r
sendSMS(phonenumber, "Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!");\r
+ if (logfile.startsWith("SDLogInfo:")){\r
+ Util.ShowToast(runtime,"Upload " + filepath + " to " + Config.getFtpServer(mContext) + " failed!");\r
+ }\r
}\r
}\r
} else {\r
sendSMS(phonenumber, filepath + " not exist !");\r
+ if (logfile.startsWith("SDLogInfo:")){\r
+ Util.ShowToast(runtime,filepath + " not exist !");\r
+ }\r
}\r
}\r
});\r
}else{\r
sendSMS(phonenumber, " SDLog format error !");\r
}\r
+\r
}else{\r
Observable.timer(500L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {\r
public void call(Long param1Long) {\r
public void startGpsLocate() {\r
ICLogger.i("开启GPS扫描");\r
runtime.getLocationInstance().setLocationStat( ICLocation.LOCATION_STAT.LOCATION_OPEN); //此处为了检测是否定位时可以正确识别状态,以防一直处于GPS定位成功状态\r
- Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, true);\r
- Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
- public void call(Object param1Object) { LocationClient.this.nmeaListener.startListen(); }\r
- });\r
\r
+ //防止与工厂测试冲突\r
+ if (!DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context)) {\r
+\r
+ Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, true);\r
+ Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
+ public void call(Object param1Object) {\r
+ LocationClient.this.nmeaListener.startListen();\r
+ }\r
+ });\r
+ }\r
}\r
\r
public void clearGPSlocateStat(){\r
// Deliver.is_active_location = false;\r
// getLocationWakeLock();\r
// }\r
- Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false);\r
- Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
- public void call(Object param1Object) { LocationClient.this.nmeaListener.stopListen(); }\r
- });\r
+\r
+ //防止与工厂测试冲突\r
+ if (!DeviceInfoUtil.isFactoryTestTopActivity(runtime.getContextProxy().context)) {\r
+\r
+ Settings.Secure.setLocationProviderEnabled(runtime.getContextProxy().getResolver(), GPS_PROVIDER, false);\r
+ Single.just(null).observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1<Object>() {\r
+ public void call(Object param1Object) {\r
+ LocationClient.this.nmeaListener.stopListen();\r
+ }\r
+ });\r
+ }\r
}\r
\r
\r
case ICLocation.NORMAL_MOD:\r
default:\r
clearGPSlocateStat(); //如果wifi优先,则确保gps关闭,防止切换回来gps状态错误,尤其是不NoStop模式下的gps切换回来有此风险。\r
+\r
break;\r
}\r
\r
package com.enqualcomm.support;
+import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInfo;
import com.enqualcomm.support.adapter.protocolAPIHelper;
import com.enqualcomm.support.utils.DeviceInfoUtil;
import com.enqualcomm.support.utils.SimSignalUtil;
+import com.enqualcomm.support.utils.Util;
import com.ic.jni.ICJniUtils;
import com.enqualcomm.support.CoreService;
import com.enqualcomm.support.utils.ICLogger;
import rx.Observable;
import rx.functions.Action1;
+import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+
public class MainActivity extends AppCompatActivity {
TextView tv;
btnConnect.setOnClickListener(clickListener);
- ToggleButton tbtn = (ToggleButton)findViewById(R.id.toggleButton);
- tbtn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener(){
-
+ Button tbtn = (Button)findViewById(R.id.btn_tools);
+ tbtn.setOnClickListener(new View.OnClickListener() {
@Override
- public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
- SimSignalUtil.send_at_to_onoff_simcard(CoreService.getInstance().runtime);
+ public void onClick(View view) {
+ Intent intent=new Intent();
+ ComponentName var3 = new ComponentName("com.enqualcomm.support", "com.enqualcomm.support.toolActivity");
+ intent.addFlags(FLAG_ACTIVITY_NEW_TASK);
+ intent.setComponent(var3);
+ startActivity(intent);
}
});
- ToggleButton tbtnblood = (ToggleButton)findViewById(R.id.toggleButton2);
- tbtnblood.setVisibility(View.GONE);
+
+
+// SimSignalUtil.send_at_to_onoff_simcard(CoreService.getInstance().runtime));
+
// tbtnblood.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
// @Override
// public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
switch (view.getId()) {
case R.id.btnConnect:
//进行连接Socket:这里使用的是,在本地上开启了一个服务器。
+ Util.ShowToast(CoreService.getInstance().runtime,"Stop ProtocolService!");
stopService(new Intent(MainActivity.this,CoreService.class));// protocol service
//delay 5秒再重启
Observable.timer(5000L, TimeUnit.MILLISECONDS).subscribe(new Action1<Long>() {
public void call(Long param1Long) {
+ Util.ShowToast(CoreService.getInstance().runtime,"Start ProtocolService!");
startService(new Intent(MainActivity.this,CoreService.class));// protocol service
}
});
\r
public class NMEAListener implements NmeaListener, LocationListener {\r
private boolean listening;\r
- \r
+\r
+\r
+ public class GpsSatellitePriv {\r
+ int prn;\r
+ float snr;\r
+ GpsSatellitePriv(int _prn, float _snr) {\r
+ prn=_prn;\r
+ snr=_snr;\r
+ }\r
+ public int getPrn() {\r
+ return prn;\r
+ }\r
+ public float getSnr() {\r
+ return snr;\r
+ }\r
+ }\r
private LocationManager locationManager;\r
private String locationInfo;\r
- private List<GpsSatellite> numSatelliteList = new ArrayList<GpsSatellite>(); // 卫星信号\r
- private List<GpsSatellite> max3Satellite = new ArrayList<GpsSatellite>(); // 卫星信号\r
+ private List<GpsSatellitePriv> numSatelliteList = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
+ private List<GpsSatellitePriv> max3Satellite = new ArrayList<GpsSatellitePriv>(); // 卫星信号\r
\r
private double longitude;\r
private double latitude;\r
}\r
\r
public void onLocationChanged(Location paramLocation) {}\r
- \r
- public void onNmeaReceived(long paramLong, String paramString) {\r
+ static int satindex=0;\r
+ public void onNmeaReceived(long paramLong, String nmeastr) {\r
// EqcAlgorithmNative.native_EqcAlgorithmMethod5(paramString);\r
- ICLogger.i("Nmea :"+paramString+" "+paramLong);\r
+// ICLogger.i("Nmea :"+nmeastr+" "+paramLong);\r
+\r
+ if (Config.LOG_TOFILE) FileOutputUtil.fileOutput(this.runtime.getCacheDir(),"Nmea","Nmea :"+nmeastr+" "+paramLong);\r
+\r
+ searchCout++;\r
+\r
+\r
+ if (nmeastr.startsWith("$GPGLL,")){\r
+ String tmplist[]=nmeastr.split(",");\r
+// GPGLL编辑\r
+//(地理定位信息)\r
+// 例:$GPGLL,4250.5589,S,14718.5084,E,092204.999,A*2D\r
+// 字段0:$GPGLL,语句ID,表明该语句为Geographic Position(GLL)地理定位信息\r
+// 字段1:纬度ddmm.mmmm,度分格式(前导位数不足则补0)\r
+// 字段2:纬度N(北纬)或S(南纬)\r
+// 字段3:经度dddmm.mmmm,度分格式(前导位数不足则补0)\r
+// 字段4:经度E(东经)或W(西经)\r
+// 字段5:UTC时间,hhmmss.sss格式\r
+// 字段6:状态,A=定位,V=未定位\r
+// 字段7:校验值($与*之间的数异或后的值)\r
+ String Lat=tmplist[1];\r
+ String lon=tmplist[3];\r
+ String fixed=tmplist[6];\r
+ ICLogger.i("GPGLL Lat="+Lat+",Lon="+lon+",fixed="+fixed);\r
+\r
+ }else if (nmeastr.startsWith("$GPRMC,")) {\r
+// GPRMC编辑\r
+//(推荐定位信息数据格式)\r
+// 例:$GPRMC,024813.640,A,3158.4608,N,11848.3737,E,10.05,324.27,150706,,,A*50\r
+// 字段0:$GPRMC,语句ID,表明该语句为Recommended Minimum Specific GPS/TRANSIT Data(RMC)推荐最小定位信息\r
+// 字段1:UTC时间,hhmmss.sss格式\r
+// 字段2:状态,A=定位,V=未定位\r
+// 字段3:纬度ddmm.mmmm,度分格式(前导位数不足则补0)\r
+// 字段4:纬度N(北纬)或S(南纬)\r
+// 字段5:经度dddmm.mmmm,度分格式(前导位数不足则补0)\r
+// 字段6:经度E(东经)或W(西经)\r
+// 字段7:速度,节,Knots\r
+// 字段8:方位角,度\r
+// 字段9:UTC日期,DDMMYY格式\r
+// 字段10:磁偏角,(000 - 180)度(前导位数不足则补0)\r
+// 字段11:磁偏角方向,E=东W=西\r
+// 字段12:模式,A=自动,D=差分,E=估测,N=数据无效(3.0协议内容)\r
+// 字段13:校验值($与*之间的数异或后的值)\r
+ String tmplist[]=nmeastr.split(",");\r
+ String utctime=tmplist[1];\r
+ String Lat=tmplist[3];\r
+ String lon=tmplist[5];\r
+ String fixed=tmplist[2];\r
+ String speed=tmplist[7];\r
+ ICLogger.i("GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed);\r
+ if (Config.LOG_TOFILE)\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", "GPRMC GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed+",speed="+speed);\r
+\r
+ StringBuilder sb=new StringBuilder();\r
+\r
+ //定位了,\r
+ if (fixed.equals("A")) {\r
+ locationFixedCount++;\r
+\r
+ sb.append(", location time= " + TimeUtil.getLocalTime() + " ,lon= " + lon + ", lat= " + Lat + " FixedCount=" + locationFixedCount + ", speed=" + speed);\r
+ ICLogger.i(sb.toString());\r
+ if (Config.LOG_TOFILE)\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(), "GPS", sb.toString());\r
+\r
+ if (speed.trim().isEmpty())speed="0.0";\r
+ runtime.getLocationInstance().setLocation(latitude, longitude,Double.valueOf(speed), 0, numSatelliteList.size());\r
+ if (locationFixedCount > MaxFixedTimes) {\r
+ /*\r
+ 只有当前GPS已经定位,且location不为空才给 runtime赋值GPS坐标。\r
+ 延迟MaxFixedTimes秒后才设置runtime的定位标志,以便稳定坐标值。\r
+ */\r
+ runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_FIXED);\r
+ ICLogger.i("定位"+locationFixedCount+"次 > "+MaxFixedTimes+", set LOCATION_FIXED ");\r
+ if (!noStop) {\r
+ stopListen();\r
+ }\r
+ }\r
+ }\r
+\r
+ }else if (nmeastr.startsWith("$GPGSV,")) {\r
+\r
+// GPGSV编辑\r
+// (可见卫星信息)\r
+// 例:$GPGSV,3,1,10,20,78,331,45,01,59,235,47,22,41,069,,13,32,252,45*70\r
+// 字段0:$GPGSV,语句ID,表明该语句为GPS Satellites in View(GSV)可见卫星信息\r
+// 字段1:本次GSV语句的总数目(1 - 3)\r
+// 字段2:本条GSV语句是本次GSV语句的第几条(1 - 3)\r
+// 字段3:当前可见卫星总数(00 - 12)(前导位数不足则补0)\r
+// 字段4:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)\r
+// 字段5:卫星仰角(00 - 90)度(前导位数不足则补0)\r
+// 字段6:卫星方位角(00 - 359)度(前导位数不足则补0)\r
+// 字段7:信噪比(00-99)dbHz\r
+// 字段8:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)\r
+// 字段9:卫星仰角(00 - 90)度(前导位数不足则补0)\r
+// 字段10:卫星方位角(00 - 359)度(前导位数不足则补0)\r
+// 字段11:信噪比(00-99)dbHz\r
+// 字段12:PRN 码(伪随机噪声码)(01 - 32)(前导位数不足则补0)\r
+// 字段13:卫星仰角(00 - 90)度(前导位数不足则补0)\r
+//// 字段14:卫星方位角(00 - 359)度(前导位数不足则补0)\r
+//// 字段15:信噪比(00-99)dbHz\r
+// 字段16:校验值($与*之间的数异或后的值)\r
+\r
+ String tmplist[]=nmeastr.split(",");\r
+ int maxPageCount=Integer.valueOf(tmplist[1]);\r
+ int currentPage=Integer.valueOf(tmplist[2]);\r
+ int SatlitesCount=Integer.valueOf(tmplist[3]);\r
+ if (maxPageCount>0 && currentPage==1){\r
+ //第一页把数组初始化一遍。\r
+ satindex=0;\r
+ numSatelliteList.clear(); //清除 SNR >0的卫星\r
+ max3Satellite.clear(); //清除 最大3个星值\r
+ }\r
+ int satcount=(tmplist.length-4)/4;\r
+ ICLogger.i("Nmea :"+nmeastr+" "+satcount);\r
+ for (int i=0;i<satcount;i++){\r
+ satindex++;\r
+ String prn=tmplist[i*4+4];\r
+ String snr=tmplist[i*4+4+3];\r
+ if (snr.contains("*")){\r
+ snr=snr.substring(0,snr.indexOf("*"));\r
+ }\r
+ if (snr.trim().isEmpty()){\r
+ snr="0";\r
+ }\r
+ ICLogger.i("Sat="+satindex+",prn="+prn+",snr="+snr);\r
+\r
+ int intprn=Integer.valueOf(prn);\r
+ float floatsnr=Float.valueOf(snr);\r
+ if (floatsnr>0) {\r
+ //排序取得最大3个SNR\r
+ get3MaxSnrSatellite(new GpsSatellitePriv(intprn, floatsnr));\r
+ numSatelliteList.add(new GpsSatellitePriv(intprn, floatsnr));\r
+ }\r
+ }\r
+ if (maxPageCount==currentPage) {\r
+ //最后一页,打印搜星情况,并作一些判断。\r
+ StringBuilder sb=new StringBuilder();\r
+ sb.append("搜索"+searchCout+"次,搜索到卫星个数" + SatlitesCount+", [SNR>0] ="+numSatelliteList.size());\r
+ sb.append(", Max 3 SNR [");\r
+ for (int i=0;i<max3Satellite.size();i++){\r
+ sb.append(max3Satellite.get(i).getSnr()+",");\r
+ }\r
+ sb.append("]");\r
+ if (Config.LOG_TOFILE)\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(),"GPS",sb.toString());\r
+ ICLogger.i( sb.toString());\r
+\r
+ // 卫星总数小于2 ,或者 snr小于20\r
+ if (numSatelliteList.size()< 3 && (max3Satellite.size()>0?(max3Satellite.get(0).getSnr()<20?true:false) : true)){\r
+ noSignalCount++;\r
+ }\r
+\r
+\r
+ StringBuilder sb2=new StringBuilder();\r
+ if(!noStop) {\r
+ if (searchCout > SearchTimeout) {\r
+ sb2.append(" 搜索" + searchCout + "次未定位,超过" + SearchTimeout + "限制退出GPS定位");\r
+\r
+ runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT);\r
+\r
+ stop(MSG_WHAT_GPS_TIMEOUT);\r
+ }\r
+ if (noSignalCount > 10) {\r
+ sb2.append(" 搜索" + searchCout + "次,超过" + noSignalCount + "次没有收到星,退出GPS定位");\r
+ runtime.getLocationInstance().setLocationStat(ICLocation.LOCATION_STAT.LOCATION_GPS_TIEMOUT);\r
+ stop(MSG_WHAT_GPS_NOSTAR);\r
+ }\r
+ }\r
+ if (Config.LOG_TOFILE)\r
+ FileOutputUtil.fileOutput(this.runtime.getCacheDir(),"GPS",sb2.toString());\r
+\r
+\r
+ }\r
+ }else if (nmeastr.startsWith("$GPGGA,")) {\r
+\r
+// GPGGA编辑\r
+//(定位信息)\r
+// 例:$GPGGA,092204.999,4250.5589,S,14718.5084,E,1,04,24.4,12.2,M,19.7,M,,0000*1F\r
+// 字段0:$GPGGA,语句ID,表明该语句为Global Positioning System Fix Data(GGA)GPS定位信息\r
+// 字段1:UTC 时间,hhmmss.sss,时分秒格式\r
+// 字段2:纬度ddmm.mmmm,度分格式(前导位数不足则补0)\r
+// 字段3:纬度N(北纬)或S(南纬)\r
+// 字段4:经度dddmm.mmmm,度分格式(前导位数不足则补0)\r
+// 字段5:经度E(东经)或W(西经)\r
+// 字段6:GPS状态,0=不可用(FIX NOT valid),1=单点定位(GPS FIX),2=差分定位(DGPS),3=无效PPS,4=实时差分定位(RTK FIX),5=RTK FLOAT,6=正在估算\r
+// 字段7:正在使用的卫星数量(00 - 12)(前导位数不足则补0)\r
+// 字段8:HDOP水平精度因子(0.5 - 99.9)\r
+// 字段9:海拔高度(-9999.9 - 99999.9)\r
+// 字段10:单位:M(米)\r
+// 字段11:地球椭球面相对大地水准面的高度 WGS84水准面划分\r
+// 字段12:WGS84水准面划分单位:M(米)\r
+// 字段13:差分时间(从接收到差分信号开始的秒数,如果不是差分定位将为空)\r
+// 字段14:差分站ID号0000 - 1023(前导位数不足则补0,如果不是差分定位将为空)\r
+// 字段15:校验值($与*之间的数异或后的值)\r
+\r
+ String tmplist[]=nmeastr.split(",");\r
+ String utctime=tmplist[1];\r
+ String Lat=tmplist[2];\r
+ String lon=tmplist[4];\r
+ String fixed=tmplist[6];\r
+// ICLogger.i("GPGGA GPSTime="+utctime+",Lat="+Lat+",Lon="+lon+",fixed="+fixed);\r
+\r
+\r
+ }else if (nmeastr.startsWith("$GPGSA,")) {\r
+\r
+// GPGSA编辑\r
+//( 当前卫星信息)\r
+// 例:$GPGSA,A,3,01,20,19,13,,,,,,,,,40.4,24.4,32.2*0A\r
+// 字段0:$GPGSA,语句ID,表明该语句为GPS DOP and Active Satellites(GSA)当前卫星信息\r
+// 字段1:定位模式(选择2D/3D),A=自动选择,M=手动选择\r
+// 字段2:定位类型,1=未定位,2=2D定位,3=3D定位\r
+// 字段3:PRN码(伪随机噪声码),第1信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段4:PRN码(伪随机噪声码),第2信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段5:PRN码(伪随机噪声码),第3信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段6:PRN码(伪随机噪声码),第4信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段7:PRN码(伪随机噪声码),第5信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段8:PRN码(伪随机噪声码),第6信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段9:PRN码(伪随机噪声码),第7信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段10:PRN码(伪随机噪声码),第8信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段11:PRN码(伪随机噪声码),第9信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段12:PRN码(伪随机噪声码),第10信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段13:PRN码(伪随机噪声码),第11信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段14:PRN码(伪随机噪声码),第12信道正在使用的卫星PRN码编号(00)(前导位数不足则补0)\r
+// 字段15:PDOP综合位置精度因子(0.5 - 99.9)\r
+// 字段16:HDOP水平精度因子(0.5 - 99.9)\r
+// 字段17:VDOP垂直精度因子(0.5 - 99.9)\r
+// 字段18:校验值($与*之间的数异或后的值)\r
+\r
+ String tmplist[]=nmeastr.split(",");\r
+ String locationmod=tmplist[1];\r
+ String fixed=tmplist[2];\r
+// ICLogger.i("GPGSA locationMode="+locationmod+",fixed="+fixed);\r
+\r
+ }\r
}\r
\r
public void onProviderDisabled(String paramString) {}\r
locationManager.sendExtraCommand("gps", "force_xtra_injection", bundleWarm); //command\r
locationManager.sendExtraCommand("gps", "force_time_injection", bundleWarm);\r
boolean b2 = locationManager.sendExtraCommand("gps", "delete_aiding_data", bundleWarm);\r
-\r
return b2;\r
}\r
\r
// 定位算通过\r
gpsMode = GPS_CURRENT_STATUS.GPS_FIXED;\r
\r
-\r
+ ICLogger.i("GPS_EVENT_FIRST_FIX !");\r
// delaystop();\r
\r
break;\r
return true;\r
}\r
});\r
- private void get3MaxSnrSatellite(GpsSatellite gst){\r
+ private void get3MaxSnrSatellite(GpsSatellitePriv gst){\r
\r
float snr = gst.getSnr();\r
for (int k=0;k<max3Satellite.size();k++) {\r
for(int i=0;i<max3Satellite.size();i++) {\r
for (int j=i;j<max3Satellite.size();j++) {\r
if (max3Satellite.get(i).getSnr() < max3Satellite.get(j).getSnr()) {\r
- GpsSatellite ts = max3Satellite.get(j);\r
+ GpsSatellitePriv ts = max3Satellite.get(j);\r
max3Satellite.remove(j);\r
max3Satellite.add(i, ts);//大的放前面\r
}\r
strengh = snr;\r
// Toast.makeText(this, "信躁比大于20", Toast.LENGTH_LONG).show();\r
//排序取得最大3个SNR\r
- get3MaxSnrSatellite(s);\r
- numSatelliteList.add(s);\r
+ get3MaxSnrSatellite(new GpsSatellitePriv(s.getPrn(),s.getSnr()));\r
+ numSatelliteList.add(new GpsSatellitePriv(s.getPrn(),s.getSnr()));\r
}\r
\r
count++;\r
private void getBestLocation(LocationManager locationManager,GpsStatus status) {\r
Location location = null;\r
if (locationManager != null) {\r
+\r
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);\r
if (location == null) {\r
+ ICLogger.i(" GPS Provider get failed , get Network Provider!");\r
location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);\r
}\r
\r
searchCout = 0;\r
locationFixedCount=0;\r
gpsMode = GPS_CURRENT_STATUS.GPS_LISTENING;\r
- locationManager.addGpsStatusListener(statusListener);//监听搜星状态\r
-// this.locationManager.addNmeaListener(this);\r
+// locationManager.addGpsStatusListener(statusListener);//监听搜星状态\r
+ locationManager.addNmeaListener(this); //监听NMEA 协议数据。\r
\r
//做个热启动\r
return gpsHotStart();\r
public String IMEI_CID_KEY() { return this.imei_cid_key; }\r
\r
public String IMSI() { return this.imsi; }\r
- \r
+\r
+\r
+ private boolean noTurnOffWifiOnScreenOff=false;\r
+\r
+ public void setNoTurnOffOnScreenOff(boolean bol){\r
+ noTurnOffWifiOnScreenOff=bol;\r
+ }\r
+ public boolean isNoTurnOffWifiOnScreenOff(){\r
+ return noTurnOffWifiOnScreenOff;\r
+ }\r
public boolean getAntioffStatus() { return this.isNeedAntioff; }\r
\r
public String getBattery() { return this.battery; }\r
int networkid;\r
final WifiManager wifiManager = mRuntime.getContextProxy().getWifiManager();\r
wifiEnabled = wifiManager.isWifiEnabled();\r
+ if (!wifiEnabled)\r
+ {\r
+ //没开就打开wifi\r
+ Util.turnOnWifiForConnect(mRuntime.getContextProxy().context, mRuntime);\r
+ }\r
if (Util.isConnectWifi(mRuntime.getContextProxy().context)) {\r
networkid = wifiManager.getConnectionInfo().getNetworkId();\r
wifiManager.disconnect();\r
return;\r
}\r
\r
+ if(!wifiEnabled ){\r
+ //原来wifi没开就关闭wifi\r
+ Util.turnOffWifiForSleep(mRuntime.getContextProxy().context, mRuntime);\r
+ }\r
+\r
}\r
public void setWakeupAlarm(Runtime paramRuntime) {\r
AlarmManager alarmManager = (AlarmManager)(paramRuntime.getContextProxy()).context.getSystemService(Context.ALARM_SERVICE);\r
--- /dev/null
+package com.enqualcomm.support;\r
+\r
+import android.content.Intent;\r
+import android.support.v7.app.AppCompatActivity;\r
+import android.os.Bundle;\r
+import android.view.View;\r
+import android.widget.Button;\r
+\r
+import com.enqualcomm.support.utils.SimSignalUtil;\r
+import com.enqualcomm.support.utils.Util;\r
+\r
+public class toolActivity extends AppCompatActivity {\r
+\r
+ @Override\r
+ protected void onCreate(Bundle savedInstanceState) {\r
+ super.onCreate(savedInstanceState);\r
+ setContentView(R.layout.activity_tool);\r
+\r
+ Button btnSim=(Button)findViewById(R.id.btn_simReset);\r
+ Button btnSimReload=(Button)findViewById(R.id.btn_sim2);\r
+ Button btnLogctl=(Button)findViewById(R.id.btn_logctl);\r
+ Button btnmod1=(Button)findViewById(R.id.btn_location1);\r
+ Button btnmod3=(Button)findViewById(R.id.btn_location3);\r
+ Button btnmod530=(Button)findViewById(R.id.btn_location530);\r
+\r
+ btnmod1.setOnClickListener(new View.OnClickListener() {\r
+ @Override\r
+ public void onClick(View view) {\r
+ Intent intent=new Intent();\r
+ intent.putExtra("smsCmd","#setlocation#=1,30#");\r
+ CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent);\r
+ Util.ShowToast(CoreService.getInstance().runtime,"设置模式1 , 间隔900秒定位。");\r
+ }\r
+ });\r
+\r
+ btnmod3.setOnClickListener(new View.OnClickListener() {\r
+ @Override\r
+ public void onClick(View view) {\r
+ Intent intent=new Intent();\r
+ intent.putExtra("smsCmd","#setlocation#=3,30#");\r
+ CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent);\r
+ Util.ShowToast(CoreService.getInstance().runtime,"设置模式3 , 间隔60秒定位。");\r
+ }\r
+ });\r
+\r
+ btnmod530.setOnClickListener(new View.OnClickListener() {\r
+ @Override\r
+ public void onClick(View view) {\r
+ Intent intent=new Intent();\r
+ intent.putExtra("smsCmd","#setlocation#=5,30#");\r
+ CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent);\r
+ Util.ShowToast(CoreService.getInstance().runtime,"设置模式5 , 间隔30秒定位。");\r
+ }\r
+ });\r
+ btnSim.setOnClickListener(new View.OnClickListener() {\r
+ @Override\r
+ public void onClick(View view) {\r
+ SimSignalUtil.send_at_to_onoff_simcard(CoreService.getInstance().runtime);\r
+ Util.ShowToast(CoreService.getInstance().runtime,"Reset SimCard!");\r
+ }\r
+ });\r
+\r
+ btnSimReload.setOnClickListener(new View.OnClickListener() {\r
+ @Override\r
+ public void onClick(View view) {\r
+ SimSignalUtil.send_at_to_reload_simcard(CoreService.getInstance().runtime);\r
+ Util.ShowToast(CoreService.getInstance().runtime,"Reload SimCard!");\r
+\r
+ }\r
+ });\r
+\r
+ btnLogctl.setOnClickListener(new View.OnClickListener() {\r
+ @Override\r
+ public void onClick(View view) {\r
+ Intent intent=new Intent();\r
+ intent.putExtra("smsCmd","#logctl#=upload,SDLogInfo:Android");\r
+ CoreService.getInstance().runtime.getContextProxy().sendBrodcast("com.enqualcomm.support.SMSCMD",intent);\r
+ }\r
+ });\r
+ }\r
+}\r
arrayList.add("com.enqualcomm.imessage.ui.chat.ChatActivity_");\r
return arrayList.contains(((ActivityManager.RunningTaskInfo)((ActivityManager)paramContext.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1).get(0)).topActivity.getClassName());\r
}\r
-\r
+ public static boolean isFactoryTestTopActivity(Context paramContext) {\r
+ ArrayList<String> arrayList = new ArrayList();\r
+ arrayList.add("mobile.miki");\r
+ return arrayList.contains(((ActivityManager.RunningTaskInfo)((ActivityManager)paramContext.getSystemService(Context.ACTIVITY_SERVICE)).getRunningTasks(1).get(0)).topActivity.getPackageName());\r
+ }\r
\r
public static String getDeviceInfo(Runtime runtime){\r
\r
( runtime.getContextProxy()).context.sendBroadcast(intent);\r
ICLogger.i("send_at_to_update_lbs ");\r
}\r
+\r
+ public static void send_at_to_reload_simcard(Runtime runtime){\r
+\r
+ Intent intent = new Intent("com.eqc.intent.action.getTelephony.lbs");\r
+ intent.putExtra("command", "AT+SFUN=3"); //重新初始化sim卡\r
+ intent.putExtra("arg2", "");\r
+ ( runtime.getContextProxy()).context.sendBroadcast(intent);\r
+ ICLogger.i("send_at_to_update_lbs ");\r
+ }\r
public static void send_at_to_update_lbs(Runtime runtime) {\r
Intent intent = new Intent("com.eqc.intent.action.getTelephony.lbs");\r
intent.putExtra("command", "AT+CREG=2");\r
import android.net.wifi.WifiConfiguration;\r
import android.net.wifi.WifiManager;\r
import android.os.Build;\r
+import android.os.Handler;\r
+import android.os.Looper;\r
+import android.widget.Toast;\r
\r
\r
import java.io.BufferedInputStream;\r
public static boolean isWifiIsOpen(Context paramContext, Runtime paramRuntime) {\r
return paramRuntime.getContextProxy().getWifiManager().isWifiEnabled();\r
}\r
- \r
+ public static void ShowToast(Runtime runtime,String msg) {\r
+ new Thread(new Runnable() {\r
+\r
+ @Override\r
+ public void run() {\r
+ Handler handler = new Handler(Looper.getMainLooper());\r
+ handler.post(new Runnable() {\r
+\r
+ @Override\r
+ public void run() {\r
+ Toast.makeText(runtime.getContextProxy().context, msg, Toast.LENGTH_LONG).show();\r
+ }\r
+ });\r
+ }\r
+ }).start();\r
+ }\r
+\r
public static byte[] loadFile(File paramFile) {\r
// if (paramFile != null && paramFile.exists())\r
// try {\r
android:id="@+id/btnConnect"
android:layout_width="80dp"
android:layout_height="wrap_content"
- android:text="ReCon" />
-
- <ToggleButton
- android:id="@+id/toggleButton2"
- android:layout_width="50dp"
- android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="HR"
- android:textOff="HROff"
- android:textOn="HROn" />
+ android:text="ReCon" />
- <ToggleButton
- android:id="@+id/toggleButton"
- android:layout_width="50dp"
+ <Button
+ android:id="@+id/btn_tools"
+ android:layout_width="80dp"
android:layout_height="wrap_content"
android:layout_weight="1"
- android:text="SIM"
- android:textOff="SimOff"
- android:textOn="SimOn" />
+ android:text="Tools" />
</LinearLayout>
<HorizontalScrollView
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?>\r
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"\r
+ xmlns:app="http://schemas.android.com/apk/res-auto"\r
+ xmlns:tools="http://schemas.android.com/tools"\r
+ android:layout_width="match_parent"\r
+ android:layout_height="match_parent"\r
+ android:orientation="vertical"\r
+ tools:context=".toolActivity">\r
+\r
+ <LinearLayout\r
+ android:layout_width="match_parent"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:orientation="horizontal">\r
+\r
+ <Button\r
+ android:id="@+id/btn_logctl"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:text="UploadLog" />\r
+\r
+ <Button\r
+ android:id="@+id/btn_simReset"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:text="SimReset" />\r
+\r
+ <Button\r
+ android:id="@+id/btn_sim2"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:text="SIMRELoad" />\r
+ </LinearLayout>\r
+\r
+ <LinearLayout\r
+ android:layout_width="match_parent"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:orientation="horizontal">\r
+\r
+ <Button\r
+ android:id="@+id/btn_location3"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:text="Mode3" />\r
+\r
+ <Button\r
+ android:id="@+id/btn_location530"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:text="Mode5.30" />\r
+\r
+ <Button\r
+ android:id="@+id/btn_location1"\r
+ android:layout_width="wrap_content"\r
+ android:layout_height="wrap_content"\r
+ android:layout_weight="1"\r
+ android:text="Mode1" />\r
+ </LinearLayout>\r
+\r
+</LinearLayout>
\ No newline at end of file