public static boolean noPPGSensor=false;\r
public static boolean needBroadcastAntiAlarm=true;\r
public static boolean disableWiFiScan=false;\r
+ public static int BLEScanProtocol=0; /** 0 代表扫描beacon后 自行判断是否在指定区域,需要协议绑定beacon地址。\r
+ * 1 代表扫描beacon后,直接把扫描结果上报即可。\r
+ **/\r
+ public static boolean UsePolingCheckWeared=false;\r
+\r
static {\r
disableWiFiScan=Util.getSystemProperties("persist.sys.disableWiFiLocation","false").equals("true");\r
disableWristTemp=Util.getSystemProperties("persist.sys.disableWristTemp","false").equals("true");\r
+ BLEScanProtocol=Util.getSystemPropertiesInt("persist.sys.BLEScanProtocol",0);\r
+ UsePolingCheckWeared=Util.getSystemProperties("persist.sys.PolingCheckAnti","false").equals("true");\r
}\r
\r
private static String make() {\r
final static String KeyBPLadust="KeyBPLAdjust";\r
final static String KeySPo2adust="KeySPo2Adjust";\r
\r
+ final static String KeyPolingCycleCheckAnti="PolingCycleCheckAnti";\r
+ final static String KeyBleScanCycle="BleScanCycle";\r
+\r
+ public static void setCheckAntiPolingCycle(Context context, int cycle){\r
+ SharPreferenceUtil.setPrefInt(context,KeyPolingCycleCheckAnti,cycle);\r
+ }\r
+\r
+ public static int getCheckAntiPolingCycle(Context context){\r
+ return SharPreferenceUtil.getPrefInt(context,KeyPolingCycleCheckAnti,0);\r
+ }\r
+\r
+ public static void setBleScanCycle(Context context, int cycle){\r
+ SharPreferenceUtil.setPrefInt(context,KeyBleScanCycle,cycle);\r
+ }\r
+\r
+ public static int getBleScanCycle(Context context){\r
+ return SharPreferenceUtil.getPrefInt(context,KeyBleScanCycle,0);\r
+ }\r
\r
public static String getSMSPwd(Context context){\r
return SharPreferenceUtil.getPrefString(context,KeySMSPassword,DefaultSMSPassword);\r
public static final String ACTION_ADDTEST_CONTACTS = "com.enqualcomm.imessage.ACTION_ADDTEST_CONTACTS";\r
\r
public static final String ACTION_ALARM_ADD_DATAPOINTS = "com.enqualcomm.support.ADD_DATAPOINTS";\r
- \r
+\r
+\r
+ public static final String ACTION_ALARM_BLE_SCAN = "com.ic.Action.ALarm.bleScan";\r
+ public static final String ACTION_ALARM_CHECK_ANTI = "com.ic.Action.ALarm.CheckAnti";\r
+\r
public static final String ACTION_ALARM_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ALARM_ALARM_CHANGE";\r
\r
public static final String ACTION_ANTIOFF_ALARM_CHANGE = "com.enqualcomm.support.ACTION_ANTIOFF_ALARM_CHANGE";\r
import android.os.SystemClock;\r
import android.widget.Toast;\r
\r
+import com.enqualcomm.support.adapter.BTHelper;\r
import com.enqualcomm.support.bean.Contact;\r
import com.enqualcomm.support.bean.ICLocation;\r
import com.enqualcomm.support.bean.SleepInfo;\r
\r
import static android.app.PendingIntent.FLAG_UPDATE_CURRENT;\r
import static com.enqualcomm.support.Constants.ACTION_ALARM_ADD_DATAPOINTS;\r
+import static com.enqualcomm.support.Constants.ACTION_ALARM_BLE_SCAN;\r
+import static com.enqualcomm.support.Constants.ACTION_ALARM_CHECK_ANTI;\r
import static com.enqualcomm.support.Constants.ACTION_CHECK_ANTIOFF_EVENT;\r
import static com.enqualcomm.support.Constants.ACTION_EQC_ALARM;\r
import static com.enqualcomm.support.Constants.ACTION_HEATR_RATE_START;\r
runtime.setNeddReportCutoff(Config.getNeedCutOff(this));\r
runtime.setNeedAntioff(Config.getNeedAntiOff(this));\r
\r
+\r
+\r
Config.setHeartBeatCycle(this,5); //临时设置为3分钟,给L03测试用。测试断线问题未解决,取消测试。\r
//初始化ServerHeartBeat Cycle\r
Config.loadHearBeatSetting(runtime);\r
\r
setTempAlarm();\r
\r
+\r
+ //初始化佩戴检测\r
+ runtime.anti_test_cycle=Config.getCheckAntiPolingCycle(this);\r
+ if( runtime.anti_test_cycle>0){\r
+ setAntiAlarm();\r
+ }\r
+\r
+ //初始化蓝牙检测\r
+ runtime.bleInfo.bleScanCycle=Config.getBleScanCycle(this);\r
+ if(Config.BLEScanProtocol==1 && runtime.bleInfo.bleScanCycle>0)\r
+ {\r
+ setBleScanAlarm(runtime.bleInfo.bleScanCycle);\r
+ }\r
+\r
//设置来电模式\r
SimSignalUtil.SetRingMode(this, AudioManager.RINGER_MODE_NORMAL,true);\r
\r
if (Config.LOG_TOFILE) ICLogger.logToFile("alarmCycle", stringBuilder1.toString());\r
// this.locationClient.triggerLocationProcess();\r
\r
+ }else if (Constants.ACTION_ALARM_BLE_SCAN.equals(paramIntent.getAction())) {\r
+ //循环蓝牙扫描\r
+ setBleScanAlarm(runtime.bleInfo.bleScanCycle);\r
+\r
}else if (Constants.ACTION_PRACTICE_REPORT_ALARM.equals(paramIntent.getAction())) {\r
//alarm是延迟的,所以这个判断主要是给最后一次可能无效的测量\r
if (Runtime.practising==true) {\r
setWakeAlarm();\r
return Service.START_STICKY;\r
} else if (ANTI_ALARM.equals(paramIntent.getAction())) {\r
+ //测试是否佩戴\r
+ antiservice.CheckAntiByPoling();\r
+ if (Config.LOG_TOFILE)\r
+ ICLogger.logToFile("alarmCycle", "ANTI_ALARM alarmCycle ");\r
+ setAntiAlarm();\r
\r
- if (this.mKeepAlive != null) {\r
-\r
- if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {\r
- //测试是否佩戴\r
-\r
- }\r
- setAntiAlarm();\r
- if (Config.LOG_TOFILE)\r
- ICLogger.logToFile("alarmCycle", "ANTI_ALARM alarmCycle ");\r
- return Service.START_STICKY;\r
- }\r
+ return Service.START_STICKY;\r
+// if (this.mKeepAlive != null) {\r
+//\r
+// if (connection.isServerConnected() && runtime.isServerProtocolConnected()) {\r
+// }\r
+// return Service.START_STICKY;\r
+// }\r
} else if (TEMP_ALARM.equals(paramIntent.getAction())) {\r
\r
setTempAlarm();\r
setLocationAlarm(runtime.getLocationInstance().getWorkingMod());//同时重置alarm并触发定位\r
\r
}else if(ACTION_CHECK_ANTIOFF_EVENT.equals(paramIntent.getAction())){\r
+ //只在中断式检测过程中延时用\r
antiservice.check_ant_event();\r
}\r
\r
if (Config.LOG_TOFILE)ICLogger.logToFile("alarmCycle",sb.toString());\r
}\r
\r
+ public void setBleScanAlarm(int cycle){\r
+ if (Config.BLEScanProtocol!=1) {\r
+ ICLogger.i("BLEScanProtocol!=1 skip setPolingCheckAntiAlarm");\r
+ return;\r
+ }\r
+ StringBuilder sb=new StringBuilder();\r
+ if (cycle>1) {\r
+ AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, ACTION_ALARM_BLE_SCAN);\r
+ }\r
+ sb.append("setBleScanAlarm " + cycle);\r
+ locationClient.triggerBLEProcess();\r
+ ICLogger.i(sb.toString());\r
+ if (Config.LOG_TOFILE)ICLogger.logToFile("alarmCycle",sb.toString());\r
+ }\r
+\r
public void setEmegencyLocationSTOPAlarm(int delayTimeInMinutes){\r
StringBuilder sb=new StringBuilder();\r
AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,delayTimeInMinutes, ACTION_SEND_EMEGENCY_LOCATION_STOP);\r
// int mod=runtime.getLocationInstance().getWorkingMod();\r
StringBuilder sb=new StringBuilder();\r
int cycle=runtime.anti_test_cycle;\r
-\r
- //心跳指令默认设置为3分钟\r
- AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,cycle, ANTI_ALARM);\r
+ if(cycle>1) {\r
+ AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context, cycle, ANTI_ALARM);\r
+ }\r
sb.append(" setHeartAlarm "+ANTI_ALARM+", cycle "+cycle);\r
-// locationClient.triggerLocationProcess();\r
+\r
ICLogger.i(sb.toString());\r
FileOutputUtil.fileOutput(runtime.getCacheDir(),"alarmCycle",sb.toString());\r
-\r
-// AlarmHelper.setRealTimeAlarm(runtime.getContextProxy().context,1, HEART_ALARM);\r
}\r
public void setTempAlarm(){\r
// int mod=runtime.getLocationInstance().getWorkingMod();\r
btHelper=BTHelper.CreateInstance(paramRuntime, new BTHelper.BTScanCallback() {\r
@Override\r
public void OnScanFinished(ArrayList<String> btPairedScanResult, ArrayList<String> btNewScanResult) {\r
-\r
+ if(Config.BLEScanProtocol==0) { //扫描并判定是否在区域内。\r
if (btNewScanResult!=null && btNewScanResult.size() > 0) {\r
StringBuilder sb=new StringBuilder();\r
sb.append("found bt mac ").append(btNewScanResult.size() );\r
sb.append(" bounding BeaconMacList ").append(runtime.bleInfo.btMacList.size() );\r
+ runtime.bleInfo.btScanResult.clear();\r
for(String mac:runtime.bleInfo.btMacList){\r
sb.append(" ").append(mac);\r
}\r
ICLogger.i( sb.toString() );\r
- boolean in_area = false;\r
- try {\r
- for (String mac : btNewScanResult) {\r
- ICLogger.i("bt mac " + mac.replace(":", "").toLowerCase() + " " + mac.toLowerCase());\r
- String tmp = mac.replace(":", "").toLowerCase();\r
- tmp = tmp.substring(0, tmp.indexOf(","));\r
- if (runtime.bleInfo.btMacList.contains(tmp)) {\r
- in_area = true;\r
- break;\r
+\r
+\r
+ boolean in_area = false;\r
+ try {\r
+ for (String mac : btNewScanResult) {\r
+ ICLogger.i("bt mac " + mac.replace(":", "").toLowerCase() + " " + mac.toLowerCase());\r
+ String tmp = mac.replace(":", "").toLowerCase();\r
+ tmp = tmp.substring(0, tmp.indexOf(","));\r
+ if (runtime.bleInfo.btMacList.contains(tmp)) {\r
+ in_area = true;\r
+ break;\r
+ }\r
}\r
- }\r
- if(in_area == false && ScanBLERetryCount-- > 0){\r
+ if (in_area == false && ScanBLERetryCount-- > 0) {\r
//如果没有扫描到,且扫描次数没有超限,则重新扫描一次。注意要delay 5秒\r
- Util.mSleep(5000);\r
+ Util.mSleep(5000);\r
//Do retry Scan\r
- ICLogger.i("BT BLE not found retry Scan "+ ScanBLERetryCount);\r
+ ICLogger.i("BT BLE not found retry Scan " + ScanBLERetryCount);\r
btHelper.scanBLE();\r
- return ;\r
- }else {\r
- runtime.bleInfo.is_in_area = in_area;\r
- ScanBLERetryCount=maxBLEScanTime;\r
+ return;\r
+ } else {\r
+ runtime.bleInfo.is_in_area = in_area;\r
+ ScanBLERetryCount = maxBLEScanTime;\r
+ }\r
+\r
+ } catch (Exception e) {//如果出错,原来的状态不要变。防止误报,最多延迟一个周期报。\r
+ e.printStackTrace();\r
+ ICLogger.i(e.getMessage());\r
}\r
\r
- }catch(Exception e){//如果出错,原来的状态不要变。防止误报,最多延迟一个周期报。\r
- e.printStackTrace();\r
- ICLogger.i(e.getMessage());\r
- }\r
+\r
} else {\r
runtime.bleInfo.is_in_area = false;\r
ScanBLERetryCount=maxBLEScanTime;\r
runtime.bleInfo.last_is_in_area=runtime.bleInfo.is_in_area;\r
//扫描结束就清掉scanBLEOnly,保证下次不会被误操作。\r
scanBLEOnly=false;\r
-\r
+ }else{ //Config.BLEScanProtocol==0\r
+ if (btNewScanResult!=null && btNewScanResult.size() > 0) {\r
+ StringBuilder sb = new StringBuilder();\r
+ sb.append("found bt mac ").append(btNewScanResult.size());\r
+ runtime.bleInfo.btScanResult.clear();\r
+ for (String mac : btNewScanResult) {\r
+ sb.append("\n").append(mac);\r
+ runtime.bleInfo.btScanResult.add(mac.replace(":",""));\r
+ }\r
+ ICLogger.i(sb.toString());\r
+ Deliver.sendLocationMSG(protocolAPIHelper.getBLEScanResult(runtime));\r
+ }else{\r
+ ICLogger.i("未搜到蓝牙设备!");\r
+ }\r
+ }\r
}\r
});\r
\r
startLocationProcess(runtime.getLocationInstance().getWorkingMod());\r
}\r
}else if (msg.what == msgWhat_StartBLEProcess){\r
- if (runtime.bleInfo.btMacList.size() > 0) {\r
+ if(Config.BLEScanProtocol==0) {\r
+ if (runtime.bleInfo.btMacList.size() > 0) {\r
+ //有蓝牙搜索要求则 先进行蓝牙扫描\r
+ if (!btHelper.isBtscanning()) {\r
+ scanBLEOnly = true;\r
+ if (needLocationForBT())\r
+ btHelper.scanBLE();\r
+ } else {\r
+ ICLogger.i("BT Scanning skip ScanBLE only!");\r
+ }\r
+ }\r
+ }else{\r
//有蓝牙搜索要求则 先进行蓝牙扫描\r
- if (! btHelper.isBtscanning()) {\r
- scanBLEOnly = true;\r
+ if (!btHelper.isBtscanning()) {\r
if (needLocationForBT())\r
btHelper.scanBLE();\r
- }else{\r
+ } else {\r
ICLogger.i("BT Scanning skip ScanBLE only!");\r
}\r
}\r
import android.content.Context;\r
import android.content.Intent;\r
import android.content.IntentFilter;\r
+import android.net.wifi.ScanResult;\r
import android.os.Handler;\r
import com.enqualcomm.support.bean.Runtime;\r
import com.enqualcomm.support.Config;\r
import com.enqualcomm.support.utils.Util;\r
\r
import java.util.ArrayList;\r
+import java.util.Collections;\r
+import java.util.Comparator;\r
import java.util.Set;\r
\r
public class BTHelper {\r
disableBT();\r
hasStopedByFoundBT=true;\r
\r
- if (mCallback != null)\r
+ if (mCallback != null) {\r
+ resortScanResult(mNewDevicesArray);\r
mCallback.OnScanFinished(mPairedDevicesArray, mNewDevicesArray);\r
+ }\r
}\r
}\r
}\r
\r
+ private void resortScanResult( ArrayList<String> btlist){\r
+\r
+ Collections.sort(btlist, new Comparator<String>() {\r
+ public int compare(String var1, String var2) {\r
+ try {\r
+ int tmp = var1.indexOf(",");\r
+ int rssi1 = Integer.parseInt(var1.substring(tmp + 1));\r
+ tmp = var2.indexOf(",");\r
+ int rssi2 = Integer.parseInt(var2.substring(tmp + 1));\r
+ return Math.abs(rssi1) - Math.abs(rssi2);\r
+ }catch (Exception e){\r
+ return 0;\r
+ }\r
+ }\r
+ });\r
+\r
+ }\r
private class RunableStopBleScan implements Runnable{\r
\r
@Override\r
//开始扫描前是关闭的,就关闭它\r
// if(!enabledBeforScan)\r
disableBT();\r
- if (mCallback != null)\r
+ if (mCallback != null){\r
+ resortScanResult(mNewDevicesArray);\r
mCallback.OnScanFinished(mPairedDevicesArray, mNewDevicesArray);\r
-\r
+ }\r
}\r
}\r
\r
public String ble_area_id="";\r
\r
public ArrayList<String> btMacList=new ArrayList<>();\r
+ public ArrayList<String> btScanResult=new ArrayList<>();\r
\r
public String gps_n="";\r
public String gps_e="";\r
public boolean is_in_area=false;\r
public boolean last_is_in_area=false;\r
\r
+ public static int bleScanCycle=0;\r
+\r
}\r
ICLogger.i("AntiOff Timeout! send antioff event "+current_anti_status);\r
}\r
\r
+ public boolean CheckAntiByPoling(){\r
+ //检查是否佩戴。佩戴返回true\r
+ //send_antiof_event();\r
+ return false;\r
+ }\r
+\r
+\r
//return 0 表示check 结束, 1表示需要继续check 由coreService中 ACTION_CHECK_ANTIOFF_EVENT进行\r
public int check_ant_event(){\r
\r
ICLogger.i("anti_event_receivedTime in "+ (currenttime - anti_event_receivedTime)\r
+"ms ago ,anti_event_count_when_start_timer "+ant_status_event_reported\r
);\r
- if ((currenttime- anti_event_receivedTime) >= 2000){\r
+\r
+ if ((currenttime - anti_event_receivedTime) >= 2000) {\r
send_antiof_event();\r
\r
- ant_status_event_reported=0;\r
+ ant_status_event_reported = 0;\r
return 0;\r
- }else{\r
- long restTimeNeedDelay=(2000 + anti_event_receivedTime-currenttime);\r
- ICLogger.i("Still need delay "+restTimeNeedDelay+"ms to check anti_event again!");\r
- setAntiCheckAlarm((int)restTimeNeedDelay);\r
+ } else {\r
+ long restTimeNeedDelay = (2000 + anti_event_receivedTime - currenttime);\r
+ ICLogger.i("Still need delay " + restTimeNeedDelay + "ms to check anti_event again!");\r
+ setAntiCheckAlarm((int) restTimeNeedDelay);\r
return 1;\r
}\r
-\r
}\r
\r
public void setAntiCheckAlarm(int ms){\r
mRuntime=paramRuntime;\r
mContext=mRuntime.getContextProxy().context;\r
mConnection=paramConnection;\r
- startSensor();\r
+ if(Config.UsePolingCheckWeared==false) {\r
+ ICLogger.i("启用中断式佩戴检测!");\r
+ startSensor();\r
+ }else{\r
+ ICLogger.i("启用循环式佩戴检测!");\r
+ }\r
}\r
\r
@Override\r
public void onDetach(Connection paramConnection, Runtime paramRuntime) {\r
- mSensorManager.unregisterListener(mSensorEventListener);\r
+ if(Config.UsePolingCheckWeared==false) {\r
+ mSensorManager.unregisterListener(mSensorEventListener);\r
+ }\r
}\r
}\r
}\r
return ret;\r
}\r
+\r
+ public static StringMessage getBLEScanResult(Runtime runtime){\r
+ if (is_protocol_not_Initialled()) return null;\r
+ StringMessage ret=null;\r
+ switch(Config.protocol_no)\r
+ {\r
+ case Config.PROTOCOL_JIAI:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_BEEHOME:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_IC:\r
+ ret = protocol_ic.APBR(runtime);\r
+ break;\r
+ case Config.PROTOCOL_FZD:\r
+ ret=null;\r
+ break;\r
+ case Config.PROTOCOL_MQTT:\r
+ ret=null;\r
+ break;\r
+ }\r
+ return ret;\r
+ }\r
}\r
}\r
\r
\r
+\r
+ public static StringMessage APBT(String id,String cycle)\r
+ {\r
+ return genStringMessage("APBT",new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBT))\r
+ .append(CMDSPLIT).append(id)\r
+ .append(CMDSPLIT).append(cycle)\r
+ .append(CMDEND).toString());\r
+ }\r
+\r
+ /***\r
+ * 响应蓝牙扫描周期设定\r
+ * @param connection\r
+ * @param runtime\r
+ * @param cmd\r
+ */\r
+ public void handleBPBT( Connection connection,Runtime runtime,String cmd) {\r
+/***\r
+ * IWBPBT,353456789012345,080835,1#\r
+ * 说明:设置蓝牙扫描周期,单位时间分钟\r
+ * IW:标识符\r
+ * BPBT : 命令字符\r
+ * 353456789012345:IMEI号,设备唯一ID\r
+ * 080835:指令流水号\r
+ * 1: 扫描周期,对应单位为分钟\r
+ * 设备响应: IWAPBT,080835, 1#\r
+ * 080835:指令流水号\r
+ * 1: 剪断开关状态(实际上与下行的命令一致)\r
+ */\r
+\r
+ log("BPBT "+cmd);\r
+ String[] cmdlist=cmd.split(CMDSPLIT);\r
+ if (cmdlist.length==4){\r
+ String id=cmdlist[2];\r
+ String cycle=cmdlist[3].replace("#","");\r
+ connection.send(APBT(id,cycle));\r
+\r
+ if(Util.isNumeric(cycle)){\r
+ int intcycle=Integer.parseInt(cycle);\r
+ Config.setBleScanCycle(runtime.getContextProxy().context,intcycle);\r
+ runtime.bleInfo.bleScanCycle=intcycle;\r
+ ICLogger.i("设置蓝牙扫描周期 "+intcycle+" 分钟");\r
+ CoreService.getInstance().setBleScanAlarm(intcycle);\r
+ }else{\r
+ ICLogger.i(" BPBT Format error!");\r
+ }\r
+\r
+ }else{\r
+ ICLogger.i(" BPBT Format error!");\r
+ }\r
+ }\r
+\r
+ /***\r
+ * 发送蓝牙扫描结果\r
+ * @param runtime\r
+ * @return\r
+ */\r
+ public static StringMessage APBR(Runtime runtime) {\r
+ if (runtime.bleInfo.btScanResult.size() > 0) {\r
+ StringBuffer sb=new StringBuffer();\r
+ sb.append(runtime.bleInfo.btScanResult.size());\r
+ for(String it:runtime.bleInfo.btScanResult){\r
+ sb.append(CMDSPLIT).append(it);\r
+ }\r
+ return genStringMessage("APBR", new StringBuffer(CMDHEADER).append(cmdMap.get(CMD_TYPE.APBR))\r
+ .append(CMDSPLIT).append(sb.toString())\r
+ .append(CMDEND).toString());\r
+\r
+ }else{\r
+ return null;\r
+ }\r
+ }\r
+\r
public boolean handleCmd(CMD_TYPE type, String cmd) {\r
\r
//普通非二进制命令用此函数处理\r
handleBPDH(mConnection,mRuntime,cmd);\r
break;\r
\r
- case BPTQ:\r
+ case BPTQ: //天气下发\r
handleBPTQ(mConnection,mRuntime,cmd);\r
break;\r
- case BPAT:\r
+ case BPAT://剪断开关设定\r
handleBPAT(mConnection,mRuntime,cmd);\r
break;\r
\r
+ case BPBT://蓝牙扫描设置\r
+ handleBPBT(mConnection,mRuntime,cmd);\r
+ break;\r
\r
}\r
\r
<output-test url="file://$MODULE_DIR$/build/intermediates/javac/debugUnitTest/classes" />\r
<exclude-output />\r
<content url="file://$MODULE_DIR$">\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debug/compileDebugAidl/out" isTestSource="false" generated="true" />\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debug/out" isTestSource="false" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debug/compileDebugRenderscript/out" isTestSource="false" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" generated="true" />\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />\r
- <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugAndroidTest/out" isTestSource="true" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/renderscript_source_output_dir/debugAndroidTest/compileDebugAndroidTestRenderscript/out" isTestSource="true" generated="true" />\r
+ <sourceFolder url="file://$MODULE_DIR$/build/generated/aidl_source_output_dir/debugAndroidTest/compileDebugAndroidTestAidl/out" isTestSource="true" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" generated="true" />\r
<sourceFolder url="file://$MODULE_DIR$/build/generated/ap_generated_sources/debugUnitTest/out" isTestSource="true" generated="true" />\r