AndroidCareProvider - Feature Inventory & Dependency Analysis¶
Repository: AndroidCareProvider
Platform: Android (Java + Kotlin)
Analysis Date: November 7, 2025
Version: 2.0.33 (Build 68)
Table of Contents¶
- Feature Catalog
- Dependency Analysis
- Third-Party Library Inventory
- Permissions Analysis
- Feature Completeness Matrix
- Deprecated Dependencies
- Security Vulnerabilities
- Upgrade Recommendations
Feature Catalog¶
Core Features¶
1. Authentication & User Management¶
| Feature | Status | Implementation | Platform Support |
|---|---|---|---|
| Email/Password Login | ✅ Complete | LoginActivity.java | Android |
| Provider Registration | ✅ Complete | RegisterCareProviderActivity.java | Android |
| Email Verification | ✅ Complete | VerifyEmailActivity.java | Android |
| Password Reset | ✅ Complete | ForgotPasswordActivity.java | Android |
| Two-Factor Authentication | ❌ Missing | - | - |
| Biometric Login | ❌ Missing | - | - |
| Social Login (Facebook) | ⚠️ Partial | Facebook SDK integrated but unused | Android |
| Social Login (Google) | ⚠️ Partial | Google Auth SDK present | Android |
| OAuth 2.0 Token Refresh | ✅ Complete | MySharedPreferences.java | Android |
| Session Management | ✅ Complete | SharedPreferences-based | Android |
Implementation Details:
- Location: Registration/Activities/, CommonUser/Activities/
- Dependencies: Firebase Auth, Google Play Services Auth
- Storage: SharedPreferences (tokens, user data)
Security Concerns:
- ⚠️ Tokens stored in SharedPreferences (not encrypted)
- ⚠️ No certificate pinning for API calls
- ⚠️ Missing biometric authentication for sensitive operations
2. Video Consultations¶
| Feature | Status | Implementation | SDK Used |
|---|---|---|---|
| 1-on-1 Video Calls | ✅ Complete | OneToOneCallActivity.kt | VideoSDK 0.1.31 |
| Audio-only Calls | ✅ Complete | OneToOneCallActivity.kt | VideoSDK |
| Camera Switching | ✅ Complete | meeting.changeWebcam() | VideoSDK |
| Mute/Unmute | ✅ Complete | meeting.muteMic() | VideoSDK |
| Screen Sharing | ✅ Complete | meeting.enableScreenShare() | VideoSDK |
| Picture-in-Picture | ✅ Complete | PiP mode (Android O+) | VideoSDK |
| Call Recording | ⚠️ Backend | VideoSDK supports, not implemented | VideoSDK |
| Group Calls | ❌ Missing | - | - |
| Virtual Backgrounds | ❌ Missing | - | - |
| Call Quality Indicators | ⚠️ Partial | Basic network detection | VideoSDK |
| Legacy WebRTC | ⚠️ Deprecated | CollaborationMain.java | Google WebRTC (old) |
Implementation Details:
- Modern: CareProvider/Activities/OneToOneCallActivity.kt (Kotlin, VideoSDK)
- Legacy: Collaboration/Presence/CollaborationMain.java (Java, WebRTC - deprecated)
- Meeting Creation: Backend API + VideoSDK integration
- Signaling: VideoSDK managed (previously WebSocket to NodeServer)
Known Issues:
- ⚠️ Dual video call implementations (old and new)
- ⚠️ Legacy WebRTC code still present (technical debt)
- ⚠️ No fallback to audio-only on poor connection
3. Appointment Management¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| View Appointments | ✅ Complete | MyAppointCarePFragment.java | Filter by date |
| Appointment Details | ✅ Complete | Multiple activities | Patient info, diagnosis |
| Reschedule Appointment | ✅ Complete | ReserveSlotActivity.java | Provider-initiated |
| Cancel Appointment | ✅ Complete | MyAppointmentsCarePAdapter | With confirmation |
| Appointment Reminders | ✅ Complete | FCM notifications | 1 hour before |
| Mark as Complete | ✅ Complete | API call | Updates status |
| No-Show Tracking | ⚠️ Partial | Backend-only | No UI display |
| Recurring Appointments | ❌ Missing | - | - |
| Waitlist Management | ❌ Missing | - | - |
| Multi-provider Booking | ❌ Missing | - | Only single provider |
Implementation Details:
- Main UI: CareProvider/Fragments/MyAppointCarePFragment.java
- Adapter: MyAppointmentsCarePAdapter.java (expandable list)
- Filters: Date range, status (upcoming, past, cancelled)
- Actions: Start session, reschedule, cancel, view details
Data Flow:
API: GET /api/CareProvider/GetAppointments
↓
Parse JSON response
↓
Populate RecyclerView (MyAppointmentsCarePAdapter)
↓
User actions → API calls → Refresh list
4. Schedule Management¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Weekly Schedule View | ✅ Complete | WeeklyScheduleFragment.java | Calendar UI |
| Monthly Calendar | ✅ Complete | MonthViewFragment.java | Month picker |
| Set Availability | ✅ Complete | MarkAvailabiltyActivity.java | Recurring weekly |
| Block Dates | ✅ Complete | MarkAvailabiltyActivity.java | Vacation, holidays |
| Custom Time Slots | ✅ Complete | Session duration config | 30/45/60 min |
| Override Availability | ✅ Complete | Specific date override | One-time changes |
| Sync with Calendar | ❌ Missing | - | No Google Calendar sync |
| Multiple Calendars | ❌ Missing | - | Single provider only |
| Availability Export | ❌ Missing | - | No iCal export |
Implementation Details:
- Location: CareProvider/Schedule/, Scheduling/WeeklySchedule/
- UI: Custom calendar components (awesome-calendar library)
- Storage: Backend API, synced on-demand
- Slot Generation: Backend calculates available slots based on schedule
Complexity:
- WeeklyScheduleFragment.java = ~2600 LOC (very large, needs refactoring)
5. Patient Messaging¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Text Messages | ✅ Complete | ConversationActivity.java | Real-time |
| Image Sharing | ✅ Complete | File upload to MediaAPI | JPEG, PNG |
| Document Sharing | ✅ Complete | PDF, DOCX support | Via MediaAPI |
| Voice Messages | ✅ Complete | AudioRecordView library | Record & send |
| Read Receipts | ✅ Complete | Message status tracking | Delivered, Read |
| Typing Indicators | ❌ Missing | - | - |
| Message Search | ⚠️ Partial | Client-side only | No backend search |
| Message Reactions | ❌ Missing | - | No emoji reactions |
| File Preview | ✅ Complete | PDFviewerActivity | In-app PDF viewer |
| Rich Link Previews | ✅ Complete | richlinkpreview library | URL metadata |
| Message History | ✅ Complete | Pagination support | Load more |
| Delete Messages | ❌ Missing | - | No deletion |
| Edit Messages | ❌ Missing | - | No editing |
Implementation Details:
- Chat List: CareProvider/Activities/ChatMainActivity.java
- Conversation: CareProvider/Activities/ConversationActivity.java
- Adapter: ConversationListAdapter.java
- Real-time: FCM push notifications + MessageObservable event bus
- Media Upload: Separate MediaAPI endpoint
Message Types:
- Text
- Image (uploaded, URL embedded)
- Document (uploaded, URL embedded)
- Voice (audio file uploaded)
- Link (with preview)
6. Patient Assessments¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Create Assessment Templates | ✅ Complete | InitialAssessmentAcitivity.java | Custom questions |
| Pre-built Templates | ✅ Complete | Backend API | PHQ-9, GAD-7, etc. |
| Assign to Patient | ✅ Complete | From ClientHistoryActivity | Due dates |
| View Patient Responses | ✅ Complete | FilledAssessmentViewActivity.java | With scoring |
| Provide Feedback | ✅ Complete | Add comments/notes | Text feedback |
| Assessment History | ✅ Complete | MyQyestionaireFragment.java | Timeline view |
| Multi-page Assessments | ✅ Complete | Question pagination | Step-by-step |
| Conditional Questions | ❌ Missing | - | No logic branching |
| Scoring Algorithms | ⚠️ Backend | Server-side | Not editable in app |
| PDF Export | ⚠️ Partial | Available but buggy | Needs improvement |
| Assessment Scheduling | ⚠️ Partial | Manual assignment only | No auto-schedule |
Implementation Details:
- Create: CareProvider/Activities/InitialAssessmentAcitivity.java
- View Assigned: CareProvider/Fragments/MyQyestionaireFragment.java
- View Responses: CareProvider/Activities/FilledAssessmentViewActivity.java
- Question Types: Multiple choice, text, rating scales, yes/no
Workflow:
1. Provider creates/selects template
2. Assigns to patient with due date
3. Patient receives FCM notification
4. Patient completes assessment
5. Provider receives notification
6. Provider reviews responses + adds feedback
7. Homework Assignment¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Create Homework | ✅ Complete | NewHomeWorkActivity.java | Custom tasks |
| Attach Resources | ✅ Complete | PDF, video links, URLs | Multi-attachment |
| Set Due Dates | ✅ Complete | Date picker | Deadline tracking |
| Track Completion | ✅ Complete | Status: Pending/Completed | Timeline view |
| Review Submissions | ✅ Complete | HomeWorkCheckActivity.java | With feedback |
| Provide Feedback | ✅ Complete | Text comments | Star rating |
| Homework History | ✅ Complete | HomeworkFeedbackHistoryActivity | Per patient |
| Templates | ❌ Missing | - | No reusable templates |
| Reminders | ⚠️ Partial | FCM notifications | No in-app reminders |
| Progress Tracking | ⚠️ Partial | Completion % only | No detailed analytics |
Implementation Details:
- Assign: CareProvider/Activities/NewHomeWorkActivity.java
- Review: CareProvider/Activities/HomeWorkCheckActivity.java
- History: CareProvider/Activities/HomeworkFeedbackHistoryActivity.java
- List: Client/Fragments/MyHomeWorkFragment.java (shared with patient app)
Attachment Types:
- PDF documents (uploaded)
- YouTube videos (embedded player)
- Web links (opened in WebView)
- Custom instructions (text)
8. Prescription Management¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Digital Prescriptions | ✅ Complete | AddPrescriptionActivity.kt | Kotlin implementation |
| Drug Database Search | ⚠️ Partial | API-based | Limited database |
| Dosage Management | ✅ Complete | Custom input | Frequency, duration |
| E-Signature | ⚠️ Partial | Provider name only | No digital signature |
| PDF Export | ✅ Complete | Generate PDF | With branding |
| Share Prescription | ✅ Complete | Export & share | Email, WhatsApp |
| Prescription History | ✅ Complete | PrescriptionListFragment.java | Per patient |
| Drug Interactions Check | ❌ Missing | - | Safety concern |
| Allergy Warnings | ❌ Missing | - | Safety concern |
| Refill Management | ❌ Missing | - | - |
| Pharmacy Integration | ❌ Missing | - | No e-prescribing |
Implementation Details:
- Add/Edit: views/activity/AddPrescriptionActivity.kt (Kotlin, Navigation Component)
- View: CareProvider/Activities/PrescriptionActivity.java
- List: CareProvider/Fragments/PrescriptionListFragment.java
- Legacy Add: PrescriptionCPAddFragment.java, PrescriptionClientAddFragment.java
Components:
- Drug selection (search API)
- Dosage (strength, form, quantity)
- Instructions (frequency, duration)
- Diagnosis (free text)
- Allergy list (displayed, not validated)
Safety Concerns:
- ❌ No drug interaction checking
- ❌ No allergy cross-reference
- ❌ No duplicate prescription detection
9. Patient History & Records¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Patient Timeline | ✅ Complete | ClientHistoryActivity.java | Chronological view |
| Session Notes | ✅ Complete | Add notes per session | Rich text |
| Diagnosis History | ✅ Complete | Track diagnoses | ICD codes |
| Medication History | ✅ Complete | All prescriptions | Timeline |
| Assessment Results | ✅ Complete | Linked to timeline | Scores & trends |
| Homework Progress | ✅ Complete | Completion tracking | Success rate |
| Appointment History | ✅ Complete | All sessions | With status |
| Document Storage | ✅ Complete | Upload PDFs, images | Cloud storage |
| Treatment Plans | ⚠️ Partial | Notes-based | No structured plans |
| Progress Charts | ❌ Missing | - | No visual analytics |
| Export Records | ❌ Missing | - | No PDF export |
Implementation Details:
- Main View: CareProvider/Activities/ClientHistoryActivity.java
- Provider History: CareProvider/Activities/CPHistoryActivity.java
- Data Sources: Multiple API endpoints aggregated
Displayed Sections:
- Personal info
- Diagnosis list
- Prescription history
- Assessment results
- Homework assignments
- Session notes
- Appointment log
10. Payment & Billing¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Payment History | ✅ Complete | PaymentsDetailActivity.java | Earnings list |
| Earnings Summary | ✅ Complete | Total earnings display | Filtered by date |
| Payment Status | ✅ Complete | Pending/Completed/Refunded | Color-coded |
| Refund Requests | ⚠️ Partial | Backend-initiated | No provider UI |
| Invoice Generation | ❌ Missing | - | - |
| Export Statements | ❌ Missing | - | No CSV/PDF export |
| Payment Methods | ✅ Complete | PaymentMethodFragment.java | Bank details, wallet |
| Promo Codes | ✅ Complete | AddPromoCodeActivity.java | Create & manage |
| Wallet Balance | ✅ Complete | WalletBalanceFragment.java | View balance |
| Payout Schedule | ⚠️ Backend | - | No visibility in app |
Implementation Details:
- Main UI: CareProvider/Activities/PaymentsDetailActivity.java
- Payment Setup: CareProvider/Fragments/PaymentMethodFragment.java, PaymentInfoFragment.java
- Promo Codes: CareProvider/Activities/AddPromoCodeActivity.java
- Integration: WebView redirect to payment gateway (Smart Routing)
Payment Flow (Patient Side):
1. Select slot → SlotPaymentSuggestActivity
2. Choose payment method (Wallet, Card, Insurance)
3. If Card: PaymentWebActivity (WebView) → Payment gateway
4. Return with payment status
5. Create appointment
6. Provider receives notification
Provider Payment:
- Backend calculates provider earnings
- No direct payment processing in app
- View-only payment history
11. Profile & Settings¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Personal Info | ✅ Complete | PersonalInfoFragment.java | Name, gender, DOB |
| Contact Info | ✅ Complete | ContactInfoFragment.java | Email, phone, address |
| Professional Credentials | ✅ Complete | EducationInfoFragment.java | Degrees, licenses |
| Profile Photo | ✅ Complete | Image upload | Cropping support |
| Video Bio | ✅ Complete | VideoBioFragment.java | YouTube integration |
| Current Job | ✅ Complete | CurrentJobFragment.java | Employment details |
| Specializations | ✅ Complete | Select from list | Multiple selections |
| Languages | ✅ Complete | Arabic/English | Multi-select |
| Session Duration | ✅ Complete | ManageSessionDurationFragment | 30/45/60 min |
| Service Management | ✅ Complete | ManageServicesFragment.java | Enable/disable services |
| Privacy Settings | ✅ Complete | PrivacyPolicyFragment.java | Terms & policy |
| Saudi Commission Docs | ✅ Complete | SaudiCommesionFragment.java | License verification |
| Notification Settings | ⚠️ Partial | Basic enable/disable | No granular control |
| Language Preference | ✅ Complete | LocaleUtils.java | AR/EN with RTL |
| Theme | ❌ Missing | - | No dark mode |
Implementation Details:
- Main Profile: CareProvider/Fragments/MyProfileCarePFragment.java
- Legacy: CareProvider/Fragments/MyProfileFragment.java
- Tabs: ViewPager with multiple fragments
- Photo Upload: Image cropping (android-image-cropper library)
Profile Sections:
1. Personal Information
2. Contact Information
3. Education & Credentials
4. Current Job
5. Video Bio
6. Payment Information
7. Saudi Commission Documents (Saudi Arabia specific)
12. Search & Discovery (Patient Features)¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Search Providers | ✅ Complete | FindCPFragment.java | Keyword search |
| Filter by Specialty | ✅ Complete | CarePListingFiltersActivity.java | Multi-select |
| Filter by Availability | ✅ Complete | Date/time filters | Real-time slots |
| Filter by Rating | ✅ Complete | Minimum rating filter | Star rating |
| Filter by Price | ✅ Complete | Range slider | Min-max |
| Provider Profile View | ✅ Complete | CarePDetailActivity.java | Full details |
| Ratings & Reviews | ✅ Complete | RateCareProviderActivity.java | 5-star + comment |
| Favorite Providers | ✅ Complete | MyCPFragment.java | Saved list |
| Recommended Providers | ❌ Missing | - | No ML recommendations |
| Provider Comparison | ❌ Missing | - | - |
Implementation Details:
- Search: Client/Fragments/FindCPFragment.java
- Filters: CareProvider/Activities/CarePListingFiltersActivity.java
- Provider List: CommonUser/Activities/CarePListActivity.java
- Details: CommonUser/Activities/CarePDetailActivity.java (with YouTube player)
Search Criteria:
- Name (keyword)
- Specialty (multi-select)
- Location (city/region)
- Availability (date range)
- Rating (minimum stars)
- Price range
- Gender preference
- Languages spoken
13. Notifications¶
| Feature | Status | Implementation | Notes |
|---|---|---|---|
| Push Notifications | ✅ Complete | MyFirebaseMessagingService.java | FCM |
| In-App Notifications | ✅ Complete | NotificationsActivity.java | Notification center |
| Badge Counts | ✅ Complete | android-viewbadger library | Unread count |
| Notification Types | ✅ Complete | 10+ types | See below |
| Custom Sounds | ⚠️ Partial | Default FCM sounds | No custom sounds |
| Notification Settings | ⚠️ Partial | Enable/disable all | No per-type control |
| Scheduled Notifications | ⚠️ Backend | Server-scheduled | Appointment reminders |
| Notification History | ✅ Complete | Stored in list | Last 30 days |
Notification Types:
| Type | Code | Trigger | Action |
|---|---|---|---|
| New Message | 1 | Chat message received | Open ConversationActivity |
| Appointment Reminder | 2 | 1 hour before | Open MyAppointCarePFragment |
| Incoming Call | 3 | Video call invite | Open OneToOneCallActivity |
| Assessment Assigned | 4 | New assessment | Open MyQyestionaireFragment |
| Homework Due | 5 | Due date approaching | Open MyHomeWorkFragment |
| Payment Received | 6 | Payment completed | Open PaymentsDetailActivity |
| New Appointment | 7 | Booking confirmed | Open MyAppointCarePFragment |
| Appointment Cancelled | 8 | Cancellation | Open MyAppointCarePFragment |
| Profile Update Needed | 9 | Missing info | Open MyProfileCarePFragment |
| System Announcement | 10 | Admin message | Open WebviewFragment |
Implementation:
// MyFirebaseMessagingService.java
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
String notificationType = data.get("notificationType");
switch (notificationType) {
case "1": // New message
openChatActivity(conversationId);
break;
case "3": // Incoming call
Intent intent = new Intent(this, OneToOneCallActivity.class);
intent.putExtra("meetingId", meetingId);
startActivity(intent);
break;
// ...
}
}
14. Additional Features¶
| Feature | Status | Implementation | Category |
|---|---|---|---|
| Diary/Journal | ✅ Complete | MyDiaryFragment.java | Client feature |
| Educational Content | ✅ Complete | MedicalSourcesActivity.java | Resources |
| Blogs | ✅ Complete | BlogsActivity.java | Articles |
| FAQ | ✅ Complete | FAQFragment.java | Help center |
| Contact Support | ✅ Complete | ContactUsFragment.java | Email form |
| About/Our Story | ✅ Complete | OurStoryFragment.java | Info |
| Referrals | ✅ Complete | ReferralActivity.java | Patient referrals |
| Disorders Info | ✅ Complete | DisordersFragment.java | Mental health info |
| Onboarding | ✅ Complete | OnboardingActivity.kt | First-run tutorial |
| App Update | ✅ Complete | Google Play In-App Updates | Auto-update prompt |
| App Review | ✅ Complete | Google Play In-App Review | Rating prompt |
| Deep Linking | ⚠️ Partial | Branch.io integration | Not fully used |
| Offline Mode | ❌ Missing | - | No offline support |
| Data Export | ❌ Missing | - | GDPR requirement |
| Account Deletion | ❌ Missing | - | GDPR requirement |
Dependency Analysis¶
Gradle Dependencies Summary¶
Total Dependencies: 78 (including test dependencies)
| Category | Count | Status |
|---|---|---|
| AndroidX Libraries | 15 | ✅ Up to date |
| Firebase Services | 4 | ✅ Up to date |
| Networking | 3 | ⚠️ Some outdated |
| UI Libraries | 25+ | ⚠️ Mixed versions |
| Video/Media | 3 | ⚠️ VideoSDK outdated |
| Utilities | 15+ | ⚠️ Some outdated |
| Testing | 4 | ⚠️ Outdated |
Third-Party Library Inventory¶
Core Dependencies¶
1. Android Jetpack (AndroidX)¶
| Library | Version | Purpose | Status |
|---|---|---|---|
androidx.appcompat |
1.2.0 | Backwards compatibility | ⚠️ Outdated (current: 1.6.x) |
androidx.constraintlayout |
1.1.3 | Layout manager | ⚠️ Outdated (current: 2.1.x) |
androidx.fragment |
1.6.2 | Fragment support | ✅ Recent |
androidx.navigation:navigation-fragment |
2.5.0 | Navigation Component | ⚠️ Outdated (current: 2.7.x) |
androidx.navigation:navigation-ui |
2.5.0 | Navigation UI | ⚠️ Outdated |
androidx.work:work-runtime |
2.8.1 | Background tasks | ✅ Recent |
androidx.swiperefreshlayout |
1.0.0 | Pull to refresh | ⚠️ Outdated (current: 1.1.x) |
androidx.legacy:legacy-support-v4 |
1.0.0 | Legacy support | ⚠️ Deprecated |
Recommendation: Upgrade AndroidX libraries to latest stable versions.
2. Firebase Services¶
| Library | Version | Purpose | Status |
|---|---|---|---|
firebase-messaging |
23.4.0 | Push notifications (FCM) | ✅ Recent |
firebase-auth |
22.3.1 | Authentication | ✅ Recent |
firebase-crashlytics |
18.4.1 | Crash reporting | ✅ Recent |
firebase-analytics |
21.3.0 | Analytics | ✅ Recent |
firebase-jobdispatcher |
0.8.5 | Job scheduling | ❌ Deprecated (use WorkManager) |
Issues:
- ❌ firebase-jobdispatcher is deprecated → Migrate to WorkManager
- ⚠️ Firebase BoM not used → Version conflicts possible
Recommendation:
// Use Firebase BoM for version management
implementation platform('com.google.firebase:firebase-bom:32.7.0')
implementation 'com.google.firebase:firebase-messaging'
implementation 'com.google.firebase:firebase-auth'
implementation 'com.google.firebase:firebase-crashlytics'
implementation 'com.google.firebase:firebase-analytics'
3. Networking Libraries¶
| Library | Version | Purpose | Status | Security |
|---|---|---|---|---|
android-networking (Fast Android Networking) |
1.0.2 | HTTP client | ⚠️ Outdated (2018) | ⚠️ Low activity |
android-async-http |
1.4.9 | HTTP client | ❌ Deprecated (2016) | ❌ Unmaintained |
nv-websocket-client |
2.3 | WebSocket | ⚠️ Outdated (2017) | ⚠️ Low activity |
gson |
2.8.5 / 2.8.2 | JSON parsing | ⚠️ Outdated (current: 2.10.x) | ✅ Stable |
Issues:
- ❌ android-async-http is abandoned (last update 2016)
- ⚠️ android-networking has low maintenance activity
- ⚠️ Duplicate Gson versions (2.8.2 and 2.8.5)
Recommendation: Migrate to modern alternatives
// Replace with Retrofit + OkHttp
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
// Replace WebSocket with OkHttp WebSocket or Scarlet
implementation 'com.tinder.scarlet:scarlet:0.1.12'
4. Video & Media¶
| Library | Version | Purpose | Status | Notes |
|---|---|---|---|---|
live.videosdk:rtc-android-sdk |
0.1.31 | Video calls | ⚠️ Old | Current: 0.1.x (check docs) |
androidyoutubeplayer:core |
12.1.0 | YouTube player | ✅ Recent | For video bio |
android-pdf-viewer |
2.8.2 | PDF viewer | ⚠️ Outdated (2019) | |
android-gif-drawable |
1.2.22 | GIF support | ✅ Maintained |
Issues:
- ⚠️ VideoSDK version may be outdated (check latest)
- ⚠️ PDF viewer library last updated 2019
Recommendation: Check VideoSDK latest version and consider migration path.
5. Image Loading & Processing¶
| Library | Version | Purpose | Status |
|---|---|---|---|
glide |
4.16.0 | Image loading | ✅ Recent |
picasso |
2.4.0 | Image loading | ❌ Duplicate + Outdated |
circleimageview |
2.1.0 | Circular images | ⚠️ Outdated (2017) |
android-image-cropper (CanHub) |
4.3.3 | Image cropping | ✅ Recent |
Issues:
- ❌ Both Glide AND Picasso included (unnecessary duplication)
- ⚠️ Picasso version is ancient (2.4.0 from 2015)
- ⚠️ CircleImageView is outdated (use ShapeableImageView from Material)
Recommendation:
// Remove Picasso, use Glide only
// implementation 'com.squareup.picasso:picasso:2.4.0' // DELETE
// Replace CircleImageView with Material Components
// implementation 'de.hdodenhof:circleimageview:2.1.0' // DELETE
implementation 'com.google.android.material:material:1.11.0'
// Use ShapeableImageView in layouts
6. UI Components¶
| Library | Version | Purpose | Status |
|---|---|---|---|
lottie |
5.2.0 | Animations | ✅ Recent |
awesome-calendar |
2.0.0 | Calendar view | ⚠️ Unknown maintenance |
Toasty |
1.4.0 | Custom toasts | ⚠️ Outdated (2020) |
easydialog |
1.4 | Dialogs | ❌ Abandoned (2017) |
ColorDialog |
1.0.0 | Color picker | ❌ Abandoned (2017) |
crystalrangeseekbar |
1.1.3 | Range slider | ⚠️ Outdated (2018) |
indicatorseekbar |
2.1.2 | Seekbar with indicator | ⚠️ Outdated (2019) |
RangeSeekBar (Jay-Goo) |
3.0.0 | Range slider | ⚠️ Duplicate functionality |
seekbar-ranged-view |
2.0.5 | Range slider | ⚠️ Triple duplication! |
slidetoact |
0.7.0 | Slide to confirm | ⚠️ Outdated (2020) |
Android-SpinKit |
1.4.0 | Loading animations | ⚠️ Outdated (2018) |
round-corner-progress-bar |
2.1.2 | Progress bar | ⚠️ Outdated (2021) |
indefinitepagerindicator |
1.0.10 | ViewPager indicator | ⚠️ Outdated (2021) |
view-pager-transforms |
2.0.24 | ViewPager animations | ⚠️ Outdated (2018) |
Issues:
- ❌ 3 different range slider libraries (crystalrangeseekbar, RangeSeekBar, seekbar-ranged-view)
- ❌ Many abandoned libraries (easydialog, ColorDialog)
- ⚠️ Most UI libraries are 3-5 years old
Recommendation: Consolidate and modernize UI libraries. Use Material Design Components where possible.
7. Utilities¶
| Library | Version | Purpose | Status |
|---|---|---|---|
sdp-android |
1.0.6 | Scalable DP | ✅ Maintained |
ssp-android |
1.0.6 | Scalable SP | ✅ Maintained |
OtpView |
v1.1.2 | OTP input | ⚠️ Outdated (2019) |
AudioRecordView |
1.0.5 | Voice recording | ⚠️ Outdated (2019) |
android-file-chooser |
v1.1.14 | File picker | ⚠️ Outdated (2019) |
richlinkpreview |
1.0.9 | Link previews | ⚠️ Outdated (2021) |
passwordstrengthmeter |
0.4 | Password strength | ⚠️ Outdated (2016) |
permissions (Nabin Bhandari) |
3.8 | Runtime permissions | ⚠️ Outdated (2020) |
accompanist-permissions |
0.27.0 | Jetpack Compose permissions | ⚠️ Not used (no Compose) |
Issues:
- ⚠️ Most utility libraries are outdated
- ❌ accompanist-permissions included but Compose not used
8. Google Play Services¶
| Library | Version | Purpose | Status |
|---|---|---|---|
play-services-auth |
20.4.0 | Google Sign-In | ✅ Recent |
play:asset-delivery |
2.2.2 | Asset delivery | ✅ Recent |
play:feature-delivery |
2.1.0 | Dynamic feature modules | ✅ Recent |
play:review |
2.0.1 | In-app review | ✅ Recent |
play:app-update |
2.1.0 | In-app updates | ✅ Recent |
Status: ✅ All recent and properly maintained.
9. Social & Authentication¶
| Library | Version | Purpose | Status |
|---|---|---|---|
facebook-android-sdk |
latest.release | Facebook integration | ⚠️ Vague versioning |
connectionclass (Facebook) |
1.0.1 | Network quality | ⚠️ Outdated (2016) |
Issues:
- ⚠️ latest.release is bad practice (unpredictable builds)
- ⚠️ Facebook Network Quality library is abandoned
Recommendation:
// Use specific version
implementation 'com.facebook.android:facebook-android-sdk:16.2.0'
10. Legacy/Deprecated Dependencies¶
| Library | Version | Status | Action Required |
|---|---|---|---|
com.android.support:design |
28.0.0 | ❌ Deprecated | Migrate to AndroidX Material |
firebase-jobdispatcher |
0.8.5 | ❌ Deprecated | Replace with WorkManager |
android-async-http |
1.4.9 | ❌ Abandoned | Replace with Retrofit |
androidx.legacy:legacy-support-v4 |
1.0.0 | ❌ Deprecated | Remove or replace |
11. Custom/Local Libraries¶
| Library | Location | Purpose |
|---|---|---|
intlphoneinput |
project(':intlphoneinput') |
International phone input |
duo-navigation-drawer |
project(':duo-navigation-drawer') |
Custom navigation drawer |
android-viewbadger.jar |
libs/ |
Badge count on views |
Notes:
- Custom libraries are maintained in-tree
- Should be evaluated for replacement with modern alternatives
Testing Dependencies¶
| Library | Version | Purpose | Status |
|---|---|---|---|
junit |
4.12 | Unit testing | ⚠️ Outdated (current: 4.13.x, migrate to JUnit 5) |
espresso-core |
3.1.0-alpha4 / 3.1.2-alpha01 | UI testing | ❌ Alpha versions in production |
androidx.test:runner |
1.1.0-alpha4 | Test runner | ❌ Alpha version |
Issues:
- ❌ Using alpha versions for testing libraries
- ⚠️ Very outdated test dependencies
- ⚠️ Espresso version inconsistency
Recommendation:
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.test:runner:1.5.2'
androidTestImplementation 'androidx.test:rules:1.5.0'
Permissions Analysis¶
Declared Permissions (27 total)¶
| Permission | Justification | Risk Level | Notes |
|---|---|---|---|
| INTERNET | API calls, WebSocket | Low | Essential |
| ACCESS_NETWORK_STATE | Check connectivity | Low | Essential |
| CAMERA | Video calls | Medium | Runtime permission |
| RECORD_AUDIO | Video calls, voice messages | Medium | Runtime permission |
| MODIFY_AUDIO_SETTINGS | Audio routing | Low | - |
| READ_EXTERNAL_STORAGE | Access documents | Medium | Runtime permission (Android <13) |
| WRITE_EXTERNAL_STORAGE | Save downloads | Medium | Runtime permission (Android <13) |
| READ_MEDIA_IMAGES | Access images | Medium | Runtime permission (Android 13+) |
| POST_NOTIFICATIONS | Push notifications | Low | Runtime permission (Android 13+) |
| WAKE_LOCK | Keep awake during calls | Low | - |
| BLUETOOTH | Bluetooth headsets | Low | - |
| BLUETOOTH_ADMIN | Bluetooth management | Low | - |
| BLUETOOTH_CONNECT | Bluetooth (Android 12+) | Medium | Runtime permission |
| SYSTEM_ALERT_WINDOW | Picture-in-picture | High | Overlay permission |
| CODE_DRAW_OVER_OTHER_APP_PERMISSION | Overlay (custom) | High | Non-standard |
| READ_PHONE_STATE | Call state awareness | High | ⚠️ Privacy concern |
| DEVICE_POWER | Power management | Medium | System permission |
| BROADCAST_STICKY | Sticky broadcasts | Low | Deprecated |
| GET_ACCOUNTS | Account access | High | ⚠️ Not used? |
Dangerous Permissions (Require Runtime Request):
- CAMERA
- RECORD_AUDIO
- READ_EXTERNAL_STORAGE (Android <13)
- WRITE_EXTERNAL_STORAGE (Android <13)
- READ_MEDIA_IMAGES (Android 13+)
- POST_NOTIFICATIONS (Android 13+)
- BLUETOOTH_CONNECT (Android 12+)
- READ_PHONE_STATE
Security Concerns:
- ⚠️ READ_PHONE_STATE: High privacy risk, should be removed if not essential
- ⚠️ GET_ACCOUNTS: Appears unused, should be removed
- ⚠️ SYSTEM_ALERT_WINDOW: Powerful permission, ensure proper usage
- ⚠️ CODE_DRAW_OVER_OTHER_APP_PERMISSION: Non-standard, verify necessity
Recommendations:
1. Remove unused permissions (GET_ACCOUNTS, likely others)
2. Audit READ_PHONE_STATE usage
3. Ensure all dangerous permissions are requested at runtime
4. Add permission rationale dialogs
Feature Completeness Matrix¶
Platform Comparison¶
| Feature Category | Android (Care Provider) | Android (Patient) | iOS (Care Provider) | Web Portal |
|---|---|---|---|---|
| Authentication | ✅ Complete | ✅ Complete | ❓ Unknown | ✅ Complete |
| Video Calls | ✅ Complete (VideoSDK) | ✅ Complete | ❓ Unknown | ⚠️ Limited |
| Messaging | ✅ Complete | ✅ Complete | ❓ Unknown | ✅ Complete |
| Appointments | ✅ Complete | ✅ Complete | ❓ Unknown | ✅ Complete |
| Assessments | ✅ Complete | ✅ Complete | ❓ Unknown | ✅ Complete |
| Homework | ✅ Complete | ✅ Complete | ❓ Unknown | ⚠️ Partial |
| Prescriptions | ✅ Complete | ✅ View only | ❓ Unknown | ✅ Complete |
| Payments | ✅ View only | ✅ Complete | ❓ Unknown | ✅ Complete |
| Schedule Management | ✅ Complete | ❌ N/A | ❓ Unknown | ✅ Complete |
| Patient History | ✅ Complete | ❌ N/A | ❓ Unknown | ✅ Complete |
Missing Features (Gap Analysis)¶
| Feature | Priority | Reason |
|---|---|---|
| Offline Mode | High | Poor network areas |
| Data Export (GDPR) | High | Legal requirement |
| Account Deletion | High | Legal requirement |
| Biometric Auth | Medium | Security & UX |
| Drug Interaction Check | High | Patient safety |
| Group Video Calls | Medium | Family therapy |
| Dark Mode | Low | User preference |
| Treatment Plan Templates | Medium | Provider efficiency |
| Analytics Dashboard | Low | Provider insights |
Deprecated Dependencies¶
Critical (Remove Immediately)¶
| Library | Version | Deprecated Since | Replacement |
|---|---|---|---|
firebase-jobdispatcher |
0.8.5 | 2019 | WorkManager |
android-async-http |
1.4.9 | 2016 | Retrofit + OkHttp |
com.android.support:design |
28.0.0 | 2018 | AndroidX Material |
androidx.legacy:legacy-support-v4 |
1.0.0 | 2019 | Specific AndroidX libs |
High Priority (Migrate Soon)¶
| Library | Issue | Recommendation |
|---|---|---|
easydialog |
Abandoned 2017 | Use MaterialAlertDialogBuilder |
ColorDialog |
Abandoned 2017 | Use Material Color Picker |
picasso |
Duplicate + old | Remove, use Glide |
circleimageview |
Outdated | Use ShapeableImageView |
Security Vulnerabilities¶
Known CVEs (Dependency Check Required)¶
⚠️ Action Required: Run dependency vulnerability scan
./gradlew dependencyCheckAnalyze
Potential Vulnerabilities¶
| Library | Version | Concern | Severity |
|---|---|---|---|
gson |
2.8.2/2.8.5 | Known vulnerabilities in <2.8.9 | Medium |
android-async-http |
1.4.9 | Unmaintained, potential security issues | High |
nv-websocket-client |
2.3 | Old, potential vulnerabilities | Medium |
picasso |
2.4.0 | Ancient version, potential issues | Low |
Recommendations:
1. Upgrade Gson to latest
2. Replace android-async-http with Retrofit
3. Consider OkHttp WebSocket instead of nv-websocket-client
4. Remove Picasso
Upgrade Recommendations¶
Immediate Actions¶
Priority 1: Security & Compliance
// 1. Remove deprecated Firebase JobDispatcher
// implementation 'com.firebase:firebase-jobdispatcher:0.8.5' // DELETE
// Migrate jobs to WorkManager (already included)
// 2. Upgrade Gson (security)
implementation 'com.google.code.gson:gson:2.10.1' // Was: 2.8.2/2.8.5
// 3. Remove abandoned HTTP client
// implementation 'com.loopj.android:android-async-http:1.4.9' // DELETE
Priority 2: Remove Duplicates
// Remove Picasso (duplicate)
// implementation 'com.squareup.picasso:picasso:2.4.0' // DELETE
// Remove duplicate range sliders (keep one)
// implementation 'com.crystal:crystalrangeseekbar:1.1.3' // DELETE
// implementation 'com.github.guilhe:seekbar-ranged-view:2.0.5' // DELETE
// Keep: implementation 'com.github.Jay-Goo:RangeSeekBar:3.0.0'
// Remove unused Compose library
// implementation 'com.google.accompanist:accompanist-permissions:0.27.0' // DELETE
Priority 3: Fix Facebook SDK
// Use specific version instead of latest.release
implementation 'com.facebook.android:facebook-android-sdk:16.2.0'
Short-term Actions¶
Migrate to Modern Networking Stack
// Replace Fast Android Networking + async-http
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
implementation 'com.squareup.okhttp3:okhttp:4.12.0'
implementation 'com.squareup.okhttp3:logging-interceptor:4.12.0'
// Replace WebSocket
implementation 'com.squareup.okhttp3:okhttp:4.12.0' // Includes WebSocket
Upgrade AndroidX
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.navigation:navigation-fragment:2.7.6'
implementation 'androidx.navigation:navigation-ui:2.7.6'
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'
Upgrade Testing
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
androidTestImplementation 'androidx.test:runner:1.5.2'
Long-term Actions¶
Consolidate UI Libraries
// Replace old UI libraries with Material Design Components
implementation 'com.google.android.material:material:1.11.0'
// Remove:
// - easydialog → MaterialAlertDialogBuilder
// - ColorDialog → Material Color Picker
// - circleimageview → ShapeableImageView
// - Multiple seekbars → Material Slider
Evaluate VideoSDK
- Check latest VideoSDK version
- Consider migration path if major version available
- Evaluate alternatives (Agora, Twilio) if needed
Consider Kotlin Migration
- New features in Kotlin only
- Gradual migration of existing code
- Use Kotlin Coroutines for async operations
Summary & Action Plan¶
Critical Issues¶
- ❌ Deprecated dependencies (firebase-jobdispatcher, async-http, support libraries)
- ❌ Security vulnerabilities (old Gson, unmaintained libraries)
- ❌ Duplicate libraries (Picasso+Glide, 3 range sliders)
- ⚠️ Outdated testing dependencies (alpha versions, old JUnit)
- ⚠️ Privacy concerns (READ_PHONE_STATE, GET_ACCOUNTS permissions)
Priority Summary¶
| Priority | Tasks |
|---|---|
| Immediate | Remove deprecated, fix duplicates |
| Short-term | Migrate networking, upgrade AndroidX |
| Long-term | UI library consolidation, Kotlin migration |
Risk Assessment¶
| Risk Category | Level | Impact |
|---|---|---|
| Security | High | Vulnerable dependencies, exposed tokens |
| Maintainability | High | Outdated libraries, tech debt |
| Stability | Medium | Alpha test libraries, duplicate deps |
| Compliance | High | Missing GDPR features |
Document Status: Complete
Next Steps: Security Audit
Maintained By: Audit Team
Version: 1.0