Search packages, repositories and app categories

Package detailsv1.0.0

flutter_incall

Flutter InCall Manager plugin for iOS/Android.

30-day downloads
31
Likes
25
Pub points
25

Install package

flutter pub add flutter_incall

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

Flutter InCall Manager is a cross-platform plugin for Android and iOS that enables developers to manage in-call functionality within Flutter applications. It provides access to device-level call controls, such as handling incoming and outgoing calls, managing audio routes, and monitoring call states. The plugin integrates with native call APIs to offer seamless call management experiences, making it ideal for VoIP apps, telehealth platforms, or communication tools requiring real-time call handling. It supports background call operations and works with system-level call interfaces on both platforms.

Use cases

  • VoIP applications
  • Telehealth platforms
  • Real-time communication tools
  • Call center software
  • Background call management

Key features

  • Native call state monitoring
  • Audio route management
  • Incoming/outgoing call handling
  • Cross-platform support (iOS/Android)
  • Background call capabilities

Suitable for

  • Developers building VoIP apps
  • Apps requiring real-time call control
  • Mobile communication platforms
  • Healthcare and remote assistance apps

Considerations

  • Requires platform-specific permissions
  • Limited to iOS/Android
  • May require additional configuration for background execution
  • Depends on native SDKs for full functionality

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

flutter_incall

Port from react-native-incall-manager

  • Handling media-routes/sensors/events during a audio/video chat on Flutter

add to pubspec:

flutter_incall: ^1.0.0

import

import 'package:flutter_incall/flutter_incall.dart';

API:

Methods

Method android ios description
start({media: ?string, auto: ?boolean, ringback: ?string}) :smile: :smile: start incall manager.
ringback accept non-empty string or it won't play
default: {media:'audio', auto: true, ringback: ''}
stop({busytone: ?string}) :smile: :smile: stop incall manager
busytone accept non-empty string or it won't play
default: {busytone: ''}
turnScreenOn() :smile: :rage: force turn screen on
turnScreenOff() :smile: :rage: force turn screen off
setKeepScreenOn(enable: ?boolean) :smile: :smile: set KeepScreenOn flag = true or false
default: false
setSpeakerphoneOn(enable: ?boolean) :smile: :rage: toggle speaker ON/OFF once. but not force
default: false
setForceSpeakerphoneOn(flag: ?boolean) :smile: :smile: true -> force speaker on
false -> force speaker off
null -> use default behavior according to media type
default: null
setMicrophoneMute(enable: ?boolean) :smile: :rage: mute/unmute micophone
default: false
p.s. if you use webrtc, you can just use track.enabled = false to mute
async checkRecordPermission() :smile: :smile: check record permission without promt. return Promise. see about permission section above
async requestRecordPermission() :smile: :smile: request record permission to user. return Promise. see about permission section above
startRingtone(ringtone: string, ?vibrate_pattern: array, ?ios_category: string, ?seconds: number) :smile: :smile: play ringtone.
ringtone: 'DEFAULT' or 'BUNDLE'
vibrate_pattern: same as RN, but does not support repeat
ios_category: ios only, if you want to use specific audio category
seconds: android only, specify how long do you want to play rather than play once nor repeat. in sec.
stopRingtone() :smile: :smile: stop play ringtone if previous started via startRingtone()
stopRingback() :smile: :smile: stop play ringback if previous started via start()
setFlashOn(enable: ?boolean, brightness: ?number) :rage: :smile: set flash light on/off
async getIsWiredHeadsetPluggedIn() :rage: :smile: return wired headset plugged in state

Events

Event android ios description
'Proximity' :smile: :smile: proximity sensor detected changes.
data: {'isNear': boolean}
'WiredHeadset' :smile: :smile: fire when wired headset plug/unplug
data: {'isPlugged': boolean, 'hasMic': boolean, 'deviceName': string }
'NoisyAudio' :smile: :rage: see andriod doc.
data: null
'MediaButton' :smile: :rage: when external device controler pressed button. see android doc
data: {'eventText': string, 'eventCode': number }
'onAudioFocusChange' :smile: :rage: see andriod doc
data: {'eventText': string, 'eventCode': number }

Categories

Source repository

Projects using this package

No data available yet.