A small helpdesk system: an office Pixel running a patched GrapheneOS Dialer answers technician calls, records both call legs as separate channels, and a Ruby backend transcribes them through Whisper and files an AI summary against the caller. Squashed to a single commit for sharing. No credentials are included; secrets live outside the repo in /etc/helpdesk/env on the server or a gitignored .claude/env.local locally. See .claude/env.local.example for the shape. Start at README.md, then docs/architecture.md.
22 lines
1.3 KiB
Diff
22 lines
1.3 KiB
Diff
diff --git a/java/com/android/dialer/callrecord/AndroidManifest.xml b/java/com/android/dialer/callrecord/AndroidManifest.xml
|
|
index c2e0d66be..e160cfde9 100644
|
|
--- a/java/com/android/dialer/callrecord/AndroidManifest.xml
|
|
+++ b/java/com/android/dialer/callrecord/AndroidManifest.xml
|
|
@@ -18,11 +18,17 @@
|
|
|
|
<uses-permission android:name="android.permission.RECORD_AUDIO" />
|
|
<uses-permission android:name="android.permission.CAPTURE_AUDIO_OUTPUT" />
|
|
+ <!-- Helpdesk patch (B5): auto-record runs the recorder as a microphone foreground service so the
|
|
+ mic is held regardless of UI state, and it's future-proof for the Android-14 FGS-type enforcement
|
|
+ (targetSdk 30 doesn't enforce it today, but the declaration is correct now). -->
|
|
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
|
+ <uses-permission android:name="android.permission.FOREGROUND_SERVICE_MICROPHONE" />
|
|
|
|
<application>
|
|
<service android:name="com.android.dialer.callrecord.impl.CallRecorderService"
|
|
android:process="com.android.incallui" />
|
|
<service android:name="com.android.dialer.callrecord.impl.CallRecorderServiceV2"
|
|
+ android:foregroundServiceType="microphone"
|
|
android:process="com.android.incallui" />
|
|
</application>
|
|
</manifest>
|