Versions Compared

Key

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

Пример Click to Call для Android

Данный пример позволяет сделать аудиозвонок одним кликом кнопки, используя аккаунт заданный в конфиге файле настроек сервера

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

...

  •  'WCS URL', где 192.168.2.104 - адрес WCS-сервера
  • 'Callee', где 001 - SIP логин вызываемого пользователя

Работа с кодом примера

Для разбора кода возьмем класс ClickToCallActivity.java примера click-to-call, который доступен для скачивания в соответствующей сборке 1.0.1.38.

...

Code Block
languagejs
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() {
                /**
                  * WCS received 100 TRYING from SIP
                  * @param call
                  */
                @Override
                public void onTrying(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallButton.setText(R.string.action_hangup);
                            mCallButton.setTag(R.string.action_hangup);
                            mCallButton.setEnabled(true);
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }

                /**
                  * WCS received BUSY_HERE or BUSY_EVERYWHERE from SIP
                  * @param call
                  */
                @Override
                public void onBusy(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallButton.setText(R.string.action_call);
                            mCallButton.setTag(R.string.action_call);
                            mCallButton.setEnabled(true);
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }

                /**
                  * Call failed on server
                  * @param call
                  */
                @Override
                public void onFailed(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }

                /**
                  * WCS received 180 RINGING from SIP
                  * @param call
                  */
                @Override
                public void onRing(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }

                /**
                  * Call is set on hold by the remote participant
                  * @param call
                  */
                @Override
                public void onHold(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }

                /**
                  * Call is established. WCS received 200 OK from SIP on INVITE.
                  * @param call
                  */
                @Override
                public void onEstablished(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }

                /**
                  * Call is terminated either by caller or by a SIP remote participant.
                  * @param call
                  */
                @Override
                public void onFinished(final Call call) {
                    runOnUiThread(new Runnable() {
                        @Override
                        public void run() {
                            mCallButton.setText(R.string.action_call);
                            mCallButton.setTag(R.string.action_call);
                            mCallButton.setEnabled(true);
                            mCallStatus.setText("Call: " + call.getStatus());
                        }
                    });
                }
            });

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

            SharedPreferences sharedPref = ClickToCallActivity.this.getPreferences(Context.MODE_PRIVATE);
            SharedPreferences.Editor editor = sharedPref.edit();
            editor.putString("callee", mCalleeView.getText().toString());
            editor.apply();
        }
    });
}


5. Совершение исходящего звонка.

...