flutter-incall-manager
 Introduction:  flutter-incall-manager
 Tags:  
Port from react-native-incall-manager
- Handling media-routes/sensors/events during a audio/video chat on Flutter
 
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 playdefault: {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 falsedefault: false | 
setSpeakerphoneOn(enable: ?boolean) | 
:smile: | :rage: | toggle speaker ON/OFF once. but not forcedefault: false | 
setForceSpeakerphoneOn(flag: ?boolean) | 
:smile: | :smile: | true -> force speaker on false -> force speaker off null -> use default behavior according to media typedefault: null | 
setMicrophoneMute(enable: ?boolean) | 
:smile: | :rage: | mute/unmute micophonedefault: falsep.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 repeatios_category: ios only, if you want to use specific audio categoryseconds: 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 } | 
