bejayoharen / java-bells

An implementation of Jingle for Java based on Libjitsi, Ice4J and Smack
Other
77 stars 30 forks source link

Java Bells

A Jingle implementation for Java based on LibJitsi, Ice4J and Smack

Jitsi implements many features that would be desirable to add to an XMPP library, including Jingle and ICE. Unfortunately, these features are not easily accessible to developers nor are they well documented. This project aims to make these features available to developers with good sample code and decent documentation.

Status

Basic functionality is implemented for both calling out and receiving calls. The receiver can accept calls from other XMPP/Jingle apps like Jitsi. Some documentation, cleanup and testing is still required. The API may change.

Project Goals

The goals of this project are:

It is also desirable to minimize external requirements, but this is less important.

How to Use

If you are interested in integrating this code with your app, I suggest you start by using the Jisti app to make video calls to make sure your server is setup correctly. Then, use the sample code I've provided and described below to get one user to call themselves on the same machine. Then try calling from one machine to another.

After you get that working, you can easily modify it as needed and integrate into your awesome app.

Compiling and Running

To compile and run, you can use the included ant build.xml file. All the required libraries are included with the distrobution. The following targets are available:

For the tests to run, you will need to copy the passwords.props.template to passwords.props and fill in the values. Don't commit passwords.props to the repository.

ToDo

How You Can Help

It is surprisingly easy to help. In order from easy to hard:

Source Overview

The main functionality for XMPP connections is provided by the Smack library. In many ways, Java Bells is designed to replace the obsolete smacks-jingle package that came with smack. ICE functionality is provided by the Ice4J library, and the actual media IO and media streaming is provided by LibJitsi. Because LibJitsi and Ice4J have little documentation, other than the overwhelming Jitsi soucecode, it is difficult to inplement these features in other code. This library provides both lightwieght code to help make it easy to use the functions in Ice4J and LibJitsi as well as sample code to demonstrate how to do so.

The sample code is in the package com.xonami.javaBellsSample. Normally you will not use this package in your own code, but rather use it as an example. The code for this library is in the package com.xonami.javaBells. Other packages are coppied from Jitsi.

To use Java Bells, here are the basic steps you need to follow. See the JavaBellsSample for more detail:

Support

If you need help, please open a ticket here or contact me directly. I am no longer subscribed to the jitsi mailing list, but I do want to help.