Browse Source

Extracted string literals to strings.xml and refactored GettingStartedActivity

Víctor Hernández 3 years ago
parent
commit
d2eb8980a5

+ 186
- 309
app/src/main/java/uprrp/tania/activities/GettingStartedActivity.java View File

@@ -47,7 +47,6 @@ import java.io.FileInputStream;
47 47
 import java.io.FileNotFoundException;
48 48
 import java.io.FileOutputStream;
49 49
 import java.io.IOException;
50
-import java.net.MalformedURLException;
51 50
 
52 51
 import uprrp.tania.GlobalValues;
53 52
 import uprrp.tania.R;
@@ -55,59 +54,49 @@ import uprrp.tania.SendConsentForm;
55 54
 
56 55
 public class GettingStartedActivity extends AppCompatActivity {
57 56
 
57
+    private static final String TAG = "GettingStartedActivity";
58 58
     private static final int REQUEST_CONSENT = 0;
59
-
60 59
     public static final String VISUAL_CONSENT_IDENTIFIER = "visual_consent_identifier";
61 60
     public static final String CONSENT_DOC = "consent_doc";
62
-    public static final String SIGNATURE_FORM_STEP = "form_step";
63
-    public static final String NAME = "name";
61
+//    public static final String SIGNATURE_FORM_STEP = "form_step";
62
+//    public static final String NAME = "name";
64 63
     public static final String CONSENT = "consent";
65 64
     public static final String SIGNATURE = "signature";
66 65
 
67 66
     @Override
68 67
     protected void onCreate(@Nullable Bundle savedInstanceState) {
68
+
69
+        // Constructor stuff
69 70
         super.onCreate(savedInstanceState);
70 71
         setContentView(R.layout.activity_getting_started);
71 72
 
72 73
         // Get permission to write to external storage - files
73
-        String[] permissions = {Manifest.permission.WRITE_EXTERNAL_STORAGE};
74
+        String[] permissions = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
74 75
         requestPermissions(permissions, 1);
75 76
 
76
-        Button createAccount = findViewById(R.id.buttonCreateAccount);
77
-        Button loginAccount = findViewById(R.id.buttonRecoverAccount);
78
-
79
-        createAccount.setOnClickListener(new View.OnClickListener() {
77
+        // Attach onClick listeners to buttons
78
+        Button createAccountButton = findViewById(R.id.buttonCreateAccount);
79
+        Button loginAccountButton = findViewById(R.id.buttonRecoverAccount);
80
+        createAccountButton.setOnClickListener(new View.OnClickListener() {
80 81
             @Override
81 82
             public void onClick(View v) {
82
-                try {
83 83
                     launchConsent();
84
-                } catch (Exception e) {
85
-                    e.printStackTrace();
86
-                }
87 84
             }
88 85
         });
89
-
90
-        loginAccount.setOnClickListener(new View.OnClickListener() {
86
+        loginAccountButton.setOnClickListener(new View.OnClickListener() {
91 87
             @Override
92 88
             public void onClick(View v) {
93
-                try {
94
-                    Intent loginAccountIntent = new Intent(GettingStartedActivity.this, LoginActivity.class);
95
-                    startActivity(loginAccountIntent);
96
-
97
-                } catch (Exception e) {
98
-                    e.printStackTrace();
99
-                }
89
+                Intent loginAccountIntent = new Intent(GettingStartedActivity.this, LoginActivity.class);
90
+                startActivity(loginAccountIntent);
100 91
             }
101 92
         });
102 93
 
103
-
104 94
     }
105 95
 
106 96
     @Override
107 97
     protected void onActivityResult(int requestCode, int resultCode, Intent data) {
108 98
         super.onActivityResult(requestCode, resultCode, data);
109
-
110
-        if (requestCode == REQUEST_CONSENT && resultCode == RESULT_OK) {
99
+        if(requestCode == REQUEST_CONSENT && resultCode == RESULT_OK) {
111 100
             processConsentResult((TaskResult) data.getSerializableExtra(ViewTaskActivity.EXTRA_TASK_RESULT));
112 101
         }
113 102
     }
@@ -115,143 +104,89 @@ public class GettingStartedActivity extends AppCompatActivity {
115 104
 
116 105
     @Override
117 106
     public void onRequestPermissionsResult(int requestCode, String permissions [], int[] grantResults) {
118
-        if (requestCode == 1) {
119
-                if (grantResults[0] != PackageManager.PERMISSION_GRANTED) {
120
-                    Toast.makeText(getApplicationContext(), "Permission for writing to external storage: DENIED", Toast.LENGTH_LONG).show();
121
-                }
107
+        if(requestCode == 1) {
108
+            if(grantResults[0] != PackageManager.PERMISSION_GRANTED) {
109
+                Toast.makeText(getApplicationContext(), "Permission for writing to external storage: DENIED", Toast.LENGTH_LONG).show();
110
+            }
122 111
         }
123 112
     }
124 113
 
125 114
 
126 115
     private void processConsentResult(TaskResult result) {
116
+
127 117
         boolean consented = (boolean) result.getStepResult(CONSENT_DOC).getResult();
118
+        StorageAccess.getInstance().getAppDatabase().saveTaskResult(result);
128 119
 
129
-        if (consented) {
120
+        if(consented) {
130 121
             try {
131
-                StorageAccess.getInstance().getAppDatabase().saveTaskResult(result);
132 122
 
123
+                // Get signature in base64
133 124
                 TaskResult taskResult = StorageAccess.getInstance()
134 125
                         .getAppDatabase()
135 126
                         .loadLatestTaskResult(CONSENT);
136
-
137 127
                 String signatureBase64 = (String) taskResult.getStepResult(SIGNATURE)
138 128
                         .getResultForIdentifier(ConsentSignatureStepLayout.KEY_SIGNATURE);
139 129
 
130
+                // Get signature date
140 131
                 String signatureDate = (String) result.getStepResult(SIGNATURE)
141 132
                         .getResultForIdentifier(ConsentSignatureStepLayout.KEY_SIGNATURE_DATE);
142 133
 
134
+                // Use signature to get encoded consent form
143 135
                 byte[] signatureBytes = Base64.decode(signatureBase64, Base64.DEFAULT);
144
-
145 136
                 String consentFormBase64 = createPdf(signatureBytes, signatureDate);
146 137
 
147
-
148
-                JSONObject signature = new JSONObject();
149
-                try {
150
-                    signature.put("signaturePDFBase64", consentFormBase64);
151
-                    signature.put("signatureDate", signatureDate);
152
-                    signature.put("token", GlobalValues.getInstance().getDeviceToken()); // FirebaseInstanceId.getInstance().getToken()
153
-
154
-                } catch (JSONException e) {
155
-                    e.printStackTrace();
156
-                }
157
-
158
-                Log.d("CONSENT JSON", signature.toString());
138
+                // Send JSON with consent form, signature date, and token
139
+                JSONObject signatureJSON = new JSONObject();
140
+                signatureJSON.put("signaturePDFBase64", consentFormBase64);
141
+                signatureJSON.put("signatureDate", signatureDate);
142
+                signatureJSON.put("token", GlobalValues.getInstance().getDeviceToken()); // FirebaseInstanceId.getInstance().getToken()
143
+                Log.d("CONSENT JSON", signatureJSON.toString()); // log
159 144
                 SendConsentForm sendConsentForm = new SendConsentForm();
160
-                sendConsentForm.execute(signature.toString());
145
+                sendConsentForm.execute(signatureJSON.toString());
161 146
 
147
+                // Save consent signature and date separately on preferences
162 148
                 SharedPreferences prefs = getSharedPreferences("prefs", MODE_PRIVATE);
163 149
                 SharedPreferences.Editor editor = prefs.edit();
164 150
                 editor.putString("consentSignature", signatureBase64);
165 151
                 editor.putString("consentDate", signatureDate);
166 152
                 editor.apply();
167 153
 
154
+                // Prompt user to register as student
168 155
                 Intent registration = new Intent(this, RegisterActivity.class);
169 156
                 startActivity(registration);
157
+
158
+            } catch (JSONException e) {
159
+                Log.e(TAG, "Couldn't prepare consent form JSON!");
160
+                e.printStackTrace();
170 161
             } catch (Exception e) {
171
-                Log.e("CONSENT ERROR", e.getMessage());
162
+                Log.e(TAG, "Error on processConsentResult(): " + e.getMessage());
163
+                e.printStackTrace();
172 164
             }
173 165
         }
166
+
174 167
     }
175 168
 
176 169
 
177 170
     private void launchConsent() {
178
-        ConsentDocument document = new ConsentDocument();
179
-        document.setTitle("TANIA Consent");
180
-        document.setSignaturePageTitle(R.string.rsb_consent);
181 171
 
182
-        // Create consent visual sections
172
+
173
+        // Consent Section 1 - Overview (Welcome)
183 174
         ConsentSection section1 = new ConsentSection(ConsentSection.Type.Overview);
184
-        section1.setTitle("Welcome");
185
-        section1.setSummary("You have been invited to participate in this study whose objectives are" +
186
-                " (1) to develop and demonstrate the utility of a mobile application (TANIA) " +
187
-                "to collect perception data of students participating in research experiences " +
188
-                "and (2) to use TANIA to determine the sources of self-efficacy that lead to " +
189
-                "career exploration and decision-making in undergraduate students.");
175
+        section1.setTitle(getString(R.string.overviewTitleText));
176
+        section1.setSummary(getString(R.string.overviewConsentSectionSummaryText));
177
+        section1.setContent(getString(R.string.overviewConsentSectionContentText));
190 178
 
191
-        section1.setContent("This study is been carried out under the supervision of Dr. Juan S. Ramírez Lugo," +
192
-                " Department of Biology and Dr. Carlos Corrada Bravo, Department of Computer Sciences" +
193
-                " at the University of Puerto Rico, Rio Piedras Campus. You were selected to participate " +
194
-                "in this study because you are enrolled in a course that offers a research experience " +
195
-                "or you voluntarily participate in research with a professor affiliated to the Río Piedras" +
196
-                " Campus. ");
179
+        ConsentVisualStep visualStep1 = new ConsentVisualStep(VISUAL_CONSENT_IDENTIFIER);
180
+        visualStep1.setStepTitle(R.string.rsb_consent);
181
+        visualStep1.setSection(section1);
182
+        visualStep1.setNextButtonString("Next");
197 183
 
198 184
 
185
+        // Consent Section 2 - Time Commitment
199 186
         ConsentSection section2 = new ConsentSection(ConsentSection.Type.TimeCommitment);
200
-        section2.setTitle("Time Commitment");
201
-        section2.setSummary("In the study you will be asked to answer a questionnaire, about your perception of self-efficacy" +
202
-                " in research, scientific identity and decision-making about your professional career at the beginning" +
203
-                " and end of your research experience. It will take you between 10-20 minutes to answer this questionnaire.");
204
-        section2.setContent("You are also expected to respond to short questionnaires between 1-3 times per week while you are participating" +
205
-                " in the research. You will receive notifications at random times during your research experience and answer " +
206
-                "questions adapted from survey instruments that have been previously validated. It will take you between " +
207
-                "1-3 minutes to answer these questionnaires. It is expected that 25 students will participate in this phase " +
208
-                "of the study.");
209
-
210
-        ConsentSection section3 = new ConsentSection(ConsentSection.Type.DataGathering);
211
-        section3.setTitle("Data Gathering");
212
-        section3.setSummary("While answering the questions, you may feel uncomfortable because the questions " +
213
-                "are about your general opinion about science and research and your career. If you feel " +
214
-                "uncomfortable with the questions, you can stop and choose not to answer the question.");
215
-
216
-        section3.setContent("In addition, when you download the application, it will occupy space in the memory " +
217
-                "of your mobile device and also consume your data plan in the transmission of information when you " +
218
-                "answer the questionnaires. It is estimated that the application will have a size of 40 Mb " +
219
-                "(As reference the WhatsApp application is 88.9 Mb). Although at the moment we cannot say exactly " +
220
-                "how much memory or data you will consume, we understand that both will be minimal. The risks of this" +
221
-                " study are minimal. ");
222
-
223
-        ConsentSection section4 = new ConsentSection(ConsentSection.Type.Privacy);
224
-        section4.setTitle("Privacy");
225
-        section4.setSummary("Your identity will be protected throughout the study. Your identifiable information " +
226
-                "will be handled confidentially and when presenting the results of the investigation you will not " +
227
-                "be identified.");
228
-
229
-        section4.setContent("The information you issue through the application will be through access credentials " +
230
-                "(username and password) that only you will know. These access credentials will be encrypted and any " +
231
-                "subsequent association between you and your data will be made by reference to the encrypted " +
232
-                "information, not your personal identity. The data collected through the questionnaires will " +
233
-                "be stored digitally on a secure hard drive in the researcher's office. These data will also be stored " +
234
-                "virtually in the cloud, with access limited only to researchers.");
235
-
236
-        ConsentSection section5 = new ConsentSection(ConsentSection.Type.DataUse);
237
-        section5.setTitle("Use of Data");
238
-        section5.setSummary("The data obtained will be used to improve academic offerings and research experiences. " +
239
-                "The results of this study may be part of a scientific publication on science education strategies and " +
240
-                "will serve as a basis to improve the teaching curriculum. ");
241
-        section5.setContent("It may be used to develop proposals for obtaining external funds for research. The officials " +
242
-                "of the Rio Piedras Campus of the University of Puerto Rico and / or federal agencies responsible for ensuring " +
243
-                "the integrity of the research may require the researcher to prove the data obtained in this study, including " +
244
-                "this informed consent.\n" + "\n" + "The information handled by your device can be intervened or revised by " +
245
-                "third parties. These people can be people with legitimate or illegitimate access to the device and its content " +
246
-                "such as a family member, employer, hackers, intruders, etc. In addition, the device that you use may keep track " +
247
-                "of the information you access or send over the Internet.\n");
248
-
249
-        // ...add more sections as needed, then create a visual consent step
250
-        ConsentVisualStep visualStep = new ConsentVisualStep(VISUAL_CONSENT_IDENTIFIER);
251
-        visualStep.setStepTitle(R.string.rsb_consent);
252
-        visualStep.setSection(section1);
253
-        visualStep.setNextButtonString("Next");
254
-
187
+        section2.setTitle(getString(R.string.timeCommitmentTitleText));
188
+        section2.setSummary(getString(R.string.timeCommitmentConsentSectionSummaryText));
189
+        section2.setContent(getString(R.string.timeCommitmentConsentSectionContentText));
255 190
 
256 191
         ConsentVisualStep visualStep2 = new ConsentVisualStep("visual_step_2");
257 192
         visualStep2.setStepTitle(R.string.rsb_consent);
@@ -259,18 +194,36 @@ public class GettingStartedActivity extends AppCompatActivity {
259 194
         visualStep2.setNextButtonString("Next");
260 195
 
261 196
 
197
+        // Consent Section 3 - Data Gathering
198
+        ConsentSection section3 = new ConsentSection(ConsentSection.Type.DataGathering);
199
+        section3.setTitle(getString(R.string.dataGatheringTitleText));
200
+        section3.setSummary(getString(R.string.dataGatheringConsentSectionSummaryText));
201
+        section3.setContent(getString(R.string.dataGatheringConsentSectionContentText));
202
+
262 203
         ConsentVisualStep visualStep3 = new ConsentVisualStep("visual_step_3");
263 204
         visualStep3.setStepTitle(R.string.rsb_consent);
264 205
         visualStep3.setSection(section3);
265 206
         visualStep3.setNextButtonString("Next");
266 207
 
267 208
 
209
+        // Consent Section 4 - Privacy
210
+        ConsentSection section4 = new ConsentSection(ConsentSection.Type.Privacy);
211
+        section4.setTitle(getString(R.string.privacyTitleText));
212
+        section4.setSummary(getString(R.string.privacyConsentSectionSummaryText));
213
+        section4.setContent(getString(R.string.privacyConsentSectionContentText));
214
+
268 215
         ConsentVisualStep visualStep4 = new ConsentVisualStep("visual_step_4");
269 216
         visualStep4.setStepTitle(R.string.rsb_consent);
270 217
         visualStep4.setSection(section4);
271 218
         visualStep4.setNextButtonString("Next");
272 219
 
273 220
 
221
+        // Consent Section 5 - Data Use
222
+        ConsentSection section5 = new ConsentSection(ConsentSection.Type.DataUse);
223
+        section5.setTitle(getString(R.string.dataUseTitleText));
224
+        section5.setSummary(getString(R.string.dataUseConsentSectionSummaryText));
225
+        section5.setContent(getString(R.string.dataUseConsentSectionContentText));
226
+
274 227
         ConsentVisualStep visualStep5 = new ConsentVisualStep("visual_step_5");
275 228
         visualStep5.setStepTitle(R.string.rsb_consent);
276 229
         visualStep5.setSection(section5);
@@ -282,98 +235,47 @@ public class GettingStartedActivity extends AppCompatActivity {
282 235
         signature.setRequiresName(true);
283 236
         signature.setRequiresSignatureImage(true);
284 237
 
238
+
285 239
         // Create our HTML to show the user and have them accept or decline.
286
-        StringBuilder docBuilder = new StringBuilder(
287
-                "</br><div style=\"padding: 10px 10px 10px 10px;\" class='header'>");
288
-        String title = getString(R.string.rsb_consent_review_title);
289
-        docBuilder.append(String.format(
290
-                "<h1 style=\"text-align: center; font-family:sans-serif-light;\">%1$s</h1>",
291
-                title));
292
-        String detail = getString(R.string.rsb_consent_review_instruction);
293
-        docBuilder.append(String.format("<p style=\"text-align: center\">%1$s</p>", detail));
294
-        docBuilder.append("</div></br>");
295
-        docBuilder.append("<div> <h2> Welcome </h2>\n" +
296
-                "<p align='justify'> You have been invited to participate in this study whose objectives are (1) " +
297
-                "to develop and demonstrate the utility of a mobile application (TANIA) to collect " +
298
-                "perception data of students participating in research experiences and (2) to use " +
299
-                "TANIA to determine the sources of self-efficacy that lead to career exploration " +
300
-                "and decision-making in undergraduate students. This study is been carried out " +
301
-                "under the supervision of Dr. Juan S. Ramirez Lugo, Department of Biology and " +
302
-                "Dr. Carlos Corrada Bravo, Department of Computer Sciences at the University of " +
303
-                "Puerto Rico, Rio Piedras Campus. You were selected to participate in this study " +
304
-                "because you are enrolled in a course that offers a research experience or you " +
305
-                "voluntarily participate in research with a professor affiliated to the " +
306
-                "Rio Piedras Campus. </p> " +
307
-                "\n" +
308
-                "<h2> Time Commitment </h2> " +
309
-                "<p align='justify'> In the study you will be asked to answer a questionnaire, about your " +
310
-                "perception of self-efficacy in research, scientific identity and decision-making " +
311
-                "about your professional career at the beginning and end of your research experience. " +
312
-                "It will take you between 10-20 minutes to answer this questionnaire. You are " +
313
-                "also expected to respond to short questionnaires between 1-3 times per week " +
314
-                "while you are participating in the research. You will receive notifications at " +
315
-                "random times during your research experience and answer questions adapted from " +
316
-                "survey instruments that have been previously validated. It will take you between " +
317
-                "1-3 minutes to answer these questionnaires. It is expected that 25 students will " +
318
-                "participate in this phase of the study.</p> " +
319
-                "\n" +
320
-                "<h2> Data Gathering </h2> " +
321
-                "<p align='justify'> While answering the questions, you may feel uncomfortable because " +
322
-                "the questions are about your general opinion about science and research and your career. " +
323
-                "If you feel uncomfortable with the questions, you can stop and choose not to answer the question. " +
324
-                "When you download the application, it will occupy space in the memory of your mobile device and " +
325
-                "also consume your data plan in the transmission of information when you answer the questionnaires. " +
326
-                "It is estimated that the application will have a size of 40 Mb (As reference the WhatsApp " +
327
-                "application is 88.9 Mb). Although at the moment we cannot say exactly how much memory or " +
328
-                "data you will consume, we understand that both will be minimal. The risks of this study " +
329
-                "are minimal. </p> " +
330
-                "\n" +
331
-                "<h2> Privacy </h2> " +
332
-                "<p align='justify'> Your identity will be protected throughout the study. Your identifiable " +
333
-                "information will be handled confidentially and when presenting the results of " +
334
-                "the investigation you will not be identified. The information you issue through " +
335
-                "the application will be through access credentials (username and password) that " +
336
-                "only you will know. These access credentials will be encrypted and any subsequent " +
337
-                "association between you and your data will be made by reference to the encrypted " +
338
-                "information, not your personal identity. The data collected through the " +
339
-                "questionnaires will be stored digitally on a secure hard drive in the researcher's " +
340
-                "office. These data will also be stored virtually in the cloud, with access limited " +
341
-                "only to researchers. </p> " +
342
-                "\n" +
343
-                "<h2> Use of Data </h2> " +
344
-                "<p align='justify'> The data obtained will be used to improve academic offerings and research " +
345
-                "experiences. The results of this study may be part of a scientific publication " +
346
-                "on science education strategies and will serve as a basis to improve the teaching " +
347
-                "curriculum. It may be used to develop proposals for obtaining external funds for " +
348
-                "research. The officials of the Rio Piedras Campus of the University of Puerto Rico " +
349
-                "and / or federal agencies responsible for ensuring the integrity of the research " +
350
-                "may require the researcher to prove the data obtained in this study, including " +
351
-                "this informed consent. </p> " +
352
-                "\n" +
353
-                "<h2> General </h2> " +
354
-                "<p align ='justify'> If you decide to participate in this study, understand that your participation " +
355
-                "is completely voluntary and that you have the right to abstain from participating or even withdraw at " +
356
-                "any time of the study without incurring in any penalty. In the application you will find the instructions " +
357
-                "to withdraw from the study and stop receiving notifications if you wish. You also have the right not to " +
358
-                "answer any question if you wish. Your participation in this study will not affect in any way your academic " +
359
-                "evaluation in the courses in which you are carrying out this research. Finally, you have the right to " +
360
-                "receive a copy of this document.\n" +
361
-                "\n" + "If you have any questions or would like more information about this study, please contact " +
362
-                "Prof. Ramirez Lugo at 787-764-0000 Ext. 88068, at 787-918-5330 or by email at juan.ramirez3@upr.edu " +
363
-                "at any moment. If you have any questions about your rights as a participant or claim or complaint related " +
364
-                "to your participation in this study, you may contact the Compliance Officer of the R’o Piedras Campus of " +
365
-                "the University of Puerto Rico, at telephone 764-0000, extension 86773 or cipshi. degi@upr.edu.\n" +
366
-                "\n" +
367
-                "Your signature on this document means that you have decided to participate voluntarily, that the information " +
368
-                "presented on this Consent Sheet has been discussed and that you have received a copy of this document. " +
369
-                "This printed sheet will be stored under lock and key for a period of 5 years after completion of the " +
370
-                "investigation and will then be shredded and discarded.</div>");
371
-
372
-        // Create the Consent doc step, pass in our HTML doc
240
+        String consentHtmlString =
241
+
242
+                "<br>" +
243
+
244
+                "<div style='padding: 10px;' class='header'>" +
245
+                    "<h1 style='text-align: center; font-family:sans-serif-light;'>" + getString(R.string.rsb_consent_review_title) + "</h1>" +
246
+                    "<p style='text-align: center'>" + getString(R.string.rsb_consent_review_instruction) + "</p>" +
247
+                "</div>" +
248
+
249
+                "<br>" +
250
+
251
+                "<div>" +
252
+                    "<h2>" + getString(R.string.overviewTitleText) + "</h2>" +
253
+                    "<p align='justify'>" + getString(R.string.consentOverview) + "</p>" +
254
+
255
+                    "<h2>" + getString(R.string.timeCommitmentTitleText) + "</h2>" +
256
+                    "<p align='justify'>" + getString(R.string.consentTimeCommitment) + "</p>" +
257
+
258
+                    "<h2>" + getString(R.string.dataGatheringTitleText) + "</h2>" +
259
+                    "<p align='justify'>" + getString(R.string.consentDataGathering) + "</p>" +
260
+
261
+                    "<h2>" + getString(R.string.privacyTitleText) + "</h2>" +
262
+                    "<p align='justify'>" + getString(R.string.consentPrivacy) + "</p>" +
263
+
264
+                    "<h2>" + getString(R.string.dataUseTitleText) + "</h2>" +
265
+                    "<p align='justify'>" + getString(R.string.consentDataUse) + "</p>" +
266
+
267
+                    "<h2>" + getString(R.string.generalTitleText) + "</h2>" +
268
+                    "<p align='justify'>" + getString(R.string.consentGeneral) + "</p>" +
269
+                    "<p align='justify'>" + getString(R.string.consentConclusion) + "</p>" +
270
+                "</div>";
271
+
272
+
273
+        // Create the consent document step and pass in our HTML
373 274
         ConsentDocumentStep documentStep = new ConsentDocumentStep(CONSENT_DOC);
374
-        documentStep.setConsentHTML(docBuilder.toString());
275
+        documentStep.setConsentHTML(consentHtmlString);
375 276
         documentStep.setConfirmMessage(getString(R.string.rsb_consent_review_reason));
376 277
 
278
+
377 279
         // Create Consent form step, to get users first & last name
378 280
 //        FormStep formStep = new FormStep(SIGNATURE_FORM_STEP,
379 281
 //                "Form Title",
@@ -386,7 +288,8 @@ public class GettingStartedActivity extends AppCompatActivity {
386 288
 //        QuestionStep fullName = new QuestionStep(NAME, "Full name", format);
387 289
 //        formStep.setFormSteps(Collections.singletonList(fullName));
388 290
 
389
-        // Create Consent signature step, user can sign their name
291
+
292
+        // Create the consent signature step (so that user can sign)
390 293
         ConsentSignatureStep signatureStep = new ConsentSignatureStep(SIGNATURE);
391 294
         signatureStep.setStepTitle(R.string.rsb_consent);
392 295
         signatureStep.setTitle(getString(R.string.rsb_consent_signature_title));
@@ -395,9 +298,18 @@ public class GettingStartedActivity extends AppCompatActivity {
395 298
         signatureStep.setOptional(false);
396 299
         signatureStep.setStepLayoutClass(ConsentSignatureStepLayout.class);
397 300
 
301
+
302
+        // Create consent document
303
+        ConsentDocument document = new ConsentDocument();
304
+        document.setTitle(getString(R.string.appName) + " Consent");
305
+        document.setSignaturePageTitle(R.string.rsb_consent);
306
+        document.addSignature(signature);
307
+        document.getHtmlReviewContent();
308
+
309
+
398 310
         // Finally, create and present a task including these steps.
399 311
         Task consentTask = new OrderedTask(CONSENT,
400
-                visualStep,
312
+                visualStep1,
401 313
                 visualStep2,
402 314
                 visualStep3,
403 315
                 visualStep4,
@@ -406,8 +318,6 @@ public class GettingStartedActivity extends AppCompatActivity {
406 318
 //                formStep,
407 319
                 signatureStep);
408 320
 
409
-        document.addSignature(signature);
410
-        document.getHtmlReviewContent();
411 321
 
412 322
         // Launch using the ViewTaskActivity and make sure to listen for the activity result
413 323
         Intent intent = ViewTaskActivity.newIntent(this, consentTask);
@@ -418,187 +328,154 @@ public class GettingStartedActivity extends AppCompatActivity {
418 328
 
419 329
     private String createPdf(byte[] signatureBytes, String consentDate) {
420 330
 
421
-        Document document = new Document();
422
-        String consentBase64 = null;
423 331
         try {
424
-            String directory_path = Environment.getExternalStorageDirectory().getPath() + "/consent-tania-app.pdf";
425 332
 
426
-            PdfWriter.getInstance(document, new FileOutputStream(directory_path));
333
+            // Open document
334
+            Document document = new Document();
335
+            String filePath = Environment.getExternalStorageDirectory().getPath() + getString(R.string.consentFileName);
336
+            PdfWriter.getInstance(document, new FileOutputStream(filePath));
427 337
             document.open();
428 338
 
339
+
340
+            // Define fonts and offsets
429 341
             Font titleFont = new Font(Font.FontFamily.HELVETICA, 20, Font.BOLD, BaseColor.BLACK);
430
-            Chunk titleChunk = new Chunk("Consent form:\nTANIA", titleFont);
342
+            Font subtitleFont = new Font(Font.FontFamily.HELVETICA, 14, Font.BOLD, BaseColor.BLACK);
343
+            Font signatureSectionFont = new Font(Font.FontFamily.HELVETICA, 12, Font.BOLDITALIC, BaseColor.BLACK);
344
+            int signatureOffsetX = 145;
345
+            int signatureOffsetY = -24;
346
+
347
+
348
+            // Consent Title
349
+            Chunk titleChunk = new Chunk("Consent form:\n" + getString(R.string.appName), titleFont);
431 350
             Paragraph title = new Paragraph(titleChunk);
432 351
             title.setAlignment(Element.ALIGN_CENTER);
433 352
             document.add(title);
434 353
 
435
-            Paragraph newLine = new Paragraph("\n");
354
+            Paragraph newLine = new Paragraph("\n"); // TODO: find out if this is necessary
436 355
             document.add(newLine);
437 356
 
438
-            String consentIntro = "You have been invited to participate in this study whose objectives are (1) " +
439
-                    "to develop and demonstrate the utility of a mobile application (TANIA) to collect " +
440
-                    "perception data of students participating in research experiences and (2) to use " +
441
-                    "TANIA to determine the sources of self-efficacy that lead to career exploration " +
442
-                    "and decision-making in undergraduate students. This study is been carried out " +
443
-                    "under the supervision of Dr. Juan S. Ramirez Lugo, Department of Biology and " +
444
-                    "Dr. Carlos Corrada Bravo, Department of Computer Sciences at the University of " +
445
-                    "Puerto Rico, Rio Piedras Campus. You were selected to participate in this study " +
446
-                    "because you are enrolled in a course that offers a research experience or you " +
447
-                    "voluntarily participate in research with a professor affiliated to the " +
448
-                    "Rio Piedras Campus. \n\n";
449
-            Paragraph paragraph1 = new Paragraph(consentIntro);
357
+
358
+            // Consent Section 1 - Overview (Welcome)
359
+            String consentOverview = getString(R.string.consentOverview);
360
+            Paragraph paragraph1 = new Paragraph(consentOverview);
450 361
             paragraph1.setAlignment(Element.ALIGN_JUSTIFIED);
451 362
             document.add(paragraph1);
452 363
 
453 364
 
454
-            Font subTitlesFont = new Font(Font.FontFamily.HELVETICA, 14, Font.BOLD, BaseColor.BLACK);
455
-            Chunk subtitle1 = new Chunk("Time Commitment", subTitlesFont);
365
+            // Consent Section 2 - Time Commitment
366
+            Chunk subtitle1 = new Chunk(getString(R.string.timeCommitmentTitleText), subtitleFont);
456 367
             Paragraph timeCommitmentTitle = new Paragraph(subtitle1);
457 368
             document.add(timeCommitmentTitle);
458 369
 
459
-            String consentTimeCommitment = "In the study you will be asked to answer a questionnaire, about your " +
460
-                    "perception of self-efficacy in research, scientific identity and decision-making " +
461
-                    "about your professional career at the beginning and end of your research experience. " +
462
-                    "It will take you between 10-20 minutes to answer this questionnaire. You are " +
463
-                    "also expected to respond to short questionnaires between 1-3 times per week " +
464
-                    "while you are participating in the research. You will receive notifications at " +
465
-                    "random times during your research experience and answer questions adapted from " +
466
-                    "survey instruments that have been previously validated. It will take you between " +
467
-                    "1-3 minutes to answer these questionnaires. It is expected that 25 students will " +
468
-                    "participate in this phase of the study.\n ";
370
+            String consentTimeCommitment = getString(R.string.consentTimeCommitment);
469 371
             Paragraph paragraph2 = new Paragraph(consentTimeCommitment);
470 372
             paragraph2.setAlignment(Element.ALIGN_JUSTIFIED);
471 373
             document.add(paragraph2);
472 374
 
473
-            Chunk subtitle2 = new Chunk("Data Gathering", subTitlesFont);
375
+
376
+            // Consent Section 3 - Data Gathering
377
+            Chunk subtitle2 = new Chunk(getString(R.string.dataGatheringTitleText), subtitleFont);
474 378
             Paragraph dataGatheringTitle = new Paragraph(subtitle2);
475 379
             document.add(dataGatheringTitle);
476 380
 
477
-            String consentDataGathering = "While answering the questions, you may feel uncomfortable because " +
478
-                    "the questions are about your general opinion about science and research and your career. " +
479
-                    "If you feel uncomfortable with the questions, you can stop and choose not to answer the question. " +
480
-                    "When you download the application, it will occupy space in the memory of your mobile device and " +
481
-                    "also consume your data plan in the transmission of information when you answer the questionnaires. " +
482
-                    "It is estimated that the application will have a size of 40 Mb (As reference the WhatsApp " +
483
-                    "application is 88.9 Mb). Although at the moment we cannot say exactly how much memory or " +
484
-                    "data you will consume, we understand that both will be minimal. The risks of this study " +
485
-                    "are minimal. \n ";
381
+            String consentDataGathering = getString(R.string.consentDataGathering);
486 382
             Paragraph paragraph3 = new Paragraph(consentDataGathering);
487 383
             paragraph3.setAlignment(Element.ALIGN_JUSTIFIED);
488 384
             document.add(paragraph3);
489 385
 
490 386
 
491
-            Chunk subtitle3 = new Chunk("Privacy", subTitlesFont);
387
+            // Consent Section 4 - Privacy
388
+            Chunk subtitle3 = new Chunk(getString(R.string.privacyTitleText), subtitleFont);
492 389
             Paragraph privacyTitle = new Paragraph(subtitle3);
493 390
             document.add(privacyTitle);
494 391
 
495
-            String consentPrivacy = "Your identity will be protected throughout the study. Your identifiable " +
496
-                    "information will be handled confidentially and when presenting the results of " +
497
-                    "the investigation you will not be identified. The information you issue through " +
498
-                    "the application will be through access credentials (username and password) that " +
499
-                    "only you will know. These access credentials will be encrypted and any subsequent " +
500
-                    "association between you and your data will be made by reference to the encrypted " +
501
-                    "information, not your personal identity. The data collected through the " +
502
-                    "questionnaires will be stored digitally on a secure hard drive in the researcher's " +
503
-                    "office. These data will also be stored virtually in the cloud, with access limited " +
504
-                    "only to researchers. \n\n";
505
-
392
+            String consentPrivacy = getString(R.string.consentPrivacy);
506 393
             Paragraph paragraph4 = new Paragraph(consentPrivacy);
507 394
             paragraph4.setAlignment(Element.ALIGN_JUSTIFIED);
508 395
             document.add(paragraph4);
509 396
 
510
-            Chunk subtitle4 = new Chunk("Use of Data", subTitlesFont);
397
+
398
+            // Consent Section 5 - Data Use
399
+            Chunk subtitle4 = new Chunk(getString(R.string.dataUseTitleText), subtitleFont);
511 400
             Paragraph useOfDataTitle = new Paragraph(subtitle4);
512 401
             document.add(useOfDataTitle);
513 402
 
514
-            String consentUseOfData = "The data obtained will be used to improve academic offerings and research " +
515
-                    "experiences. The results of this study may be part of a scientific publication " +
516
-                    "on science education strategies and will serve as a basis to improve the teaching " +
517
-                    "curriculum. It may be used to develop proposals for obtaining external funds for " +
518
-                    "research. The officials of the Rio Piedras Campus of the University of Puerto Rico " +
519
-                    "and / or federal agencies responsible for ensuring the integrity of the research " +
520
-                    "may require the researcher to prove the data obtained in this study, including " +
521
-                    "this informed consent. \n\n";
522
-
403
+            String consentUseOfData = getString(R.string.consentDataUse);
523 404
             Paragraph paragraph5 = new Paragraph(consentUseOfData);
524 405
             paragraph5.setAlignment(Element.ALIGN_JUSTIFIED);
525 406
             document.add(paragraph5);
526 407
 
527
-            Chunk subtitle5 = new Chunk("General", subTitlesFont);
408
+
409
+            // Consent Section 6 - General & Conclusion
410
+            Chunk subtitle5 = new Chunk(getString(R.string.generalTitleText), subtitleFont);
528 411
             Paragraph generalTitle = new Paragraph(subtitle5);
529 412
             document.add(generalTitle);
530 413
 
531
-            String consentGeneral = "If you decide to participate in this study, understand that your participation " +
532
-                    "is completely voluntary and that you have the right to abstain from participating or even withdraw at " +
533
-                    "any time of the study without incurring in any penalty. In the application you will find the instructions " +
534
-                    "to withdraw from the study and stop receiving notifications if you wish. You also have the right not to " +
535
-                    "answer any question if you wish. Your participation in this study will not affect in any way your academic " +
536
-                    "evaluation in the courses in which you are carrying out this research. Finally, you have the right to " +
537
-                    "receive a copy of this document.\n\n";
538
-
414
+            String consentGeneral = getString(R.string.consentGeneral);
539 415
             Paragraph paragraph6 = new Paragraph(consentGeneral);
540 416
             paragraph6.setAlignment(Element.ALIGN_JUSTIFIED);
541 417
             document.add(paragraph6);
542 418
 
543
-            String consentConclusion = "If you have any questions or would like more information about this study, please contact " +
544
-                    "Prof. Ramirez Lugo at 787-764-0000 Ext. 88068, at 787-918-5330 or by email at juan.ramirez3@upr.edu " +
545
-                    "at any moment. If you have any questions about your rights as a participant or claim or complaint related " +
546
-                    "to your participation in this study, you may contact the Compliance Officer of the R’o Piedras Campus of " +
547
-                    "the University of Puerto Rico, at telephone 764-0000, extension 86773 or cipshi. degi@upr.edu.\n\n" +
548
-                    "Your signature on this document means that you have decided to participate voluntarily, that the information " +
549
-                    "presented on this Consent Sheet has been discussed and that you have received a copy of this document. " +
550
-                    "This printed sheet will be stored under lock and key for a period of 5 years after completion of the " +
551
-                    "investigation and will then be shredded and discarded. \n\n\n";
552
-
419
+            String consentConclusion = getString(R.string.consentConclusion);
553 420
             Paragraph paragraph7 = new Paragraph(consentConclusion);
554 421
             paragraph7.setAlignment(Element.ALIGN_JUSTIFIED);
555 422
             document.add(paragraph7);
556 423
 
557
-            Chunk participantSignature = new Chunk("Participant's signature:", new Font(Font.FontFamily.HELVETICA, 12, Font.BOLDITALIC, BaseColor.BLACK));
424
+
425
+            // Signature Section
426
+            Chunk participantSignature = new Chunk("Participant's signature:", signatureSectionFont);
558 427
             Paragraph paragraph8 = new Paragraph(participantSignature);
559 428
             document.add(paragraph8);
560 429
 
561 430
             Image consentSignatureImage = Image.getInstance(signatureBytes);
562
-            Chunk signatureImage = new Chunk(consentSignatureImage, 145, -24);
431
+            Chunk signatureImage = new Chunk(consentSignatureImage, signatureOffsetX, signatureOffsetY);
563 432
             Paragraph paragraph11 = new Paragraph(signatureImage);
564 433
             document.add(paragraph11);
565 434
 
566
-            Chunk signatureDate = new Chunk("Signed on: " + consentDate, new Font(Font.FontFamily.HELVETICA, 12, Font.BOLDITALIC, BaseColor.BLACK));
435
+            Chunk signatureDate = new Chunk("Signed on: " + consentDate, signatureSectionFont);
567 436
             Paragraph paragraph9 = new Paragraph(signatureDate);
568 437
             document.add(paragraph9);
569 438
 
439
+
440
+            // Finish and store document
570 441
             document.close();
571 442
 
572
-            File file = new File(Environment.getExternalStorageDirectory().getPath() + "/consent-tania-app.pdf");
443
+
444
+            // Read document back, encode to base64 and return
445
+            // TODO: find out if we really need to read it back,
446
+            //  cause AndroidStudio says its value is ignored
447
+            File file = new File(filePath);
573 448
             int size = (int) file.length();
574 449
             byte[] consentBytes = new byte[size];
575 450
 
576
-            try {
577
-                BufferedInputStream buf = new BufferedInputStream(new FileInputStream(file));
578
-                buf.read(consentBytes, 0, consentBytes.length);
579
-                buf.close();
580
-            } catch (FileNotFoundException e) {
581
-                e.printStackTrace();
582
-            } catch (IOException e) {
583
-                e.printStackTrace();
584
-            }
451
+            BufferedInputStream buffer = new BufferedInputStream(new FileInputStream(file));
452
+            buffer.read(consentBytes, 0, consentBytes.length);
453
+            buffer.close();
585 454
 
586
-            consentBase64 = android.util.Base64.encodeToString(consentBytes, android.util.Base64.DEFAULT);
587
-            return consentBase64;
455
+            return Base64.encodeToString(consentBytes, Base64.DEFAULT);
588 456
 
589 457
         } catch (FileNotFoundException e) {
458
+            Log.e(TAG, "Couldn't find generated consent form!");
590 459
             e.printStackTrace();
591
-        } catch (MalformedURLException e) {
592
-            e.printStackTrace();
460
+            return null;
593 461
         } catch (IOException e) {
462
+            Log.e(TAG, "Couldn't read back generated consent form!");
594 463
             e.printStackTrace();
464
+            return null;
595 465
         } catch (BadElementException e) {
466
+            Log.e(TAG, "Couldn't create a consent form element!");
596 467
             e.printStackTrace();
468
+            return null;
597 469
         } catch (DocumentException e) {
470
+            Log.e(TAG, "Something went wrong while fiddling with the consent form creation!");
471
+            e.printStackTrace();
472
+            return null;
473
+        } catch (Exception e) {
474
+            Log.wtf(TAG, "Call to launchConsent() went wrong!");
598 475
             e.printStackTrace();
476
+            return null;
599 477
         }
600 478
 
601
-        return consentBase64;
602 479
     }
603 480
 }
604 481
 

+ 25
- 0
app/src/main/res/values/strings.xml View File

@@ -48,5 +48,30 @@
48 48
     <string name="experienceRegistrationTitleText">Activate Experience</string>
49 49
     <string name="experienceRegistrationDescriptionText">Click the button below to enter the research experience you are participating in.</string>
50 50
     <string name="experienceRegistrationButtonText">Enter</string>
51
+    <!--  Consent Document Information  -->
51 52
     <string name="consentFileName">/consent-tania-app.pdf</string>
53
+    <string name="consentOverview">You have been invited to participate in this study whose objectives are (1) to develop and demonstrate the utility of a mobile application (TANIA) to collect perception data of students participating in research experiences and (2) to use TANIA to determine the sources of self-efficacy that lead to career exploration and decision-making in undergraduate students. This study is been carried out under the supervision of Dr. Juan S. Ramírez Lugo, Department of Biology and Dr. Carlos Corrada Bravo, Department of Computer Sciences at the University of Puerto Rico, Río Piedras Campus. You were selected to participate in this study because you are enrolled in a course that offers a research experience or you voluntarily participate in research with a professor affiliated to the Río Piedras Campus.</string>
54
+    <string name="consentTimeCommitment">In the study you will be asked to answer a questionnaire, about your perception of self-efficacy in research, scientific identity and decision-making about your professional career at the beginning and end of your research experience. It will take you between 10-20 minutes to answer this questionnaire. You are also expected to respond to short questionnaires between 1-3 times per week while you are participating in the research. You will receive notifications at random times during your research experience and answer questions adapted from survey instruments that have been previously validated. It will take you between 1-3 minutes to answer these questionnaires. It is expected that 25 students will participate in this phase of the study.</string>
55
+    <string name="consentDataGathering">While answering the questions, you may feel uncomfortable because the questions are about your general opinion about science and research and your career. If you feel uncomfortable with the questions, you can stop and choose not to answer the question. When you download the application, it will occupy space in the memory of your mobile device and also consume your data plan in the transmission of information when you answer the questionnaires. It is estimated that the application will have a size of 40 Mb (As reference the WhatsApp application is 88.9 Mb). Although at the moment we cannot say exactly how much memory or data you will consume, we understand that both will be minimal. The risks of this study are minimal.</string>
56
+    <string name="consentPrivacy">Your identity will be protected throughout the study. Your identifiable information will be handled confidentially and when presenting the results of the investigation you will not be identified. The information you issue through the application will be through access credentials (username and password) that only you will know. These access credentials will be encrypted and any subsequent association between you and your data will be made by reference to the encrypted information, not your personal identity. The data collected through the questionnaires will be stored digitally on a secure hard drive in the researcher\'s office. These data will also be stored virtually in the cloud, with access limited only to researchers.</string>
57
+    <string name="consentDataUse">The data obtained will be used to improve academic offerings and research experiences. The results of this study may be part of a scientific publication on science education strategies and will serve as a basis to improve the teaching curriculum. It may be used to develop proposals for obtaining external funds for research. The officials of the Río Piedras Campus of the University of Puerto Rico and / or federal agencies responsible for ensuring the integrity of the research may require the researcher to prove the data obtained in this study, including this informed consent.</string>
58
+    <string name="consentGeneral">If you decide to participate in this study, understand that your participation is completely voluntary and that you have the right to abstain from participating or even withdraw at any time of the study without incurring in any penalty. In the application you will find the instructions to withdraw from the study and stop receiving notifications if you wish. You also have the right not to answer any question if you wish. Your participation in this study will not affect in any way your academic evaluation in the courses in which you are carrying out this research. Finally, you have the right to receive a copy of this document.</string>
59
+    <string name="consentConclusion">If you have any questions or would like more information about this study, please contact Prof. Ramírez Lugo at 787-764-0000 Ext. 88068, at 787-918-5330 or by email at juan.ramirez3@upr.edu at any moment. If you have any questions about your rights as a participant or claim or complaint related to your participation in this study, you may contact the Compliance Officer of the Río Piedras Campus of the University of Puerto Rico, at telephone 764-0000, extension 86773 or cipshi. degi@upr.edu. Your signature on this document means that you have decided to participate voluntarily, that the information presented on this Consent Sheet has been discussed and that you have received a copy of this document. This printed sheet will be stored under lock and key for a period of 5 years after completion of the investigation and will then be shredded and discarded.</string>
60
+    <!--  Getting Started Activity  -->
61
+    <string name="overviewConsentSectionSummaryText">You have been invited to participate in this study whose objectives are (1) to develop and demonstrate the utility of a mobile application (TANIA) to collect perception data of students participating in research experiences and (2) to use TANIA to determine the sources of self-efficacy that lead to career exploration and decision-making in undergraduate students.</string>
62
+    <string name="overviewConsentSectionContentText">This study is been carried out under the supervision of Dr. Juan S. Ramírez Lugo, Department of Biology and Dr. Carlos Corrada Bravo, Department of Computer Sciences at the University of Puerto Rico, Río Piedras Campus. You were selected to participate in this study because you are enrolled in a course that offers a research experience or you voluntarily participate in research with a professor affiliated to the Río Piedras Campus.</string>
63
+    <string name="timeCommitmentConsentSectionContentText">You are also expected to respond to short questionnaires between 1-3 times per week while you are participating in the research. You will receive notifications at random times during your research experience and answer questions adapted from survey instruments that have been previously validated. It will take you between 1-3 minutes to answer these questionnaires. It is expected that 25 students will participate in this phase of the study.</string>
64
+    <string name="timeCommitmentConsentSectionSummaryText">In the study you will be asked to answer a questionnaire, about your perception of self-efficacy in research, scientific identity and decision-making about your professional career at the beginning and end of your research experience. It will take you between 10-20 minutes to answer this questionnaire.</string>
65
+    <string name="dataGatheringConsentSectionSummaryText">While answering the questions, you may feel uncomfortable because the questions are about your general opinion about science and research and your career. If you feel uncomfortable with the questions, you can stop and choose not to answer the question.</string>
66
+    <string name="dataGatheringConsentSectionContentText">In addition, when you download the application, it will occupy space in the memory of your mobile device and also consume your data plan in the transmission of information when you answer the questionnaires. It is estimated that the application will have a size of 40 Mb (As reference the WhatsApp application is 88.9 Mb). Although at the moment we cannot say exactly how much memory or data you will consume, we understand that both will be minimal. The risks of this study are minimal.</string>
67
+    <string name="privacyConsentSectionSummaryText">Your identity will be protected throughout the study. Your identifiable information will be handled confidentially and when presenting the results of the investigation you will not be identified.</string>
68
+    <string name="privacyConsentSectionContentText">The information you issue through the application will be through access credentials (username and password) that only you will know. These access credentials will be encrypted and any subsequent association between you and your data will be made by reference to the encrypted information, not your personal identity. The data collected through the questionnaires will be stored digitally on a secure hard drive in the researcher\'s office. These data will also be stored virtually in the cloud, with access limited only to researchers.</string>
69
+    <string name="dataUseConsentSectionSummaryText">The data obtained will be used to improve academic offerings and research experiences. The results of this study may be part of a scientific publication on science education strategies and will serve as a basis to improve the teaching curriculum.</string>
70
+    <string name="dataUseConsentSectionContentText">It may be used to develop proposals for obtaining external funds for research. The officials of the Río Piedras Campus of the University of Puerto Rico and / or federal agencies responsible for ensuring the integrity of the research may require the researcher to prove the data obtained in this study, including this informed consent. The information handled by your device can be intervened or revised by third parties. These people can be people with legitimate or illegitimate access to the device and its content such as a family member, employer, hackers, intruders, etc. In addition, the device that you use may keep track of the information you access or send over the Internet.</string>
71
+    <string name="overviewTitleText">Welcome</string>
72
+    <string name="timeCommitmentTitleText">Time Commitment</string>
73
+    <string name="dataGatheringTitleText">Data Gathering</string>
74
+    <string name="privacyTitleText">Privacy</string>
75
+    <string name="dataUseTitleText">Use of Data</string>
76
+    <string name="generalTitleText">General</string>
52 77
 </resources>