Search in sources :

Example 1 with CallStatusEvent

use of com.flashphoner.fpwcsapi.session.CallStatusEvent in project wcs-android-sdk-samples by flashphoner.

the class PhoneMinVideoActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_streaming_min);
    /**
     * Initialization of the API.
     */
    Flashphoner.init(this);
    /**
     * UI controls
     */
    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    mWcsUrlView = (EditText) findViewById(R.id.wcs_url);
    mWcsUrlView.setText(sharedPref.getString("wcs_url", getString(R.string.wcs_url)));
    mSipLoginView = (EditText) findViewById(R.id.sip_login);
    mSipLoginView.setText(sharedPref.getString("sip_login", getString(R.string.sip_login)));
    mSipPasswordView = (EditText) findViewById(R.id.sip_password);
    mSipPasswordView.setText(sharedPref.getString("sip_password", getString(R.string.sip_password)));
    mSipDomainView = (EditText) findViewById(R.id.sip_domain);
    mSipDomainView.setText(sharedPref.getString("sip_domain", getString(R.string.sip_domain)));
    mSipPortView = (EditText) findViewById(R.id.sip_port);
    mSipPortView.setText(sharedPref.getString("sip_port", getString(R.string.sip_port)));
    mSipRegisterRequiredView = (CheckBox) findViewById(R.id.register_required);
    mSipRegisterRequiredView.setChecked(sharedPref.getBoolean("sip_register_required", true));
    callStatusEvent = new CallStatusEvent() {

        /**
         * WCS received SIP 100 TRYING
         * @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.getStatus());
                }
            });
        }

        /**
         * WCS received SIP 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.getStatus());
                }
            });
        }

        /**
         * Call is failed
         * @param call
         */
        @Override
        public void onFailed(Call call) {
        }

        /**
         * WCS received SIP 180 RINGING from SIP
         * @param call
         */
        @Override
        public void onRing(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.getStatus());
                }
            });
        }

        /**
         * Call is set on hold
         * @param call
         */
        @Override
        public void onHold(final Call call) {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    mCallStatus.setText(call.getStatus());
                }
            });
        }

        /**
         * Call established
         * @param call
         */
        @Override
        public void onEstablished(final Call call) {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    mCallStatus.setText(call.getStatus());
                    mHoldButton.setEnabled(true);
                    mMuteAudio.setEnabled(true);
                    mMuteVideo.setEnabled(true);
                }
            });
        }

        /**
         * Call is terminated
         * @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.getStatus());
                    mHoldButton.setText(R.string.action_hold);
                    mHoldButton.setTag(R.string.action_hold);
                    mHoldButton.setEnabled(false);
                    mMuteAudio.setEnabled(false);
                    mMuteAudio.setChecked(false);
                    mMuteVideo.setEnabled(false);
                    mMuteVideo.setChecked(false);
                    if (incomingCallAlert != null) {
                        incomingCallAlert.hide();
                        incomingCallAlert = null;
                    }
                }
            });
        }
    };
    mConnectStatus = (TextView) findViewById(R.id.connect_status);
    mConnectButton = (Button) findViewById(R.id.connect_button);
    /**
     * Connect button pressed
     */
    mConnectButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mConnectButton.getTag() == null || Integer.valueOf(R.string.action_connect).equals(mConnectButton.getTag())) {
                SessionOptions sessionOptions = new SessionOptions(mWcsUrlView.getText().toString());
                sessionOptions.setLocalRenderer(localRender);
                sessionOptions.setRemoteRenderer(remoteRender);
                session = Flashphoner.createSession(sessionOptions);
                session.on(new SessionEvent() {

                    @Override
                    public void onAppData(Data data) {
                    }

                    /**
                     * Connection established
                     * @param connection Current connection state
                     */
                    @Override
                    public void onConnected(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mConnectButton.setText(R.string.action_disconnect);
                                mConnectButton.setTag(R.string.action_disconnect);
                                mConnectButton.setEnabled(true);
                                if (!mSipRegisterRequiredView.isChecked()) {
                                    mConnectStatus.setText(connection.getStatus());
                                    mCallButton.setEnabled(true);
                                } else {
                                    mConnectStatus.setText(connection.getStatus() + ". Registering...");
                                }
                            }
                        });
                    }

                    /**
                     * Phone registered
                     * @param connection Current connection state
                     */
                    @Override
                    public void onRegistered(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mConnectStatus.setText(connection.getStatus());
                                mCallButton.setEnabled(true);
                            }
                        });
                    }

                    /**
                     * Phone disconnected
                     * @param connection Current connection state
                     */
                    @Override
                    public void onDisconnection(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mConnectButton.setText(R.string.action_connect);
                                mConnectButton.setTag(R.string.action_connect);
                                mConnectButton.setEnabled(true);
                                mConnectStatus.setText(connection.getStatus());
                                mCallButton.setText(R.string.action_call);
                                mCallButton.setTag(R.string.action_call);
                                mCallButton.setEnabled(false);
                                mCallStatus.setText("");
                                mHoldButton.setText(R.string.action_hold);
                                mHoldButton.setTag(R.string.action_hold);
                                mHoldButton.setEnabled(false);
                                mMuteAudio.setEnabled(false);
                                mMuteAudio.setChecked(false);
                                mMuteVideo.setEnabled(false);
                                mMuteVideo.setChecked(false);
                            }
                        });
                    }
                });
                /**
                 * Add handler for incoming call
                 */
                session.on(new IncomingCallEvent() {

                    @Override
                    public void onCall(final Call call) {
                        call.on(callStatusEvent);
                        /**
                         * Display UI alert for the new incoming call
                         */
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                AlertDialog.Builder builder = new AlertDialog.Builder(PhoneMinVideoActivity.this);
                                builder.setTitle("Incoming call");
                                builder.setMessage("Incoming call from '" + call.getCaller() + "'");
                                builder.setPositiveButton("Answer", new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {
                                        PhoneMinVideoActivity.this.call = call;
                                        ActivityCompat.requestPermissions(PhoneMinVideoActivity.this, new String[] { Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA }, INCOMING_CALL_REQUEST_CODE);
                                    }
                                });
                                builder.setNegativeButton("Hangup", new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {
                                        call.hangup();
                                        incomingCallAlert = null;
                                    }
                                });
                                incomingCallAlert = builder.show();
                            }
                        });
                    }
                });
                mConnectButton.setEnabled(false);
                /**
                 * Connection containing SIP details
                 */
                Connection connection = new Connection();
                connection.setSipLogin(mSipLoginView.getText().toString());
                connection.setSipPassword(mSipPasswordView.getText().toString());
                connection.setSipDomain(mSipDomainView.getText().toString());
                connection.setSipOutboundProxy(mSipDomainView.getText().toString());
                connection.setSipPort(Integer.parseInt(mSipPortView.getText().toString()));
                connection.setSipRegisterRequired(mSipRegisterRequiredView.isChecked());
                session.connect(connection);
                SharedPreferences sharedPref = PhoneMinVideoActivity.this.getPreferences(Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putString("wcs_url", mWcsUrlView.getText().toString());
                editor.putString("sip_login", mSipLoginView.getText().toString());
                editor.putString("sip_password", mSipPasswordView.getText().toString());
                editor.putString("sip_domain", mSipDomainView.getText().toString());
                editor.putString("sip_port", mSipPortView.getText().toString());
                editor.putBoolean("sip_register_required", mSipRegisterRequiredView.isChecked());
                editor.apply();
            } else {
                mConnectButton.setEnabled(false);
                session.disconnect();
            }
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    });
    mCalleeView = (EditText) findViewById(R.id.callee);
    mCalleeView.setText(sharedPref.getString("callee", getString(R.string.default_callee_name)));
    mCallStatus = (TextView) findViewById(R.id.call_status);
    mCallButton = (Button) findViewById(R.id.call_button);
    /**
     * Call button pressed
     */
    mCallButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mCallButton.getTag() == null || Integer.valueOf(R.string.action_call).equals(mCallButton.getTag())) {
                if ("".equals(mCalleeView.getText().toString())) {
                    return;
                }
                ActivityCompat.requestPermissions(PhoneMinVideoActivity.this, new String[] { Manifest.permission.RECORD_AUDIO, Manifest.permission.CAMERA }, CALL_REQUEST_CODE);
                SharedPreferences sharedPref = PhoneMinVideoActivity.this.getPreferences(Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putString("callee", mCalleeView.getText().toString());
                editor.apply();
            } else {
                mCallButton.setEnabled(false);
                call.hangup();
                call = null;
            }
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    });
    mHoldButton = (Button) findViewById(R.id.hold_button);
    /**
     * Hold or Unhold button pressed
     * Hold the call if the call is ESTABLISHED.
     * Unhold the call if the call is on hold.
     */
    mHoldButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mHoldButton.getTag() == null || Integer.valueOf(R.string.action_hold).equals(mHoldButton.getTag())) {
                call.hold();
                mHoldButton.setText(R.string.action_unhold);
                mHoldButton.setTag(R.string.action_unhold);
            } else {
                call.unhold();
                mHoldButton.setText(R.string.action_hold);
                mHoldButton.setTag(R.string.action_hold);
            }
        }
    });
    mMuteAudio = (Switch) findViewById(R.id.mute_audio);
    /**
     * Mute or Unmute audio for the SIP call
     * Mute if it is not muted.
     * Unmute if it is muted.
     */
    mMuteAudio.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (call != null) {
                if (isChecked) {
                    call.muteAudio();
                } else {
                    call.unmuteAudio();
                }
            }
        }
    });
    mMuteVideo = (Switch) findViewById(R.id.mute_video);
    /**
     * Mute or Unmute video for the SIP call
     * Mute if it is not muted.
     * Unmute if it is muted.
     */
    mMuteVideo.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (call != null) {
                if (isChecked) {
                    call.muteVideo();
                } else {
                    call.unmuteVideo();
                }
            }
        }
    });
    /**
     * Set local and remote renderer objects
     */
    localRender = (SurfaceViewRenderer) findViewById(R.id.local_video_view);
    remoteRender = (SurfaceViewRenderer) findViewById(R.id.remote_video_view);
    PercentFrameLayout localRenderLayout = (PercentFrameLayout) findViewById(R.id.local_video_layout);
    PercentFrameLayout remoteRenderLayout = (PercentFrameLayout) findViewById(R.id.remote_video_layout);
    localRender.setZOrderMediaOverlay(true);
    remoteRenderLayout.setPosition(0, 0, 100, 100);
    remoteRender.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
    remoteRender.setMirror(false);
    remoteRender.requestLayout();
    localRenderLayout.setPosition(0, 0, 100, 100);
    localRender.setScalingType(RendererCommon.ScalingType.SCALE_ASPECT_FIT);
    localRender.setMirror(true);
    localRender.requestLayout();
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) Call(com.flashphoner.fpwcsapi.session.Call) SharedPreferences(android.content.SharedPreferences) DialogInterface(android.content.DialogInterface) PercentFrameLayout(com.flashphoner.fpwcsapi.layout.PercentFrameLayout) CallStatusEvent(com.flashphoner.fpwcsapi.session.CallStatusEvent) SessionOptions(com.flashphoner.fpwcsapi.session.SessionOptions) Connection(com.flashphoner.fpwcsapi.bean.Connection) Data(com.flashphoner.fpwcsapi.bean.Data) InputMethodManager(android.view.inputmethod.InputMethodManager) View(android.view.View) TextView(android.widget.TextView) SessionEvent(com.flashphoner.fpwcsapi.session.SessionEvent) IncomingCallEvent(com.flashphoner.fpwcsapi.session.IncomingCallEvent) OnClickListener(android.view.View.OnClickListener) CompoundButton(android.widget.CompoundButton)

