Part 1: Designing an Android UI for an HIV AIDS Vaccination Tracker
Layout Design
-
Simple Layout:
- Use a single-column layout to minimize cognitive load and to make it easier for elderly users to navigate the app.
- Utilize a vertical scrolling layout with large, touch-friendly buttons which allows users to interact effortlessly without misclicking.
-
Clear Navigation:
- Implement a fixed bottom navigation bar to ensure users can easily access key functionalities such as "Report Symptoms," "View History," and "Settings".
- Each icon should be clearly labeled with both text and universally recognizable symbols to cater to varying literacy levels.
-
Accessible Fonts and Colors:
- Use large font sizes (at least 18sp) and high-contrast colors (e.g., dark text on a light background) to enhance readability, especially for users with visual impairments.
- Include an option for users to increase font size or change color themes for those who may have color blindness.
Widget Choices
-
Input Fields:
- Use large text input fields with clear labels for symptoms reporting.
- Implement dropdown menus or sliders for subjective symptom assessments (like pain levels) where appropriate to avoid text input errors.
-
Radio Buttons for Symptom Options:
- Use radio buttons for users to select symptoms as this minimizes typing and reduces potential errors, providing a straightforward selection process.
-
Date & Time Pickers:
- Integrate easy-to-use date and time pickers for users to log their reporting times. This would use a visual calendar UI for date selection, which is more familiar and intuitive.
-
Confirmation Dialogs:
- Before submission, show a clear summary of the user’s input via a confirmation dialog, allowing users to review their entries and make corrections.
-
Feedback and Instructions:
- Utilize tooltips or info icons next to fields explaining what information is being requested. Utilize brief, clear instructional text throughout the user flow.
- Upon form submission, provide feedback on success or error in a prominent place with reassuring language.
Justifications
- This layout and widget choice is designed to accommodate the cognitive, physical, and visual limitations of elderly users.
- Large text and interactive elements reduce fatigue and errors. Streamlined navigation ensures users can focus more on symptom reporting than on figuring out how to use the app itself, catering well to varying technical literacies.
Part 2: Android Data Storage Strategy for a Mental Wellness App
Chosen Data Storage Strategy: Encrypted Local Storage
- SQL database or Room:
- Utilize SQLite or Room, the Android persistence library, to securely manage data storage.
Implementation Steps
-
Data Encryption:
- Use AES (Advanced Encryption Standard) to encrypt journal entries before storing them in the database.
- Implement encryption using
javax.crypto
to convert the journal text into a byte array and store it securely.
public String encrypt(String input) { Cipher cipher = Cipher.getInstance("AES"); SecretKeySpec secretKey = new SecretKeySpec("your_secret_key".getBytes(), "AES"); cipher.init(Cipher.ENCRYPT_MODE, secretKey); byte[] encryptedBytes = cipher.doFinal(input.getBytes()); return Base64.encodeToString(encryptedBytes, Base64.DEFAULT); }
-
Access Control:
- Require user authentication before accessing the app (e.g., PIN, fingerprint, or face recognition) to ensure only authorized users can view their sensitive entries.
- Use the Android Keystore to securely store encryption keys and ensure they are used only within the app.
-
Data Lifecycle Policies:
- Implement auto-deletion of journal entries after a certain period or allow users to set expiration dates.
- Create explicit user controls for editing or deleting entries, ensuring users have direct control over their data privacy.
-
Secure Backup:
- Encrypt backups of the local database files as users may want the option to back data up securely in external services or the cloud. Ensure that such options include robust encryption mechanisms similar to those for local data.
-
User Notification:
- Notify users about how their data is secured within the app, providing reassurances about confidentiality and enabling settings to manage data retention policies.
Justifications
- Encrypted local storage with controlled access protects sensitive data effectively against unauthorized access, providing peace of mind for users regarding their confidential entries.
- Using built-in Android security features like the Keystore simplifies secure key management and lessens the burden on developers to create their own security protocols from scratch.