Wiki

Android softphone development



Development
MizuDroid is a fast and feature rich SIP softphone for Android devices, developed by Mizutech with special care for the latest Android features and optimizations for minimal battery usage. 
The MizuDroid Android Softphone is based on the high performance AJVoIP Android SIP library.
New major released (published also on our website and on Google Play) are released usually twice per year, however the software is in continuous development and new stable versions are released almost every week to be delivered for our customers.
MizuDroid is a mature, stable SIP client solution for Android and we provide customized versions for our customers.

The relevant changes in the major new versions are listed below:

Latest stable:
For new customers we always send the latest stable version which usually contains many improvements above the last published demo release. Internally we release a new stable version every month, however the downloadable demo on this website is updated only around once per year.



MizuDroid v.3.0 (May 31, 2019):
  • new: native dialer integration using ConnectionService
  • new: support and optimizations for Android Q (api level 29)
  • new: full 64 bit support, including also the native codec's
  • new: QR code based auto provisioning
  • new: usage without server/username/password (allowing direct calls to SIP URI's)
  • new: detect in charging state (and remove all battery optimizations while charging)
  • new: profile status
  • new: option to sort contacts by importance and make this the default
  • new: filter contacts: all, important, online
  • new: group chat
  • new: presence settings by user
  • new: change the colortheme at runtime
  • new: push notification for chat
  • new: invite friend option in the menu
  • new: add call/chat shortcut options
  • new: about me (from profile) send and display
  • new: contact option in the chat menu to jump to curret contact details
  • new: possibility to add multiple accounts with same username/password but different callerid
  • new: possibility to disable account
  • new: send picture
  • new: camera shot
  • new: search for settings
  • new: flexible new user signup
  • new: checknativecall customizable option
  • new: auto guess best transport protocol
  • new: chat sent feedback
  • improved: don't resend registered successfully many times
  • improved: GUI speedup, main contact entries cached
  • improved: push notifications
  • improved: settings cache
  • improved: notification channels
  • improved: start on boot
  • improved: firebase
  • improved: call mute
  • improved: accounts handling (including AC_FRIENDLYNAME)
  • improved: faster register state reports
  • improved: faster call accept
  • improved: auto-reconnect, fast detect network availability
  • improved: doze handling
  • improved: performance optimizations
  • improved: allow very long passwords
  • improved: delayed message delivery
  • improved: call recording
  • improved: background/foreground service switch
  • improved: detect and recover from permission issues while running in the background
  • improved: multiple accounts
  • improved: profile picture
  • improved: business edition licensing
  • improved: disconnect reason display
  • improved: design optimizations for tablets
  • improved: file transfer
  • improved: typing notifications
  • improved: new contact request
  • improved: media encryption defaults to auto now (auto try SRTP if transport is set to TLS)
  • improved: dial plan rules
  • improved: uploading logs
  • improved: view logs (scrolling)
  • improved: keep TLS connection
  • improved: setSustainedPerformanceMode usage
  • improved: device ID detection
  • improved: white-list handling
  • improved: wifi latency (take advantage of the new API capabilities such as WIFI_MODE_FULL_LOW_LATENCY or WIFI_MODE_FULL_HIGH_PERF)
  • impproved: if battery charging: run as service and never idle
  • improved: check application state (running, stopped, background/foreground) from IsIdle()
  • improved: option for both push and service: check handle correctly everywhere common.AskForWhiteList(false); common.CheckScheduledWakeUp();
  • improved: doze vs idle vs foreground service vs ignore battery optimization
  • fix: AUDIO_OUTPUT_FLAG_FAST denied, rates do not match 16000 Hz, require 48000 Hz
  • fix: don't use the caller-id in the contact header
  • fix: when searching for contact, display order should consider also the relevance
  • fix: various minor contacts handling bugs
  • fix: sometimes hangup button has X icon when call starts
  • fix: prefix rewrite
  • fix: duplicate chat messages

MizuDroid v.2.7 (November 2, 2018):
  • new: optimizations for Android Pie
  • new: audio focus
  • new: AudioAttributes.Builder with FLAG_LOW_LATENCY on api level 21
  • new: AudioAttributes.Builder with PERFORMANCE_MODE_LOW_LATENCY on api level 26
  • new: FLAG_AUDIBILITY_ENFORCED for loudspeaker
  • new: improved network change detection
  • new: offloading all time consuming tasks from the main thread
  • new: start page customization
  • new: group chat
  • new: offline messaging
  • new: advanced number rewrite
  • new: display contacts with pictures
  • new: centralized SIP account login settings
  • new: my profile with profile picture
  • new: second press on contact trigger the call
  • new: long press action for the main page entries
  • new: "Edit before call" setting
  • new: preferred codec setting
  • new: server side address book integration
  • new: incoming call settings
  • improved: multiple account handling
  • improved: incoming call/chat notifications (fullscreen vs notification)
  • improved: major SIP stack update
  • improved: user interface improvements
  • improved: video callback
  • improved: WiFi lock
  • improved: idle management
  • improved: cpu speed detection
  • improved: reduced audio latency
  • improved: FCM push notifications
  • improved: conference calls and group chat
  • improved: direx: getExternalFilesDir() getExternalMediaDirs()
  • improved: start the sipstack (commoninit) from a separate thread
  • improved: put back DeviceIsIdle for android sdk 23
  • improved: recheck permission request before call
  • improved: works also without permission for the native contact list
  • improved: start on boot
  • improved: performance (various optimizations)
  • fix: wifi lock only if current network is wifi WIFI_MODE_FULL_HIGH_PERF
  • fix: setStreamSolo deprecated sinceapi 23
  • fix: unreg also secondary accounts on exit
  • fix: incoming voip call while other voip call is already in progress
  • fix: incoming voip call while other native call is already in progress
  • fix: no dtmf sounds on keypad (should be very quiet sounds like the system dialer does)
  • fix: ask to save contact even if already exists
  • fix: Context.startForegroundService ANR
  • fix: handle split screen
  • fix: numerous other minor bug fixes
MizuDroid v.2.6 (July 22, 2018):
  • new: Android Oreo (API level 27) optimizations (while keeping full backward compatibility)
  • new: OPUS codec (full support, including all modes, FEC, mixing and recording)
  • new: presence
  • new: in-band DTMF (previously only RFC 2833 and SIP INFO was supported)
  • new: wideband conference
  • new: handle incoming calls while in sleep
  • new: push notification support (direct to SIP server or via FCM gateway)
  • new: WebRTC video support
  • new: quick fine-tune wizards
  • new: ability to move app to SD card
  • new: runtime permissions
  • new: scheduled wake up (used only for service mode to improve reliability on forced terminate)
  • new: enabledirectcalls config option
  • new: def mute and def hold settings
  • new: setting for realm
  • new: unicode for chat
  • new: chat composing notifications
  • new: sms auth (otp)
  • new: eof call stats per connection type
  • new: option to reject phone calls if VoIP call in progress
  • new: optimizations for Android 8 (Oreo)
  • new: improved backward compatibility with very old phones (API level 9)
  • new: option for native contact edit
  • new: forcereregister parameter
  • new: contact image/avatar display
  • new: last call details from the menu
  • new: upload log via email option
  • new: use latest android sdk features when available (codec, agc, etc)
  • new: quick restart sipstack on network change
  • new: check GetNetworkSpeed also before calls
  • new: AGC for recorded voice and volume normalization for the sides
  • new: auto codec switch from wide-band to narrow-band when low quality network is detected
  • new: handle the TRIM_MEMORY_RUNNING_LOW OS event
  • new: Native call on VoIP busy option
  • improved: many performance related optimizations
  • improved: native dialer integration
  • improved: hardware proximity
  • improved: SIP MESSAGE protocol for IM/chat
  • improved: multiple accounts
  • improved: local conference mixer
  • improved: background call handling (incoming calls while device in sleep)
  • improved: speed up activity load time
  • improved: sip stack updated to v.2.6 with many improvements and better compatibility
  • improved: battery usage (multiple micro optimizations)
  • improved: call quality (multiple related improvements and bug fixes)
  • improved: performance while in calls
  • improved: default contacts on the main page (favorites and last calls from native call history)
  • improved: exit behavior
  • improved: voicemail display and better voicemail asterisk compatibility
  • improved: background listener
  • improved: auto-start
  • improved: VoIP call hold
  • improved: CPU performance detection
  • improved: PLC
  • improved: multiple simultaneous calls
  • improved: various GUI improvements
  • improved: device id calculation
  • improved: call disconnect rason display
  • improved: remove ftp lib dependency: eliminate org.apache.commons (ftp)
  • improved: remove apache http client dependency (org.apache.http.client.HttpClient)
  • improved: removed all external dependencies
  • improved: use the API_GetPushNotificationsEx(false) / API_GetPushNotifications
  • improved: phone numbers for contact is displyed as "Call Other"
  • improved: double back key handling
  • improved: proguard config optimizations
  • improved: native call integration
  • improved: all tests wiht StrictMode
  • improved: NAT keep alive
  • improved: use of getLinkUpstreamBandwidthKbps
  • improved: removed exit popus
  • improved: minimize network usage
  • improved: keyboard shorcuts to work with Chromebox (chromeOS - ARCHon) ...especially for the dialpad
  • improved: password requirements verification
  • improved: no need for native dial permission anymore (so no any "dangerious" permission is asked at install)
  • improved: quick settings save
  • improved: various optimizations for chromebook
  • improved: correct handling of various number formats
  • improved: battery usage: check reregistration if no networks, also with tunneling
  • improved: isDeviceIdleMode() isPowerSaveMode()
  • improved: handle network changes better
  • improved: remember last internet speed
  • improved: turn on wifi only when user launch the app or make call
  • improved: a long list of other micro optimizations
  • fix: number rewrite (prefix rewrite)
  • fix: voice record
  • fix: G.729 framing/ptime for voice call recording
  • fix: double register at start
  • fix: multiple frames per packet for speex
  • fix: audio recording problem
  • fix: reject on busy option
  • fix: various SIP protocol related bug fixes
  • fix: remove unnecessary wifi scans (also "stuck partial wake loks", "excessive wakeups")
  • fix: file transfer require filemanager
  • fix: chat messages with special characters
  • fix: synchronized call for null objects
  • fix: disable spellcheck in target number box (and everywhere except chat)
  • fix: phone PopulateTask onPostExecute, activity has stopped
  • fix: settings save only on OK (not on cancel)
  • fix: reject double outbound calls to same destination
  • fix: slow loading and phone remains in loading issues
  • fix: if call was not connected, don't popup ask to save contact
  • fix: unable to register multiple accounts at the same time
  • fix: call recording playback
  • fix: phone PopulateTask onPostExecute, activity has stopped
  • fix: unreg also secondary accounts on exit
  • fix: more then 40 minor bug fix
  • known limitation:
  • -doesn't work with all bluetooth devices
  • -video requires RTC (handles automatically if SIP server has public IP)

You can access the archived change list from here.
MizuDroid is based for our Java SIP library and Android SIP library. You can find the changes for these here and here.




MizuDroid



 |  View Topic History  |