Example 2 with CallStatusEvent

use of com.flashphoner.fpwcsapi.session.CallStatusEvent in project wcs-android-sdk-samples by flashphoner.

the class PhoneMinActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_streaming_min);
    /**
     * Initialization of the API.
     */
    Flashphoner.init(this);
    /**
     * UI controls
     */
    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    mWcsUrlView = (EditText) findViewById(R.id.wcs_url);
    mWcsUrlView.setText(sharedPref.getString("wcs_url", getString(R.string.wcs_url)));
    mSipLoginView = (EditText) findViewById(R.id.sip_login);
    mSipLoginView.setText(sharedPref.getString("sip_login", getString(R.string.sip_login)));
    mSipPasswordView = (EditText) findViewById(R.id.sip_password);
    mSipPasswordView.setText(sharedPref.getString("sip_password", getString(R.string.sip_password)));
    mSipDomainView = (EditText) findViewById(R.id.sip_domain);
    mSipDomainView.setText(sharedPref.getString("sip_domain", getString(R.string.sip_domain)));
    mSipPortView = (EditText) findViewById(R.id.sip_port);
    mSipPortView.setText(sharedPref.getString("sip_port", getString(R.string.sip_port)));
    mSipRegisterRequiredView = (CheckBox) findViewById(R.id.register_required);
    mSipRegisterRequiredView.setChecked(sharedPref.getBoolean("sip_register_required", true));
    callStatusEvent = new CallStatusEvent() {

        /**
         * WCS received SIP 100 TRYING
         * @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.getStatus());
                }
            });
        }

        /**
         * WCS received SIP 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.getStatus());
                }
            });
        }

        /**
         * Call is failed
         * @param call
         */
        @Override
        public void onFailed(Call call) {
        }

        /**
         * WCS received SIP 180 RINGING from SIP
         * @param call
         */
        @Override
        public void onRing(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.getStatus());
                }
            });
        }

        /**
         * Call is set on hold
         * @param call
         */
        @Override
        public void onHold(final Call call) {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    mCallStatus.setText(call.getStatus());
                }
            });
        }

        /**
         * Call established
         * @param call
         */
        @Override
        public void onEstablished(final Call call) {
            runOnUiThread(new Runnable() {

                @Override
                public void run() {
                    mCallStatus.setText(call.getStatus());
                    mHoldButton.setEnabled(true);
                    mDTMFButton.setEnabled(true);
                }
            });
        }

        /**
         * Call is terminated
         * @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.getStatus());
                    mHoldButton.setText(R.string.action_hold);
                    mHoldButton.setTag(R.string.action_hold);
                    mHoldButton.setEnabled(false);
                    mDTMFButton.setEnabled(false);
                    if (incomingCallAlert != null) {
                        incomingCallAlert.hide();
                        incomingCallAlert = null;
                    }
                }
            });
        }
    };
    mConnectStatus = (TextView) findViewById(R.id.connect_status);
    mConnectButton = (Button) findViewById(R.id.connect_button);
    /**
     * Connect button pressed
     */
    mConnectButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mConnectButton.getTag() == null || Integer.valueOf(R.string.action_connect).equals(mConnectButton.getTag())) {
                SessionOptions sessionOptions = new SessionOptions(mWcsUrlView.getText().toString());
                session = Flashphoner.createSession(sessionOptions);
                session.on(new SessionEvent() {

                    @Override
                    public void onAppData(Data data) {
                    }

                    /**
                     * Connection established
                     * @param connection Current connection state
                     */
                    @Override
                    public void onConnected(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mConnectButton.setText(R.string.action_disconnect);
                                mConnectButton.setTag(R.string.action_disconnect);
                                mConnectButton.setEnabled(true);
                                if (!mSipRegisterRequiredView.isChecked()) {
                                    mConnectStatus.setText(connection.getStatus());
                                    mCallButton.setEnabled(true);
                                } else {
                                    mConnectStatus.setText(connection.getStatus() + ". Registering...");
                                }
                            }
                        });
                    }

                    /**
                     * Phone registered
                     * @param connection Current connection state
                     */
                    @Override
                    public void onRegistered(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mConnectStatus.setText(connection.getStatus());
                                mCallButton.setEnabled(true);
                            }
                        });
                    }

                    /**
                     * Phone disconnected
                     * @param connection Current connection state
                     */
                    @Override
                    public void onDisconnection(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mConnectButton.setText(R.string.action_connect);
                                mConnectButton.setTag(R.string.action_connect);
                                mConnectButton.setEnabled(true);
                                mConnectStatus.setText(connection.getStatus());
                                mCallButton.setText(R.string.action_call);
                                mCallButton.setTag(R.string.action_call);
                                mCallButton.setEnabled(false);
                                mCallStatus.setText("");
                                mHoldButton.setText(R.string.action_hold);
                                mHoldButton.setTag(R.string.action_hold);
                                mHoldButton.setEnabled(false);
                                mDTMFButton.setEnabled(false);
                            }
                        });
                    }
                });
                /**
                 * Add handler for incoming call
                 */
                session.on(new IncomingCallEvent() {

                    @Override
                    public void onCall(final Call call) {
                        call.on(callStatusEvent);
                        /**
                         * Display UI alert for the new incoming call
                         */
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                AlertDialog.Builder builder = new AlertDialog.Builder(PhoneMinActivity.this);
                                builder.setTitle("Incoming call");
                                builder.setMessage("Incoming call from '" + call.getCaller() + "'");
                                builder.setPositiveButton("Answer", new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {
                                        PhoneMinActivity.this.call = call;
                                        ActivityCompat.requestPermissions(PhoneMinActivity.this, new String[] { Manifest.permission.RECORD_AUDIO }, INCOMING_CALL_REQUEST_CODE);
                                    }
                                });
                                builder.setNegativeButton("Hangup", new DialogInterface.OnClickListener() {

                                    @Override
                                    public void onClick(DialogInterface dialogInterface, int i) {
                                        call.hangup();
                                        incomingCallAlert = null;
                                    }
                                });
                                incomingCallAlert = builder.show();
                            }
                        });
                    }
                });
                mConnectButton.setEnabled(false);
                /**
                 * Connection containing SIP details
                 */
                Connection connection = new Connection();
                connection.setSipLogin(mSipLoginView.getText().toString());
                connection.setSipPassword(mSipPasswordView.getText().toString());
                connection.setSipDomain(mSipDomainView.getText().toString());
                connection.setSipOutboundProxy(mSipDomainView.getText().toString());
                connection.setSipPort(Integer.parseInt(mSipPortView.getText().toString()));
                connection.setSipRegisterRequired(mSipRegisterRequiredView.isChecked());
                session.connect(connection);
                SharedPreferences sharedPref = PhoneMinActivity.this.getPreferences(Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putString("wcs_url", mWcsUrlView.getText().toString());
                editor.putString("sip_login", mSipLoginView.getText().toString());
                editor.putString("sip_password", mSipPasswordView.getText().toString());
                editor.putString("sip_domain", mSipDomainView.getText().toString());
                editor.putString("sip_port", mSipPortView.getText().toString());
                editor.putBoolean("sip_register_required", mSipRegisterRequiredView.isChecked());
                editor.apply();
            } else {
                mConnectButton.setEnabled(false);
                session.disconnect();
            }
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    });
    mCalleeView = (EditText) findViewById(R.id.callee);
    mCalleeView.setText(sharedPref.getString("callee", getString(R.string.default_callee_name)));
    mInviteParametersView = (EditText) findViewById(R.id.invite_parameters);
    googEchoCancellation = (CheckBox) findViewById(R.id.googEchoCancellationCB);
    googAutoGainControl = (CheckBox) findViewById(R.id.googAutoGainControlCB);
    googNoiseSupression = (CheckBox) findViewById(R.id.googNoiseSupressionCB);
    googHighpassFilter = (CheckBox) findViewById(R.id.googHighpassFilterCB);
    googEchoCancellation2 = (CheckBox) findViewById(R.id.googEchoCancellation2CB);
    googAutoGainControl2 = (CheckBox) findViewById(R.id.googAutoGainControl2CB);
    googNoiseSuppression2 = (CheckBox) findViewById(R.id.googNoiseSuppression2CB);
    mProximitySensor = (CheckBox) findViewById(R.id.proximitySensor);
    mProximitySensor.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            Flashphoner.getAudioManager().setUseProximitySensor(isChecked);
        }
    });
    mSpeakerPhone = (CheckBox) findViewById(R.id.speakerPhone);
    mSpeakerPhone.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            Flashphoner.getAudioManager().setUseSpeakerPhone(isChecked);
        }
    });
    mCallStatus = (TextView) findViewById(R.id.call_status);
    mCallButton = (Button) findViewById(R.id.call_button);
    /**
     * Call button pressed
     */
    mCallButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mCallButton.getTag() == null || Integer.valueOf(R.string.action_call).equals(mCallButton.getTag())) {
                if ("".equals(mCalleeView.getText().toString())) {
                    return;
                }
                ActivityCompat.requestPermissions(PhoneMinActivity.this, new String[] { Manifest.permission.RECORD_AUDIO }, CALL_REQUEST_CODE);
                SharedPreferences sharedPref = PhoneMinActivity.this.getPreferences(Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putString("callee", mCalleeView.getText().toString());
                editor.apply();
            } else {
                mCallButton.setEnabled(false);
                call.hangup();
                call = null;
            }
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    });
    mHoldButton = (Button) findViewById(R.id.hold_button);
    /**
     * Hold or Unhold button pressed
     * Hold the call if the call is ESTABLISHED.
     * Unhold the call if the call is on hold.
     */
    mHoldButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mHoldButton.getTag() == null || Integer.valueOf(R.string.action_hold).equals(mHoldButton.getTag())) {
                call.hold();
                mHoldButton.setText(R.string.action_unhold);
                mHoldButton.setTag(R.string.action_unhold);
            } else {
                call.unhold();
                mHoldButton.setText(R.string.action_hold);
                mHoldButton.setTag(R.string.action_hold);
            }
        }
    });
    mDTMF = (EditText) findViewById(R.id.dtmf);
    mDTMFButton = (Button) findViewById(R.id.dtmf_button);
    mDTMFButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (call != null) {
                call.sendDTMF(mDTMF.getText().toString(), Call.DTMFType.RFC2833);
            }
        }
    });
}
Also used : AlertDialog(android.support.v7.app.AlertDialog) Call(com.flashphoner.fpwcsapi.session.Call) SharedPreferences(android.content.SharedPreferences) DialogInterface(android.content.DialogInterface) CallStatusEvent(com.flashphoner.fpwcsapi.session.CallStatusEvent) SessionOptions(com.flashphoner.fpwcsapi.session.SessionOptions) Connection(com.flashphoner.fpwcsapi.bean.Connection) Data(com.flashphoner.fpwcsapi.bean.Data) InputMethodManager(android.view.inputmethod.InputMethodManager) View(android.view.View) TextView(android.widget.TextView) SessionEvent(com.flashphoner.fpwcsapi.session.SessionEvent) IncomingCallEvent(com.flashphoner.fpwcsapi.session.IncomingCallEvent) OnClickListener(android.view.View.OnClickListener) CompoundButton(android.widget.CompoundButton)

