voiceos_flutter 0.1.10 copy "voiceos_flutter: ^0.1.10" to clipboard
voiceos_flutter: ^0.1.10 copied to clipboard

Production-grade Flutter SDK for AI voice calling powered by the VoiceOS Rust AI Voice Engine. Supports FCM, TelecomManager, ConnectionService, AudioRecord/AudioTrack (Android) and PushKit, CallKit, A [...]

Changelog #

0.1.10 — Smooth TTS playback & build fix #

Fixed #

  • Choppy / sped-up TTS on Android: playback queue held only 100 chunks while long announcements send 1,000+ chunks (~34 s of audio), causing most audio to be dropped. Queue capacity is now 4,096 with blocking enqueue and WRITE_BLOCKING AudioTrack writes.
  • Playback drain timeout increased to 120 s so voice-blast calls finish before teardown.
  • Larger AudioTrack buffer for smoother speech output.
  • VoiceNotificationManager import fix for VoiceCallReceiver (0.1.8 compile error).

0.1.9 — Lock-screen wake & incoming call alerts #

Fixed #

  • Incoming call UI now wakes the display on a locked device (setTurnScreenOn before super.onCreate(), ring wake lock, keyguard dismiss).
  • FCM / killed-app path launches the full-screen incoming Activity immediately, not only via notification tap.
  • Incoming notification uses default ringtone, vibration pattern, and DND bypass.

Added #

  • VoiceCallLockScreenHelper — centralized lock-screen / wake / keyguard handling.
  • Android 14+ full-screen intent permission check with log guidance.

0.1.8 — Android native call UI #

Added #

  • Native full-screen call UI on Android (CallKit-equivalent for self-managed VoIP):
    • VoiceIncomingCallActivity — lock-screen incoming screen with Answer / Decline
    • VoiceInCallActivity — auto-opens after Accept with mute, speaker, end, live status, transcript
  • VoiceOSConfig.enableNativeCallUi — opt out to use your own Flutter call screen
  • VoiceOS.acceptIncomingCall() / rejectIncomingCall() Dart APIs

0.1.7 — Announcement playback drain #

Fixed #

  • Welcome / voice-blast calls ending silently: the SDK now drains the TTS playback queue before stopping AudioTrack / AVAudioPlayerNode when the server sends call_completed.
  • Server logs Voice blast produced zero audio samples when TTS returns no PCM, and Voice blast TTS streamed to client with duration when audio is sent.
  • Gateway allows up to 3 s for the WebSocket forwarder to flush remaining audio after the engine stops (was 500 ms).

0.1.6 — Graceful server call completion #

Fixed #

  • Incoming calls failing with AudioRecord failed to initialize (error -20) after tapping Answer on Android 14+ when the foreground service was still running with phoneCall-only type during ringing.
  • Active-call audio now starts only after VoiceCallService is promoted to microphone | phoneCall foreground service types.
  • Mic permission is verified on every answer path (notification + Telecom) before capture.
  • AudioRecord initialization retries briefly after Telecom setActive() / FGS promotion to handle device-specific audio routing races.
  • call_completed handling: announcement / one-shot agents no longer trigger max_reconnects_exceeded or spurious WebSocket reconnects when the server closes the socket after a normal call end.
  • Added CallCompletedEvent on the Dart event stream.

0.1.5 — Android incoming-call foreground service crash fix #

Fixed #

  • Crash on incoming FCM calls (SecurityException) when starting foreground service with microphone type before RECORD_AUDIO is granted (Android 14+ / targetSdk 34+).
  • Incoming-call notifications now use FOREGROUND_SERVICE_TYPE_PHONE_CALL only; microphone type is used only after the user answers and mic permission is available.

0.1.4 — Android Kotlin compile fix #

Fixed #

  • Missing VoiceCallService import in VoiceFCMService.kt (broke 0.1.3 Android builds).
  • logger.warnlogger.warning to match VoiceOSLogger API.

0.1.3 — Android self-managed incoming call UI #

Fixed #

  • Self-managed Telecom incoming calls now always show Answer/Decline notification UI (Android does not provide a system incoming-call screen for self-managed accounts).
  • Tapping Answer on the notification now starts audio/WebSocket when Telecom is enabled (previously waited for a system answer UI that never appears).
  • Telecom audio-route events during ringing no longer wake the mic before the call is answered.

0.1.2 — Android incoming call reliability #

Fixed #

  • Android FCM tokens are now synced to the dashboard as fcmToken (not pushkitToken).
  • Proactive FCM token fetch on SDK initialize.
  • Duplicate FCM deliveries no longer reject the second message as "Busy".
  • Emulator devices use notification-based incoming call UI (TelecomManager is unreliable on emulators).
  • VoiceCallService no longer re-dispatches incoming FCM to VoiceSessionManager (prevents double handling).

0.1.1 — Android Gradle dependency fix #

Fixed #

  • Android build failures caused by conflicting kotlin-stdlib-jdk8 and androidx.annotation version constraints when consumed from host Flutter apps.
  • Plugin android/build.gradle no longer pins Kotlin stdlib or AndroidX annotation versions; Flutter's embedding now resolves them consistently.
  • Example app Gradle files updated to current Flutter 3.44 conventions (removed resolutionStrategy.force hacks and manual dependency overrides).

0.1.0 — Initial Release (Phase 1 — iOS AI Agent Calling) #

Added #

  • VoiceOS.initialize() — SDK bootstrap with VoiceOSConfig
  • VoiceOS.login() / VoiceOS.logout() — token-based authentication
  • VoiceOS.callAI() — outgoing AI agent calls with CallConfig
  • VoiceOS.endCall() — graceful call termination
  • VoiceOS.mute() / VoiceOS.unmute() — microphone control
  • VoiceOS.enableSpeaker() / VoiceOS.disableSpeaker() — audio routing
  • VoiceOS.registerForVoIPPush() — PushKit VoIP push token registration
  • VoiceOS.instance.events — typed broadcast event stream
  • Native iOS: VoiceCallKitManager — CallKit incoming/outgoing call UI
  • Native iOS: VoicePushKitManager — PushKit VoIP push reception
  • Native iOS: VoiceAudioEngine — AVAudioEngine duplex audio (16 kHz capture / 22.05 kHz playback)
  • Native iOS: VoiceAudioSessionManager — AVAudioSession VoiceChat mode + interruption handling
  • Native iOS: VoiceSignalingClient — URLSession WebSocket with exponential back-off reconnection
  • Native iOS: VoiceSessionManager — central coordinator orchestrating all native components
  • Native iOS: VoiceSecureStorage — Keychain-backed credential storage
  • Android stub returning PLATFORM_NOT_SUPPORTED (Phase 2)
  • Example app with home screen (call button) and active call screen
1
likes
130
points
328
downloads

Documentation

API reference

Publisher

unverified uploader

Weekly Downloads

Production-grade Flutter SDK for AI voice calling powered by the VoiceOS Rust AI Voice Engine. Supports FCM, TelecomManager, ConnectionService, AudioRecord/AudioTrack (Android) and PushKit, CallKit, AVAudioEngine (iOS) with WebSocket real-time PCM streaming and native calling UI on both platforms.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

device_info_plus, flutter, http, package_info_plus, plugin_platform_interface, shared_preferences

More

Packages that depend on voiceos_flutter

Packages that implement voiceos_flutter