Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Native Android WebRTC application development

I am trying to create an android application for video chat and messaging by using WebRTC Native APIs. I have been through several links and found out that most of the documentation for android is vague, specially if you dont know where to start from. I followed the following links,

https://webrtc.org/native-code/android/#

https://www.chromium.org/developers/how-tos/android-build-instructions

But the above mentioned links doesnt make any sense because I want to develop an android application and these links suggests downloading a chromium and then build that. I know the end result is going to be an apk but what if I want to code my self. I looked into pubnub and OpenTokRTC as well but I dont want to use somebody elses signaling service either (along with pub and sub keys). I tried the following link,

https://github.com/pristineio/webrtc-build-scripts

but this seems to be a bit incomplete for a novice in WebRTC as well since it suggests to get the WebRTC by the following command,

# Pull WebRTC
get_webrtc

Finally I have tried the following link,

http://simonguest.com/2013/08/06/building-a-webrtc-client-for-android/

But the problem with this tutorial is that its not updated at all. Libjingle has been moved to github by now and I dont know how to use gclient to get libjingle from github.

This struggle of mine has been a disaster. Can anyone please help me in something with updated documentation or tutorial which I can use for understanding as to what exactly do I need to develop an application using webRTC native APIs? Please do not give me any links to OpenTokRtc or PubNub.

Thanks

like image 326
Ahmed Avatar asked Apr 24 '16 22:04

Ahmed


5 Answers

I know this is an old thread, but in case anyone is still searching for a way to build Android apps with libjingle, prebuilt libraries have been published within the last few months that can be added as dependencies very simply to Android Studio projects like so:

dependencies {
    compile 'org.webrtc:google-webrtc:1.0.+'
}

In Android Studio 2. Or for Android Studio 3:

dependencies {
    implementation 'org.webrtc:google-webrtc:1.0.+'
}

Documentation is here. For an example of how to use the Android API, read through the AppRTC code.

like image 119
samuelokrent Avatar answered Oct 06 '22 00:10

samuelokrent


@Mark Sherman gave a good answer on how to get the libjingle lib into compiling into your project. You will still need to come up with your own signaling service. The project I found helpful which includes an Android Client and service is the following:

Client - https://github.com/pchab/AndroidRTC

Signaling - https://github.com/pchab/ProjectRTC

You can also check out Ericsson's cross platform extensive SDK called OpenWebRTC:

http://www.openwebrtc.org/

https://github.com/EricssonResearch/openwebrtc-android-sdk

like image 31
Sofia Clover Avatar answered Oct 06 '22 01:10

Sofia Clover


I am also in the same situation as you are, finding how to integrate my own signalling service into libjingle and there seems to be no tutorial out there addressing it.

If you are using Android Studio for your development, you should include compile 'io.pristine:libjingle:9694@aar' in the dependencies section of your build.gradle script:

dependencies {
   compile fileTree(dir: 'libs', include: ['*.jar'])
   compile 'io.pristine:libjingle:9694@aar'
   // the rest of your code
}

This should add libjingle to your project.

like image 29
Mark Sherman Avatar answered Oct 06 '22 02:10

Mark Sherman


I'm using the library that Mark Sherman mentions. There is a blog post that explains very well all the classes involved in the process: tech.appear.in

NOTE: It doesn't explain anything about signalling servers but introduces you to it.

Also, the AppRTCDemo code available at chromium.googlesource.com can be a good trusted resource to check the workflow. It is a bit complex but if you know what you're looking for it can be useful.

like image 33
Samuel Méndez Avatar answered Oct 06 '22 02:10

Samuel Méndez


If you wan't a full end to end open source implementation I would look at this library... https://github.com/nhancv/nc-kurento-android

That paired with Kurento (https://github.com/kurento) and included demos will pretty much show you how everything works under the hood. I used this as a starting point for my own webrtc project and it was relatively easy to follow and thorough, although there will still be a learning curve of course.

like image 21
ESportsVRGuy Avatar answered Oct 06 '22 00:10

ESportsVRGuy