Using an Android VoIP calling app, you can place or receive phone video or audio calls on your smartphone without using the device's default phone interface. A VoIP calling app also allows you to make calls via an internet connection without a cellular connection (e.g., Wi-Fi) or place international calls without the hefty fee charged by conventional phone companies.

Here's an Android VoIP programming tutorial and some application examples:

Use the Android Telecom Framework

The android.telecom package guides you to build a calling app with the telecom framework to ensure that the app interoperates correctly with the native telecom subsystem in the device and other calling apps. The framework enables your app to properly manage audio and video routing while enforcing calling constraints to maintain a stable calling environment.

Set App Manifest Declaration and Permission

To start, go to your app manifest and declare that the app manages its own call through the self-managed ConnectionService APIs by specifying the class that implements the service. You should also allow permission for the device to read your call log and have read-only access to your phone state.

Bind to a Connection Service

The telecom system needs to bind to a ConnectionService class so it can be implemented as a self-managed connection service. It allows you to make VoIP phone calls from a standalone calling app within it being integrated into the built-in phone app. When setting up the connection service, you can also adjust settings for holding calls, caller name and video state of outgoing calls.

Implement the Connection

Next, you need to create a subclass of Connection to represent the calls in your app so you can implement a variety of functions such as showing the caller name of an incoming call, changing audio routes, putting a call on hold, resuming a call that's been put on hold, accepting or rejecting an incoming call and placing conference calls.

Program the Handling of Common Calling Scenarios

By interacting with other classes in the Android telecom package, you can use the connection service APIs to handle a variety of calling scenarios such as:

  • Answering incoming calls: The way incoming calls are handled depends on whether there are calls on another app. Scenarios include no active call in other apps and active calls in other apps that cannot be put on hold.
  • Placing outgoing calls: Informs the telecom subsystem about a new outgoing call with a series of parameters such as the address to which the call is being placed and how calls are being routed to a device. The flow also needs to address the scenario in which the user is unable to place a call due to constraints imposed by the telecom framework.
  • Ending a call: The parameters are determined by which party ends the call.

Understand Calling Constraints

The telecom framework enforces certain calling constraints to ensure that a stable calling environment is available for all the apps on a device. Here are some common constraints:

  • There can only be ongoing calls in one calling app at a time.
  • If there's an ongoing call engaged in the built-in phone or dialer app, the calling apps can't be used to make or receive calls.
  • The app's call will be disconnected if the user dials an emergency call.
  • The calling app can't place or receive calls while the user is in an emergency call.
  • If there is an ongoing call coming in from another calling app when a user is in the middle of a call, answering the incoming call ends any ongoing call in the current app.

Adhere to Best Practices

Programming is just one step in creating an Android VoIP calling app. In order to ensure proper functioning, optimize performance and protect user data, you need to adhere to best practices such as:

  • Testing: verify the app's functional behaviors and usability.
  • Performance: Optimize performance such as power usage, load time and responsiveness to user actions.
  • Accessibility: Ensure that the app can be used by people with disability to help increase its reach and improve its versatility.
  • Security and compliance: Protect users' data from hackers and preserve device integrity.

When it comes to VoIP, 8x8 provides a reliable and compliant cloud solution at a demanding level rarely seen by other cloud providers. Don't take your chances with a subpar cloud-based telecom system. Call 1-855-341-5227 or fill out an online form to request a no-obligation quote from an 8x8 product specialist.


VoIP Architecture Diagram

VoIP Dialer

VoIP Installation