From 3cae9fd20e889c075bda0a59b64a78464c5b5d91 Mon Sep 17 00:00:00 2001 From: toby Date: Fri, 22 Jul 2016 15:46:48 -0400 Subject: [PATCH] communication activity working --- .../2.4/taskArtifacts/cache.properties.lock | Bin 17 -> 17 bytes .gradle/2.4/taskArtifacts/fileHashes.bin | Bin 281684 -> 316096 bytes .gradle/2.4/taskArtifacts/fileSnapshots.bin | Bin 4465675 -> 4825557 bytes .../2.4/taskArtifacts/outputFileStates.bin | Bin 21602 -> 22232 bytes .gradle/2.4/taskArtifacts/taskArtifacts.bin | Bin 72283 -> 86140 bytes .idea/misc.xml | 2 +- app/src/main/AndroidManifest.xml | 14 +- .../edu/cmu/hcii/sugilite/MainActivity.java | 1 + .../hcii/sugilite/RecordingPopUpDialog.java | 9 + .../SugiliteAccessibilityService.java | 2 + .../SugiliteCommunicationActicvity.java | 224 ++++++++++++++++++ .../SugiliteCommunicationController.java | 1 + .../json/SugiliteScriptJSON.java | 4 +- .../sugilite/mRecordingPopUpActivity.java | 2 +- ...ivity_sugilite_communication_acticvity.xml | 27 +++ app/src/main/res/values/strings.xml | 1 + 16 files changed, 281 insertions(+), 6 deletions(-) create mode 100644 app/src/main/java/edu/cmu/hcii/sugilite/RecordingPopUpDialog.java create mode 100644 app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationActicvity.java create mode 100644 app/src/main/res/layout/activity_sugilite_communication_acticvity.xml diff --git a/.gradle/2.4/taskArtifacts/cache.properties.lock b/.gradle/2.4/taskArtifacts/cache.properties.lock index 298d139990d3329dfef8169d898966959caa5ccf..f4f73720fe6cdd0041bcaef14169e373bc29e0cc 100644 GIT binary patch literal 17 WcmZR68S|sD&RX~x0|+q6EC&EOd<8fF literal 17 WcmZR68S|sD&RX~x0|+qkp926oi3L&s diff --git a/.gradle/2.4/taskArtifacts/fileHashes.bin b/.gradle/2.4/taskArtifacts/fileHashes.bin index e15f4912f60645662616f3fc50321e00d61f4428..4530911051b51f97f5e03e16f83369acba2da194 100644 GIT binary patch delta 38382 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 diff --git a/.gradle/2.4/taskArtifacts/fileSnapshots.bin b/.gradle/2.4/taskArtifacts/fileSnapshots.bin index 466073b4f223dc5c686f1ab4f550e28dfd5bff56..647e498451c09de84c405166ecfdcc2f2d94cdfa 100644 GIT binary patch delta 51762 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 diff --git a/.gradle/2.4/taskArtifacts/outputFileStates.bin b/.gradle/2.4/taskArtifacts/outputFileStates.bin index f6bcf7b0dc6e65890dd9c82d3d0c1f4daf06af32..8f0f76112b66f8277d9a7e2ad253bd054d62f623 100644 GIT binary patch delta 1112 zcmaE~g7L;$#trroj5U)TBn$*vkDYeA_SxM%F)B=cLNWDLExB}=h^ww*4Cw}e>z*m!q9-~TLj=RvCO?o?5V+md@Mrqeo)=Iv_e}mF zt;p}1^jYrLpAx9Ty2%1E83IpkKA&w?X$VyqdTMfkjD^6nB^Peb&wVigYLD3D1u_;I zpBcV9m|uQ+BUEtBe<=8Tz&~NN(w#=ARY{XC$OH)d`E|BqZ9!)R)UJfd60#38q^&-% zNqoH81T~=#W`YdY=IF+M2k*EvCY+kz8dCf7qPwl&F6yn9{) z$OXDaf;Amg^F2o0x^PxUCa~tY--=OXPuCiY)Gun<1(JQ=!;_3E`}9WVj;{W>^FXp0 zg3`*Uvh|+IOYG9uUVa0T-f6t{C8~6RT7`W5zuk2p*#*nqEJKy`;@>lUp7lC0kZgt& zt17DO(HoN$4i$0BfMi8|vuB{n-d(zW%`^4#`Ye#N|H+t4RB8QxUqn7l{KF5D&0BN- zJgTf?%*Kg3d4f$qvNa0Z7NW{NH!^YEke1a4l6~^~=@wMkRs{o*!v7{eK(af3R~e&2Albu@4HE%Y(mLe; delta 110 zcmV-!0FnRLtpVbw0kA(90cVpy7%-EF7)X=o7y|%9C(wE92k?p z92t}G9AA@Y9Waxy9Wav+9!QgL9@vw3A25@^A4!uTAV{-;AbvrtG93_yMxFkp*B#;oWD24$72GEI&B2e!4i->?lOiWNv402Jl1+~@-6(;nX z1{61Cu&ygI@hCy7NMN%Q1VJVs6h*D8GEH?BCnCE41Vih#KHGWD`#j(Izw7`1-}j#3 z)6AF049YDXIE3zr*h~b=Q{t8Ph>LpFx~WDf8Or4^A{{(gck?JWDDr%nk|0v3{HkcTuu$ z`E}MC?cgP{N;B+F!R>TA_%PWDU4*&YCFatc9JgG>28A?Fu|S%$o`8bzTxRvTs7Y#5 z#IPy%t4ES&*Xn#Ou!p$5_NxqT=-t^O#~(}|HXokYcH{>QU%R-z9C{{m^x&*zXUkGC4+X>V*R_o2c|KgqYtRY}*Qr1w6QVcbuBH_N9T9 z6OQ9VZiw3FZL?CmbmZ9UBMP4f{!o!P2Xds==q}vO3WAlzcyCcHU zIp~e^#9v0>QMVLkMRFi9(w#|U*gJvQMn{m`@P^Y$dm*y{w?P9r&+!n``C0#b^7+pA zQO@CqCv`_WRmI08(`g!V+4_>H3%Qq(nrDGxNJAz!-NzsYwx749PUg4Rn%nObK8jXf z{?^mZDMhJ~h^f&-MhLd2*{PoJQ4keT>4nTgt}e@eblz>SW!y9{@RN4S|7PPw+z)cd z_Zl$>i#Z#x(!caSYcnWL!C1Y; ztbXO_sSKR>`I2CU8_`cMaUjX@Yun=lO%;g0!sv z!^L_3RKq*$gO!}4@q%ohcJ2RmF{bOi%jiy}y8Ful?dYmWOn_u64Kg{)JNw1^N!zMw z9NYc7QXBDzdZRu(>Y=lwneq)1{j85>1>Nj2AmmOYu1I*D>He|}WX@)V&Rpd!>@jFe5m>Bkl z&Wvwy=~MKnJRUVc{GA2hrZ9qdc@7i1(v0B(kL4x|r7R1s-$|xQ6-SWx>SR$eU6%pw zQv+`rd1LpY&Ah%V^y*({c<6$zRS$$2Lt3^q8lrd3lNDrckOwL^W@N6_*8#kt z8brV%WhgZ{WPvD$>|c@M@_}JnIz00q7-KZZGoZ1es_o}%RtVp-Y2ip`CKcU#!+BgV zf5HO4BqP)h0Xt%6_9p%9#|Y||N1+zoURJA_aH7r#im+i9RNQfexLvcLQ_G=UsgINP zA@TCexhmc6O!3YPXpo#b=}7FE(Uv|git0)*Sv8$LeYXHpA4?nm%7RyvGt2ZL);6J+G({r5!Sogl6WiE096JWSl@qRL{SB;X!)Re7>e zsH&BPLg1vjK&@pXEeRzTIbxq?(Ld>WjNLIXO&U9qNAkhqzQcGV3jC6*K0jDJGvQDr z3x%a)RR@#<)#v4KweRg8j5?o>eof8`U02vl$22U$z^rCiK<*VU z`RM78?`#IA>ucKqpVxTq{n0RJQbJU<0wjW*uGvgxzETF&U0YRtLbM1oO$D2ksFZE> x^lKoR0I&sN>;_!lOv((eEO delta 1767 zcmbtU3rtgI6uzeqUIL>ar4$7kKtMq$;&@pG0~HY*5S_}ZP_Qy4(5~gFA`0STilIBo zMI#Ip!TAKPv4GBi;3AU|Iur-&0n9Py0?eU=h>zV?JGW$uS^Sgl<~#TN|94K#IsgBp zl09&dRbmZnRY35@3!#%df&e)|ug3iX`pec*!f5>ZV?FnXtuxZ|!%M4O_1yYI5m(Q* zf0=S!&nM1QROq?VVYyYkCdx)NXoL2=9EJ@S%XsUVL>d>TcuSbX>T(RW&9ozu9z1`! z9;Xz?Qn3?>x-`IS47+W)jEF3}XY0u%Rwvax=pqtCsLS*?etfc!RH;NMRUa0>1W>NYQ)~kjK`>OH4xIys7}zA6 zZNS(}|JkfA^a4k~&?q}IS!RYjGeap(l_e|1q+|iOfLQ%N2mq|0nA2HUS;5D^mA+KT zu@TUv7k0Df9PW%?OnsG6J@rG`L0m{eo*MtRr;;d<~q*NPqP=!_|J{@UI}@pYfPdu%S^EBY8C(AH@X6=+|6wt=5-3G z<|CCxi~uH;Ub~OMc`EaJzJV18!jX7c;$GYRjTj?wCLP?t2D>7HuzSqdV52lKGx-W? zqUVw0^I!&BXOr)Fz%oiWE&>j3hue%^-_pxI2Q4N&rjxt=zl5$(zu0fTjhq5^oe@>z zoUb+9v>ong=9qOZBnZQsG}>q&b71u*EA@p0zq7+s-1}4UJ-V0}Ut|NfNR1Z+zDQb( z-9-l=f}Vic|7;w7w%ZBBB;B{CoYt{J#yK~#?|jq#Xx-iE{JnaqXQtxSN~uCA&X6VM ziczw~nyiX~S!`YBUkIS+{A~Q;j0b7&4SX~laz$C3lGA*s{7zf%MBnry|M;Jh!tcJJ zU^c5vn)?L`@4IOy+@*dH`nAO{Urr;0Ak5A&hsQ@xEllC~)^3k^Cq?eIrxh?pAt0am zf)gcbhy<*goNHOEl&7X-DCZ}oN|eg8qXb({{^$p*)S^Xj6L568&9broWXWh%L3#p* ztup7fZ26lEePdqUA|pewuK#Uht1$$a==gkzJibXcA5nf_gwYQhux>pUhfX+<<^JH0 z^64}dR%ZLFsPv=uXllhRqY=h**&&Y62tPNd$yzB`GG5j~p{i;&Rnk7m zu;xW zzb-{hXD3E#Hju&<^l+JLg2?<8pu#Z?PdzshW`TuZ&Ch)4vW8`S_uKd0sOvcS+5?Nu gTv>YKR`GB*si=y~SGm3JfG%x{XPHKI^%jTz39sd+%>V!Z diff --git a/.idea/misc.xml b/.idea/misc.xml index 5d199810..fbb68289 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -37,7 +37,7 @@ - + diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 84c2961e..6386a569 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,7 +20,8 @@ + android:theme="@style/AppTheme.NoActionBar" + android:noHistory="true"> @@ -61,8 +62,15 @@ + android:noHistory="true" + android:label="Sugilite Script Recording" > + + + + + + diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/MainActivity.java b/app/src/main/java/edu/cmu/hcii/sugilite/MainActivity.java index 50dbb41d..65a34431 100644 --- a/app/src/main/java/edu/cmu/hcii/sugilite/MainActivity.java +++ b/app/src/main/java/edu/cmu/hcii/sugilite/MainActivity.java @@ -44,6 +44,7 @@ public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { + Intent intent = getIntent(); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/RecordingPopUpDialog.java b/app/src/main/java/edu/cmu/hcii/sugilite/RecordingPopUpDialog.java new file mode 100644 index 00000000..e04df758 --- /dev/null +++ b/app/src/main/java/edu/cmu/hcii/sugilite/RecordingPopUpDialog.java @@ -0,0 +1,9 @@ +package edu.cmu.hcii.sugilite; + +/** + * @author toby + * @date 7/22/16 + * @time 12:18 PM + */ +public class RecordingPopUpDialog { +} diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/SugiliteAccessibilityService.java b/app/src/main/java/edu/cmu/hcii/sugilite/SugiliteAccessibilityService.java index 33c7c8e3..0dfa7807 100644 --- a/app/src/main/java/edu/cmu/hcii/sugilite/SugiliteAccessibilityService.java +++ b/app/src/main/java/edu/cmu/hcii/sugilite/SugiliteAccessibilityService.java @@ -222,6 +222,8 @@ private Intent generatePopUpActivityIntentFromEvent(AccessibilityEvent event, Ac //pop up the selection window Intent popUpIntent = new Intent(this, mRecordingPopUpActivity.class); popUpIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + popUpIntent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + popUpIntent.putExtra("packageName", sourceNode.getPackageName()); popUpIntent.putExtra("className", sourceNode.getClassName()); popUpIntent.putExtra("text", sourceNode.getText()); diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationActicvity.java b/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationActicvity.java new file mode 100644 index 00000000..5cbcc197 --- /dev/null +++ b/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationActicvity.java @@ -0,0 +1,224 @@ +package edu.cmu.hcii.sugilite.communication; + +import android.app.Activity; +import android.app.AlertDialog; +import android.content.Context; +import android.content.DialogInterface; +import android.content.Intent; +import android.content.SharedPreferences; +import android.preference.PreferenceManager; +import android.support.v7.app.AppCompatActivity; +import android.os.Bundle; +import android.view.WindowManager; +import android.widget.TextView; +import android.widget.Toast; + +import com.google.gson.Gson; + +import java.io.OutputStream; +import java.util.ArrayList; +import java.util.List; + +import edu.cmu.hcii.sugilite.R; +import edu.cmu.hcii.sugilite.SugiliteData; +import edu.cmu.hcii.sugilite.automation.ServiceStatusManager; +import edu.cmu.hcii.sugilite.dao.SugiliteScriptDao; +import edu.cmu.hcii.sugilite.model.block.SugiliteStartingBlock; +import edu.cmu.hcii.sugilite.ui.VariableSetValueDialog; + +public class SugiliteCommunicationActicvity extends AppCompatActivity { + TextView messageType, scriptName; + SugiliteScriptDao sugiliteScriptDao; + SugiliteBlockJSONProcessor jsonProcessor; + SugiliteData sugiliteData; + SharedPreferences sharedPreferences; + Context context; + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_sugilite_communication_acticvity); + messageType = (TextView)findViewById(R.id.receive_message_textview); + scriptName = (TextView)findViewById(R.id.receive_message_script_name); + messageType.setText("TEST MESSAGE TYPE"); + String arg1 = "", arg2 = ""; + if (getIntent().getExtras() != null) + { + arg1 = getIntent().getStringExtra("messageType"); + messageType.setText(arg1); + /* + START_RECORDING, scriptName + END_RECORDING, "NULL" + RUN_SCRIPT, scriptName + GET_SCRIPT, scriptName + GET_SCRIPT_LIST, "NULL + */ + + arg2 = getIntent().getStringExtra("scriptName"); + scriptName.setText(arg2); + + } + this.sugiliteScriptDao = new SugiliteScriptDao(this); + this.jsonProcessor = new SugiliteBlockJSONProcessor(this); + this.sugiliteData = (SugiliteData)getApplication(); + this.sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); + this.context = this; + handleRequest(arg1, arg2); + + } + + private void handleRequest(String messageType, final String scriptName){ + boolean recordingInProcess = sharedPreferences.getBoolean("recording_in_process", false); + switch (messageType){ + case "START_RECORDING": + if(recordingInProcess) { + //the exception message below will be sent when there's already recording in process + //TODO: send exception message + } + else { + //NOTE: script name should be specified in msg.getData().getString("request"); + if (scriptName != null) { + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle("New Recording") + .setMessage("Now start recording new script " + scriptName) + .setNegativeButton("Cancel", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + dialog.dismiss(); + } + }) + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + sugiliteData.clearInstructionQueue(); + SharedPreferences.Editor editor = sharedPreferences.edit(); + editor.putString("scriptName", scriptName); + editor.putBoolean("recording_in_process", true); + editor.commit(); + + sugiliteData.initiateScript(scriptName + ".SugiliteScript"); + sugiliteData.initiatedExternally = true; + + try { + sugiliteScriptDao.save(sugiliteData.getScriptHead()); + } catch (Exception e) { + e.printStackTrace(); + } + + Toast.makeText(getApplicationContext(), "Recording new script " + sharedPreferences.getString("scriptName", "NULL"), Toast.LENGTH_SHORT).show(); + + //go to home screen for recording + Intent startMain = new Intent(Intent.ACTION_MAIN); + startMain.addCategory(Intent.CATEGORY_HOME); + startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); + startActivity(startMain); + } + }); + AlertDialog dialog = builder.create(); + dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + dialog.show(); + } + } + break; + case "END_RECORDING": + if(recordingInProcess) { + + SharedPreferences.Editor prefEditor = sharedPreferences.edit(); + prefEditor.putBoolean("recording_in_process", false); + prefEditor.commit(); + if(sugiliteData.initiatedExternally == true && sugiliteData.getScriptHead() != null) + sendRecordingFinishedSignal(sugiliteData.getScriptHead().getScriptName()); + + Toast.makeText(context, "end recording", Toast.LENGTH_SHORT).show(); + } + else { + //the exception message below will be sent when there's no recording in process + //TODO: send exception message + } + break; + case "RUN_SCRIPT": + if(recordingInProcess) { + //TODO: send exception message + } + else { + SugiliteStartingBlock script = sugiliteScriptDao.read(scriptName + ".SugiliteScript"); + if(script == null) + //TODO: send exception message + sugiliteData.clearInstructionQueue(); + final ServiceStatusManager serviceStatusManager = new ServiceStatusManager(context); + + if(!serviceStatusManager.isRunning()){ + //prompt the user if the accessiblity service is not active + AlertDialog.Builder builder1 = new AlertDialog.Builder(context); + builder1.setTitle("Service not running") + .setMessage("The Sugilite accessiblity service is not enabled. Please enable the service in the phone settings before recording.") + .setPositiveButton("OK", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + serviceStatusManager.promptEnabling(); + //do nothing + } + }); + AlertDialog dialog = builder1.create(); + dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT); + dialog.show(); + } + else { + sugiliteData.stringVariableMap.putAll(script.variableNameDefaultValueMap); + + //kill all the relevant packages + for (String packageName : script.relevantPackages) { + try { + Process sh = Runtime.getRuntime().exec("su", null, null); + OutputStream os = sh.getOutputStream(); + os.write(("am force-stop " + packageName).getBytes("ASCII")); + os.flush(); + os.close(); + System.out.println(packageName); + } catch (Exception e) { + e.printStackTrace(); + // do nothing, likely this exception is caused by non-rooted device + } + } + sugiliteData.runScript(script); + try { + Thread.sleep(VariableSetValueDialog.SCRIPT_DELAY); + } catch (Exception e) { + // do nothing + } + //go to home screen for running the automation + Intent startMain = new Intent(Intent.ACTION_MAIN); + startMain.addCategory(Intent.CATEGORY_HOME); + startMain.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY); + context.startActivity(startMain); + } + } + break; + case "GET_SCRIPT": + SugiliteStartingBlock script = sugiliteScriptDao.read(scriptName + ".SugiliteScript"); + if(script != null) + sendReturnValue(jsonProcessor.scriptToJson(script)); + else + //the exception message below will be sent when can't find a script with provided name + //TODO: send exception message + break; + case "GET_SCRIPT_LIST": + List allNames = sugiliteScriptDao.getAllNames(); + List retVal = new ArrayList<>(); + for(String name : allNames) + retVal.add(name.replace(".SugiliteScript", "")); + sendReturnValue(new Gson().toJson(retVal)); + break; + } + } + + public boolean sendRecordingFinishedSignal(String scriptName){ + return true; + } + + private void sendReturnValue(String retVal){ + Intent returnIntent = new Intent(); + returnIntent.putExtra("result", retVal); + setResult(Activity.RESULT_OK,returnIntent); + finish(); + } +} diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationController.java b/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationController.java index 26c68773..97d9abf3 100644 --- a/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationController.java +++ b/app/src/main/java/edu/cmu/hcii/sugilite/communication/SugiliteCommunicationController.java @@ -300,6 +300,7 @@ public void onClick(DialogInterface dialog, int which) { context.startActivity(startMain); } } + break; default: Log.e( TAG, "Message not supported!"); diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/communication/json/SugiliteScriptJSON.java b/app/src/main/java/edu/cmu/hcii/sugilite/communication/json/SugiliteScriptJSON.java index bdd771b1..474983ca 100644 --- a/app/src/main/java/edu/cmu/hcii/sugilite/communication/json/SugiliteScriptJSON.java +++ b/app/src/main/java/edu/cmu/hcii/sugilite/communication/json/SugiliteScriptJSON.java @@ -2,6 +2,7 @@ import android.content.Context; +import java.util.HashMap; import java.util.Map; import edu.cmu.hcii.sugilite.model.block.SugiliteOperationBlock; @@ -16,9 +17,10 @@ public class SugiliteScriptJSON { public SugiliteScriptJSON(SugiliteStartingBlock startingBlock){ this.scriptName = new String(startingBlock.getScriptName()); this.scriptName.replace(".SugiliteScript", ""); + variables = new HashMap<>(); for(Map.Entry entry : startingBlock.variableNameDefaultValueMap.entrySet()){ if(entry.getValue() instanceof StringVariable) - variables.put(entry.getKey(), ((StringVariable) entry.getValue()).getValue()); + this.variables.put(entry.getKey(), ((StringVariable) entry.getValue()).getValue()); } if(startingBlock.getNextBlock() != null && startingBlock.getNextBlock() instanceof SugiliteOperationBlock) nextBlock = new SugiliteOperationBlockJSON((SugiliteOperationBlock)startingBlock.getNextBlock()); diff --git a/app/src/main/java/edu/cmu/hcii/sugilite/mRecordingPopUpActivity.java b/app/src/main/java/edu/cmu/hcii/sugilite/mRecordingPopUpActivity.java index 47502fab..233dba11 100644 --- a/app/src/main/java/edu/cmu/hcii/sugilite/mRecordingPopUpActivity.java +++ b/app/src/main/java/edu/cmu/hcii/sugilite/mRecordingPopUpActivity.java @@ -238,7 +238,7 @@ private void setupSelections(){ SimpleDateFormat dateFormat; dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ", Locale.US); dateFormat.setTimeZone(TimeZone.getTimeZone("US/Eastern")); - boolean autoFillEnabled = sharedPreferences.getBoolean("auto_fill_enabled", false); + boolean autoFillEnabled = sharedPreferences.getBoolean("auto_fill_enabled", true); LinearLayout identifierLayout = (LinearLayout) findViewById(R.id.identifier_layout); CompoundButton.OnCheckedChangeListener identiferCheckboxChangeListener = new CompoundButton.OnCheckedChangeListener() { diff --git a/app/src/main/res/layout/activity_sugilite_communication_acticvity.xml b/app/src/main/res/layout/activity_sugilite_communication_acticvity.xml new file mode 100644 index 00000000..da489103 --- /dev/null +++ b/app/src/main/res/layout/activity_sugilite_communication_acticvity.xml @@ -0,0 +1,27 @@ + + + + + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 47ca4d3f..f0b626ff 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -63,5 +63,6 @@ Silent Vibrate + CommunicationInterfaceActivity