diff --git a/.Jules/palette.md b/.Jules/palette.md index 8e61b09..a5ba80a 100644 --- a/.Jules/palette.md +++ b/.Jules/palette.md @@ -146,3 +146,11 @@ ## 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 System Identifiers +**Learning:** Using raw technical identifiers (like `CHANNEL_ID` or "RemoteCam run") as the name and description for Android `NotificationChannel`s exposes internal development terminology directly to users via the system notification settings. This degrades the perceived quality and professionalism of the app. +**Action:** Always provide descriptive, human-readable localized string resources (e.g., "Remote Camera Service") for notification channel names and descriptions, as these are visible to users managing their device settings. + +## 2026-05-31 - Avoiding Aggressive UI Copy +**Learning:** Hardcoding aggressive or highly technical terminology (like "Kill") for user-facing actions in foreground services can be alarming or confusing to users who are accustomed to standard UX phrasing. +**Action:** Always utilize standard, gentle mobile UX phrasing (like "Stop") and extract the text to localized string resources to ensure a pleasant and professional user experience. 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..72b2633 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_text)).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..4319933 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -47,6 +47,13 @@ Copied to clipboard No web browser found. Please install a browser to view the repository. + + Remote Camera Service + Maintains the camera stream in the background + RemoteCam (active) + Tap to open + Stop + Stop Server? This will stop the camera stream and close the application.