diff --git a/.Jules/palette.md b/.Jules/palette.md index 8e61b09..79a85bc 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -146,3 +146,7 @@ ## 2026-05-20 - Mouse Hover States for Custom Selectors **Learning:** Custom drawable selectors (like `ic_shutter.xml`) on Android often define `state_pressed` and `state_focused` but omit `state_hovered`. This strips visual feedback for users navigating with pointer devices (mice, trackpads) on environments like Chromebooks or Samsung DeX, degrading the user experience compared to native components. **Action:** Always include `android:state_hovered="true"` alongside focus and pressed states in custom interactive background selectors to ensure universal visual feedback across all input methods. + +## 2026-05-30 - User-Facing Notification Terminology +**Learning:** Hardcoded, technical, or aggressive terminology (like "Kill" for stopping a service or "Click" when tapping a touchscreen) in user-facing system notifications and foreground service controls creates a jarring and confusing experience. Sighted users are exposed to technical jargon, and screen readers read aggressive language out of context. +**Action:** Always avoid hardcoded technical phrasing in notification titles, descriptions, and actions. Utilize standard mobile UX phrasing (e.g., "Stop", "Tap to open") and ensure all notification text is extracted to localized string resources. diff --git a/app/src/main/java/com/samsung/android/scan3d/serv/Cam.kt b/app/src/main/java/com/samsung/android/scan3d/serv/Cam.kt index 902764a..bc035cf 100644 --- a/app/src/main/java/com/samsung/android/scan3d/serv/Cam.kt +++ b/app/src/main/java/com/samsung/android/scan3d/serv/Cam.kt @@ -45,10 +45,10 @@ class Cam : Service() { "start" -> { val channel = NotificationChannel( CHANNEL_ID, - CHANNEL_ID, + getString(R.string.notification_channel_name), NotificationManager.IMPORTANCE_DEFAULT ) - channel.description = "RemoteCam run" + channel.description = getString(R.string.notification_channel_desc) val notificationManager = getSystemService(NotificationManager::class.java) notificationManager.createNotificationChannel(channel) @@ -72,9 +72,9 @@ class Cam : Service() { val builder = NotificationCompat.Builder(this, CHANNEL_ID) - .setContentTitle("RemoteCam (active)") - .setContentText("Click to open").setOngoing(true) - .setSmallIcon(R.drawable.ic_linked_camera).addAction(R.drawable.ic_close, "Kill",pendingIntentKill) + .setContentTitle(getString(R.string.notification_title)) + .setContentText(getString(R.string.notification_content)).setOngoing(true) + .setSmallIcon(R.drawable.ic_linked_camera).addAction(R.drawable.ic_close, getString(R.string.notification_action_stop),pendingIntentKill) .setContentIntent(pendingIntent) diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b34ffb5..1c8ae20 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -69,4 +69,11 @@ %1$d ms %1$d kB/sec %1$d%% + + + RemoteCam Service + RemoteCam running in background + RemoteCam (active) + Tap to open + Stop