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();
}
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);
}
}
});
}
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);
}
}
});
}
Aggregations