Example 3 with CallStatusEvent

use of com.flashphoner.fpwcsapi.session.CallStatusEvent in project wcs-android-sdk-samples by flashphoner.

the class ClickToCallActivity method onCreate.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_click_to_call);
    /**
     * Initialization of the API.
     */
    Flashphoner.init(this);
    SharedPreferences sharedPref = this.getPreferences(Context.MODE_PRIVATE);
    mWcsUrlView = (EditText) findViewById(R.id.wcs_url);
    mWcsUrlView.setText(sharedPref.getString("wcs_url", getString(R.string.wcs_url)));
    mCalleeView = (EditText) findViewById(R.id.callee);
    mCalleeView.setText(sharedPref.getString("callee", getString(R.string.callee)));
    mCallStatus = (TextView) findViewById(R.id.status);
    mCallButton = (Button) findViewById(R.id.start_button);
    /**
     * Call on click
     */
    mCallButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View view) {
            if (mCallButton.getTag() == null || Integer.valueOf(R.string.action_call).equals(mCallButton.getTag())) {
                SessionOptions sessionOptions = new SessionOptions(mWcsUrlView.getText().toString());
                session = Flashphoner.createSession(sessionOptions);
                session.on(new SessionEvent() {

                    @Override
                    public void onAppData(Data data) {
                    }

                    /**
                     * Callback functions for connection status events are added to make appropriate changes in controls of the interface when connection is established and closed.
                     */
                    @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();
                            }
                        });
                    }

                    /**
                     * Registered on SIP. WCS received 200 OK on REGISTER request.
                     * @param connection Current connection state
                     */
                    @Override
                    public void onRegistered(Connection connection) {
                    }

                    /**
                     * Disconnected
                     * @param connection Current connection state
                     */
                    @Override
                    public void onDisconnection(final Connection connection) {
                        runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                mCallButton.setText(R.string.action_call);
                                mCallButton.setTag(R.string.action_call);
                                mCallButton.setEnabled(true);
                                mCallStatus.setText("Connection: " + connection.getStatus());
                            }
                        });
                    }
                });
                mCallButton.setEnabled(false);
                Connection connection = new Connection();
                connection.setAppKey("clickToCallApp");
                /**
                 * Connect to WCS server
                 */
                session.connect(connection);
                SharedPreferences sharedPref = ClickToCallActivity.this.getPreferences(Context.MODE_PRIVATE);
                SharedPreferences.Editor editor = sharedPref.edit();
                editor.putString("wcs_url", mWcsUrlView.getText().toString());
                editor.apply();
            } else {
                mCallButton.setEnabled(false);
                session.disconnect();
            }
            View currentFocus = getCurrentFocus();
            if (currentFocus != null) {
                InputMethodManager inputManager = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
                inputManager.hideSoftInputFromWindow(currentFocus.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
            }
        }
    });
}
Also used : Call(com.flashphoner.fpwcsapi.session.Call) SharedPreferences(android.content.SharedPreferences) CallStatusEvent(com.flashphoner.fpwcsapi.session.CallStatusEvent) SessionOptions(com.flashphoner.fpwcsapi.session.SessionOptions) Connection(com.flashphoner.fpwcsapi.bean.Connection) Data(com.flashphoner.fpwcsapi.bean.Data) InputMethodManager(android.view.inputmethod.InputMethodManager) CallOptions(com.flashphoner.fpwcsapi.session.CallOptions) TextView(android.widget.TextView) View(android.view.View) SessionEvent(com.flashphoner.fpwcsapi.session.SessionEvent) OnClickListener(android.view.View.OnClickListener)

Aggregations

SharedPreferences (android.content.SharedPreferences)3 View (android.view.View)3 OnClickListener (android.view.View.OnClickListener)3 InputMethodManager (android.view.inputmethod.InputMethodManager)3 TextView (android.widget.TextView)3 Connection (com.flashphoner.fpwcsapi.bean.Connection)3 Data (com.flashphoner.fpwcsapi.bean.Data)3 Call (com.flashphoner.fpwcsapi.session.Call)3 CallStatusEvent (com.flashphoner.fpwcsapi.session.CallStatusEvent)3 SessionEvent (com.flashphoner.fpwcsapi.session.SessionEvent)3 SessionOptions (com.flashphoner.fpwcsapi.session.SessionOptions)3 DialogInterface (android.content.DialogInterface)2 AlertDialog (android.support.v7.app.AlertDialog)2 CompoundButton (android.widget.CompoundButton)2 IncomingCallEvent (com.flashphoner.fpwcsapi.session.IncomingCallEvent)2 PercentFrameLayout (com.flashphoner.fpwcsapi.layout.PercentFrameLayout)1 CallOptions (com.flashphoner.fpwcsapi.session.CallOptions)1