Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Include Page
ANDROIDSDK1EN:Android Click to Call

...

This example allows to place outgoing audio call with one button click using account specified in server config file

/usr/local/FlashphonerWebCallServer/conf/apps/click-to-call/accounts.xml

On the screenshot below the example is displayed after terminating a call and closing connection to server
Input fields required for connecting to WCS server and placing a call

  • 'WCS URL', where 192.168.2.104 is the address of the WCS server
  • 'Callee', where 001 is the SIP username of the callee

Image Removed

Work with code of the example

To analyze the code, let's take class ClickToCallActivity.java of the click-to-call example, which can be downloaded with corresponding build 1.0.1.38.

1. Initialization of the API.

Flashphoner.init() code

For initialization, object Сontext is passed to the init() method.

Code Block
languagejava
themeRDark
Flashphoner.init(this);

2. Session creation.

Flashphoner.createSession() code

Object SessionOptions with URL of WCS server is passed to createSession method

Code Block
languagejava
themeRDark
SessionOptions sessionOptions = new SessionOptions(mWcsUrlView.getText().toString());
session = Flashphoner.createSession(sessionOptions);

3. Connection to the server.

Session.connect(). code

Connection object with appKey of internal server-side application 'clickToCallApp' is passed to the method

Code Block
languagejs
themeRDark
Connection connection = new Connection();
connection.setAppKey("clickToCallApp");
/**
  * Connect to WCS server
  */
session.connect(connection);

4. Receiving the event confirming successful connection.

Session.onConnected(), Session.createCall() code

On this event, outgoung call is created with Session.createCall() method. CallOptions object with callee SIP username is passed to the method.

Code Block
languagejava
themeRDark
@Override
public void onConnected(final Connection connection) {
    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            mCallButton.setText(R.string.action_hangup);
            mCallButton.setTag(R.string.action_hangup);
            mCallButton.setEnabled(true);
            mCallStatus.setText("Connection: " + connection.getStatus());

            /**
              * Pass 'callee' to the callOptions and create a new call object
              */
            CallOptions callOptions = new CallOptions(mCalleeView.getText().toString());
            call = session.createCall(callOptions);
            call.on(new CallStatusEvent() {
                ...
            });

            ActivityCompat.requestPermissions(ClickToCallActivity.this,
                  new String[]{Manifest.permission.RECORD_AUDIO},
                  CALL_REQUEST_CODE);
            ...
        }
    });
}

5. Making outgoing call when permissions are granted.

Call.call() code

Code Block
languagejava
themeRDark
case CALL_REQUEST_CODE: {
    if (grantResults.length == 0 ||
          grantResults[0] != PackageManager.PERMISSION_GRANTED) {
        mCallButton.setEnabled(false);
        session.disconnect();
        Log.i(TAG, "Permission has been denied by user");
    } else {
        /**
          * Make the outgoing call
          */
        call.call();
        Log.i(TAG, "Permission has been granted by user");
    }
}

6. Disconnection.

Session.disconnect() code

Code Block
languagejava
themeRDark
mCallButton.setEnabled(false);
session.disconnect();

7. Receiving the event confirming successful disconnection.

session.onDisconnection() code

...

languagejava
themeRDark

...

ANDROIDSDK1EN:Android Click to Call