d2cf678491
The sing action uses getUserMedia + MediaRecorder, which in a browser is gated only by the standard web mic prompt. In Capacitor's Android WebView it additionally requires the RECORD_AUDIO permission to be declared in AndroidManifest.xml; without it the WebView rejects with NotAllowedError and no system prompt is ever shown, so tapping record silently fails on the Android app while working fine in the browser. Also add MODIFY_AUDIO_SETTINGS, which some devices require for the echoCancellation / noiseSuppression / autoGainControl constraints that InlineSingCard passes to getUserMedia. Separately, reorder AUDIO_MIME_CANDIDATES to prefer audio/mp4/aac over audio/webm;codecs=opus. iOS WKWebView cannot decode WebM/Opus in an <audio> element, so the recorded Blob's preview URL failed to load on iOS. Android WebView and desktop Chromium both support mp4/aac, so preferring it first is safe cross-platform. This mirrors the ordering already used by useVoiceRecorder.ts.