Skip to content

Meowsbox/vosp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

VOSP
VOSP

Overview

VOSP is a fork of the Dialer app from the Android Open Source Project tailored to provide voice services over SIP (Session Initiation Protocol) using the PJSIP communications library. VOSP is a (nearly) feature-complete replacement for the bundled dialer for your device or just an adjunct.

Basic useful feature list:

  • Fast, Familiar, and Convenient UX
  • Device-wide call handling
  • Battery efficient
  • Reliable connectivity on Marshmallow / Nougat Doze phones
  • Background and Multiple calling handling
  • Low background memory usage ~12mb
  • No third-party advertising
  • Open source!

Installation

Official builds are available from the Google Play store and directly from Meowsbox

Licensing

VOSP is OpenSource. Refer to the LICENSE and NOTICE project files. Alternate licensing terms may be available, contact us.

How to Build and Assumptions

The section is a guide and not a "step-by-step-copy-paste" style tutorial. It is however a functional way to mimic the build process of the official app. You will need to adapt these instructions to your build-system and preferences. This guide assumes you are familiar with Android application development, Android Native code development, Linux and Windows if applicable.

Note this repo contains only the relevant source code specific to VOSP and may not contain the entirety of third-party code or libraries used in the official public releases. Where applicable, the third-party code will be referenced so you can decide what to include in your build.

VOSP is composed of two parts:

  1. Android Dalvik application
  2. Android Native dynamic libraries

Build Requirements

Setting up the code base

  • Using your IDE or development toolset, create a standard Android project.
  • Checkout the source code from this repo into your project.
  • Download SQLite for Android
  • Add the SQLite AAR to your project.
  • Download PJSip.
  • Extract PJSip into a folder of your choice.
  • From our repo, apply the code patches from the /third-party folder to the PJSip code you extracted in the previous step.
  • Important: If your project structure and naming schema differs from the repo code, be sure to update the native code to reflect your changes.
  • Optional: Add the desired third-party addons to the PJSip code base: SILK, opus, openSSL, etc.

Building the Native Libraries

  • Extract the Android SDK and NDK
  • Setup the Android NDK environment variables ANDROID_HOME, ANDROID_NDK_HOME, and ANDROID_NDK_ROOT
  • Complete to steps in the for Buildling PJSip for Android here with respect to the points below:
    • Complete the sections: Requirements, Build Preparations, Building PJSIP
    • Optional: Complete the OpenSSL Support section
    • The build process will generate the libpjsua2.so in the ABI flavor you specified. Copy the dynamic library into the appropriate jniLibs folder of your project.
    • Complete the Building and running pjsua2 sample application section.
    • Copy the SWING Java binding code from pjsip-apps/src/swig/java/android/app/src/main/java to your project src folder.

Building the Android Application

  • Modify the app/build.gradle script to fit your build configuration. ie: remove references to our internal proguard and signing rules
  • Build and sign your APK.

If you made it this far, Congratulations! With any luck, you will now have built your own copy of VOSP from source. If you had any problems, check over the steps above carefully and read the FAQs below.

Redistribution

Great! Before you publish your builds run through this pre-flight list:

  • Clearly change or remove all branding.
  • Change or remove support contacts.
  • Disable or remove network and licensing code pointing to our servers that are no longer applicable.
  • Review the LICENSE and NOTICE project files.

We love helping people but it's difficult to handle support request for third-party builds.

Frequently Asked Questions:

Q. I checked out your repo and it does not compile

This repo does not include third-party code and libraries. Refer to the build instructions carefully.

Q. Why do you not include all third-party code?

Most if not all the third-party code is verbatim. Any changes to third-party code essential to VOSP has either been included directly or as a patch to simplify maintainability of this repo.

Q. I need help with the native build process...

If you've never worked with native code or Linux building PJSip may be difficult. We suggest to start by looking at some basic Android development on Linux tutorials to start, then return to the build instructions again - they're pretty straight forward once you've had some experience. Alternatively if you don't need to make native code changes, consider using the libraries from the official apk releases.

Q. Your code really sucks!

Thank you for your input; we make no excuses.

Q. Weird PJSip build errors...

Be sure to use Android NDK r12b. PJSip is not currently out-of-the-box build-compatible with the newer NDK based on Clang.

Q. I can't find the SILK codec source code.

SILK is not needed but if you really want to include it, contact Skype's developer support team or just search for it...

Q. I found the SILK codec code but don't know what to do with it.

PJSip handles supported third-party codecs as part code and part dynamic library. Compile the codec however you want, CSipSimple is probably a good place to start if you are completely lost. Don't forget to add --with-silk=/path/to/SILK_SDK_SRC to your ./configure-android commandline.

Q. Android already includes SQLite...and *SSL too!

They are needed to support devices running non-standard Android OS flavors. (Outside the Google-sphere) The memory footprint penalty is acceptably small.

Q. I don't have a Linux build-environment, can you help me do this in Windows only?

The internet is great learning resource. Try Linux in a VM, it wont bite, probably.

Q. I just submitted a pull request... or How do I contribute?

Contact us. This repo is primarily a public code mirror for your convenience.

Q. Something else?

Contact us, we will try our best to respond. Please clearly state your query is development repo or code related so that it reaches the correct person(s) quickly.

Releases

No releases published

Packages

No packages published