搜索插件、代码仓与 APP 分类

插件详情v1.0.0

flutter_incall

适用于 iOS/Android 的 Flutter InCall Manager 插件。

近 30 天下载
31
喜欢数
25
Pub 分数
25

安装插件

flutter pub add flutter_incall

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

Flutter InCall Manager 是一个跨平台插件,适用于 Android 和 iOS,使开发者能够在 Flutter 应用中管理通话功能。它提供对设备级通话控制的访问,例如处理来电和去电、管理音频路由以及监控通话状态。该插件与原生通话 API 集成,提供无缝的通话管理体验,非常适合 VoIP 应用、远程医疗平台或需要实时通话处理的通信工具。它支持后台通话操作,并在两个平台上均可与系统级通话接口协同工作。

适合场景

  • VoIP 应用
  • 远程医疗平台
  • 实时通信工具
  • 呼叫中心软件
  • 后台调用管理

主要特点

  • 原生调用状态监控
  • 音频路由管理
  • 来电/去电处理
  • 跨平台支持(iOS/Android)
  • 后台调用功能

适合对象

  • 开发 VoIP 应用的开发者
  • 需要实时通话控制的应用程序
  • 移动通信平台
  • 医疗保健和远程协助应用

使用建议

  • 需要平台特定权限
  • 仅限 iOS/Android
  • 可能需要额外配置以支持后台执行
  • 依赖原生 SDK 以实现完整功能

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

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 }

所属分类

源码仓库

使用此插件的项目

暂无相关数据。