Fix conference issues
This commit is contained in:
parent
b7c0f10427
commit
bf62766a4e
1 changed files with 76 additions and 78 deletions
|
@ -369,10 +369,8 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
|
|
||||||
/*if(isTablet()){
|
/*if(isTablet()){
|
||||||
speaker.setEnabled(false);
|
speaker.setEnabled(false);
|
||||||
}*/
|
}
|
||||||
|
speaker.setEnabled(false);*/
|
||||||
// speaker.setEnabled(false);
|
|
||||||
|
|
||||||
|
|
||||||
//Options
|
//Options
|
||||||
addCall = (ImageView) findViewById(R.id.add_call);
|
addCall = (ImageView) findViewById(R.id.add_call);
|
||||||
|
@ -456,39 +454,23 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refreshIncallUi(){
|
private void refreshIncallUi(){
|
||||||
List<LinphoneCall> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote));
|
int confsize = 0;
|
||||||
if (pausedCalls.size() == 1) {
|
|
||||||
displayCallPaused(true);
|
if(LinphoneManager.getLc().isInConference()) {
|
||||||
} else {
|
confsize = LinphoneManager.getLc().getConferenceSize() - (LinphoneManager.getLc().isInConference() ? 1 : 0);
|
||||||
displayCallPaused(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(LinphoneManager.getLc().getCurrentCall() != null){
|
//Enabled transfer button
|
||||||
if(isTransferAllowed)
|
if(isTransferAllowed)
|
||||||
enabledTransferButton(true);
|
enabledTransferButton(true);
|
||||||
if(!isVideoEnabled(LinphoneManager.getLc().getCurrentCall()))
|
|
||||||
callInfo.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(LinphoneManager.getLc().getCallsNb() > 1){
|
//Enable conference button
|
||||||
callsList.setVisibility(View.VISIBLE);
|
if(LinphoneManager.getLc().getCallsNb() > 1 && LinphoneManager.getLc().getCallsNb() > confsize) {
|
||||||
enabledConferenceButton(true);
|
enabledConferenceButton(true);
|
||||||
} else {
|
} else {
|
||||||
if(LinphoneManager.getLc().getCallsNb() == 1 && LinphoneManager.getLc().getCurrentCall() == null){
|
|
||||||
callsList.setVisibility(View.VISIBLE);
|
|
||||||
if(isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
|
|
||||||
avatar_layout.setVisibility(View.GONE);
|
|
||||||
} else {
|
|
||||||
avatar_layout.setVisibility(View.VISIBLE);
|
|
||||||
}
|
|
||||||
if(isTransferAllowed)
|
|
||||||
enabledTransferButton(false);
|
|
||||||
} else {
|
|
||||||
callsList.setVisibility(View.GONE);
|
|
||||||
}
|
|
||||||
enabledConferenceButton(false);
|
enabledConferenceButton(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
refreshInCallActions();
|
refreshInCallActions();
|
||||||
refreshCallList(getResources());
|
refreshCallList(getResources());
|
||||||
}
|
}
|
||||||
|
@ -761,7 +743,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
mSensorManager.unregisterListener(this);
|
mSensorManager.unregisterListener(this);
|
||||||
replaceFragmentAudioByVideo();
|
replaceFragmentAudioByVideo();
|
||||||
hideStatusBar();
|
hideStatusBar();
|
||||||
displayVideoCall(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayNoCurrentCall(boolean display){
|
private void displayNoCurrentCall(boolean display){
|
||||||
|
@ -786,9 +767,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
mControlsLayout.setVisibility(View.VISIBLE);
|
mControlsLayout.setVisibility(View.VISIBLE);
|
||||||
mActiveCallHeader.setVisibility(View.VISIBLE);
|
mActiveCallHeader.setVisibility(View.VISIBLE);
|
||||||
callInfo.setVisibility(View.VISIBLE);
|
callInfo.setVisibility(View.VISIBLE);
|
||||||
callsList.setVisibility(View.VISIBLE);
|
|
||||||
avatar_layout.setVisibility(View.VISIBLE);
|
avatar_layout.setVisibility(View.VISIBLE);
|
||||||
mNoCurrentCall.setVisibility(View.GONE);
|
|
||||||
switchCamera.setVisibility(View.GONE);
|
switchCamera.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -877,7 +856,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
mActiveCallHeader.setVisibility(View.VISIBLE);
|
mActiveCallHeader.setVisibility(View.VISIBLE);
|
||||||
callInfo.setVisibility(View.VISIBLE);
|
callInfo.setVisibility(View.VISIBLE);
|
||||||
avatar_layout.setVisibility(View.GONE);
|
avatar_layout.setVisibility(View.GONE);
|
||||||
mNoCurrentCall.setVisibility(View.GONE);
|
|
||||||
callsList.setVisibility(View.VISIBLE);
|
callsList.setVisibility(View.VISIBLE);
|
||||||
if (cameraNumber > 1) {
|
if (cameraNumber > 1) {
|
||||||
switchCamera.setVisibility(View.VISIBLE);
|
switchCamera.setVisibility(View.VISIBLE);
|
||||||
|
@ -887,7 +865,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
mControlsLayout.setVisibility(View.GONE);
|
mControlsLayout.setVisibility(View.GONE);
|
||||||
mActiveCallHeader.setVisibility(View.GONE);
|
mActiveCallHeader.setVisibility(View.GONE);
|
||||||
switchCamera.setVisibility(View.GONE);
|
switchCamera.setVisibility(View.GONE);
|
||||||
mNoCurrentCall.setVisibility(View.GONE);
|
|
||||||
callsList.setVisibility(View.GONE);
|
callsList.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1371,11 +1348,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
refreshIncallUi();
|
refreshIncallUi();
|
||||||
handleViewIntent();
|
handleViewIntent();
|
||||||
|
|
||||||
if (isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
|
if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
|
||||||
displayVideoCall(false);
|
|
||||||
} else if(LinphoneManager.getLc().isInConference()) {
|
|
||||||
displayConference();
|
|
||||||
} else {
|
|
||||||
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
|
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
|
||||||
removeCallbacks();
|
removeCallbacks();
|
||||||
}
|
}
|
||||||
|
@ -1537,12 +1510,9 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
isCallPaused = true;
|
isCallPaused = true;
|
||||||
isInConference = false;
|
isInConference = false;
|
||||||
} else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) {
|
} else if (call.getState() == State.OutgoingInit || call.getState() == State.OutgoingProgress || call.getState() == State.OutgoingRinging) {
|
||||||
//callState.setImageResource(R.drawable.call_state_ringing_default);
|
|
||||||
isCallPaused = false;
|
isCallPaused = false;
|
||||||
isInConference = false;
|
isInConference = false;
|
||||||
} else {
|
} else {
|
||||||
//callState.setImageResource(R.drawable.remove);
|
|
||||||
//callState.setImageResource(R.drawable.play);
|
|
||||||
isInConference = isConferenceRunning && call.isInConference();
|
isInConference = isConferenceRunning && call.isInConference();
|
||||||
isCallPaused = false;
|
isCallPaused = false;
|
||||||
}
|
}
|
||||||
|
@ -1573,15 +1543,36 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
|
|
||||||
public void refreshCallList(Resources resources) {
|
public void refreshCallList(Resources resources) {
|
||||||
isConferenceRunning = LinphoneManager.getLc().isInConference();
|
isConferenceRunning = LinphoneManager.getLc().isInConference();
|
||||||
if (isConferenceRunning) {
|
|
||||||
displayConference();
|
//MultiCalls
|
||||||
mNoCurrentCall.setVisibility(View.GONE);
|
if(LinphoneManager.getLc().getCallsNb() > 1){
|
||||||
|
callsList.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
|
||||||
|
//Active call
|
||||||
|
if(LinphoneManager.getLc().getCurrentCall() != null) {
|
||||||
|
displayNoCurrentCall(false);
|
||||||
|
if(isVideoEnabled(LinphoneManager.getLc().getCurrentCall()) && !isConferenceRunning) {
|
||||||
|
displayVideoCall(false);
|
||||||
|
} else {
|
||||||
|
displayAudioCall();
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
conferenceList.setVisibility(View.GONE);
|
showAudioView();
|
||||||
|
displayNoCurrentCall(true);
|
||||||
|
if(LinphoneManager.getLc().getCallsNb() == 1) {
|
||||||
|
callsList.setVisibility(View.VISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//Conference
|
||||||
|
if (isConferenceRunning) {
|
||||||
|
displayConference(true);
|
||||||
|
} else {
|
||||||
|
displayConference(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(callsList != null) {
|
if(callsList != null) {
|
||||||
callsList.setVisibility(View.VISIBLE);
|
|
||||||
callsList.removeAllViews();
|
callsList.removeAllViews();
|
||||||
int index = 0;
|
int index = 0;
|
||||||
|
|
||||||
|
@ -1592,11 +1583,11 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
|
|
||||||
boolean isConfPaused = false;
|
boolean isConfPaused = false;
|
||||||
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) {
|
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) {
|
||||||
if(call.isInConference() && !isConferenceRunning) {
|
if (call.isInConference() && !isConferenceRunning) {
|
||||||
isConfPaused = true;
|
isConfPaused = true;
|
||||||
index++;
|
index++;
|
||||||
} else {
|
} else {
|
||||||
if (call != LinphoneManager.getLc().getCurrentCall()) {
|
if (call != LinphoneManager.getLc().getCurrentCall() && !call.isInConference()) {
|
||||||
displayPausedCalls(resources, call, index);
|
displayPausedCalls(resources, call, index);
|
||||||
index++;
|
index++;
|
||||||
} else {
|
} else {
|
||||||
|
@ -1605,18 +1596,25 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isConfPaused && !isConferenceRunning){
|
if (!isConferenceRunning) {
|
||||||
displayPausedCalls(resources, null, index);
|
if (isConfPaused) {
|
||||||
|
callsList.setVisibility(View.VISIBLE);
|
||||||
|
displayPausedCalls(resources, null, index);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (LinphoneManager.getLc().getCurrentCall() == null && !isConferenceRunning) {
|
|
||||||
showAudioView();
|
|
||||||
mActiveCallHeader.setVisibility(View.GONE);
|
|
||||||
mNoCurrentCall.setVisibility(View.VISIBLE);
|
|
||||||
video.setEnabled(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Paused by remote
|
||||||
|
List<LinphoneCall> pausedCalls = LinphoneUtils.getCallsInState(LinphoneManager.getLc(), Arrays.asList(State.PausedByRemote));
|
||||||
|
if (pausedCalls.size() == 1) {
|
||||||
|
displayCallPaused(true);
|
||||||
|
} else {
|
||||||
|
displayCallPaused(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//Conference
|
//Conference
|
||||||
|
@ -1634,9 +1632,6 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
|
|
||||||
private void enterConference() {
|
private void enterConference() {
|
||||||
LinphoneManager.getLc().addAllToConference();
|
LinphoneManager.getLc().addAllToConference();
|
||||||
displayConferenceHeader();
|
|
||||||
mNoCurrentCall.setVisibility(View.GONE);
|
|
||||||
mActiveCallHeader.setVisibility(View.GONE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void pauseOrResumeConference() {
|
public void pauseOrResumeConference() {
|
||||||
|
@ -1653,7 +1648,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
|
|
||||||
private void displayConferenceParticipant(int index, final LinphoneCall call){
|
private void displayConferenceParticipant(int index, final LinphoneCall call){
|
||||||
LinearLayout confView = (LinearLayout) inflater.inflate(R.layout.conf_call_control_row, container, false);
|
LinearLayout confView = (LinearLayout) inflater.inflate(R.layout.conf_call_control_row, container, false);
|
||||||
conferenceList.setId(index+1);
|
conferenceList.setId(index + 1);
|
||||||
TextView contact = (TextView) confView.findViewById(R.id.contactNameOrNumber);
|
TextView contact = (TextView) confView.findViewById(R.id.contactNameOrNumber);
|
||||||
|
|
||||||
Contact lContact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(),call.getRemoteAddress());
|
Contact lContact = ContactsManager.getInstance().findContactWithAddress(getContentResolver(),call.getRemoteAddress());
|
||||||
|
@ -1685,26 +1680,29 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void displayConference(){
|
private void displayConference(boolean isInConf){
|
||||||
mControlsLayout.setVisibility(View.VISIBLE);
|
if(isInConf) {
|
||||||
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
|
mControlsLayout.setVisibility(View.VISIBLE);
|
||||||
mActiveCallHeader.setVisibility(View.GONE);
|
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
|
||||||
mNoCurrentCall.setVisibility(View.GONE);
|
mActiveCallHeader.setVisibility(View.GONE);
|
||||||
callsList.setVisibility(View.VISIBLE);
|
mNoCurrentCall.setVisibility(View.GONE);
|
||||||
conferenceList.removeAllViews();
|
conferenceList.removeAllViews();
|
||||||
|
|
||||||
//Conference Header
|
//Conference Header
|
||||||
displayConferenceHeader();
|
displayConferenceHeader();
|
||||||
|
|
||||||
//Conference participant
|
//Conference participant
|
||||||
int index = 1;
|
int index = 1;
|
||||||
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) {
|
for (LinphoneCall call : LinphoneManager.getLc().getCalls()) {
|
||||||
if(call.isInConference()) {
|
if (call.isInConference()) {
|
||||||
displayConferenceParticipant(index,call);
|
displayConferenceParticipant(index, call);
|
||||||
index++;
|
index++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
conferenceList.setVisibility(View.VISIBLE);
|
||||||
|
} else {
|
||||||
|
conferenceList.setVisibility(View.GONE);
|
||||||
}
|
}
|
||||||
conferenceList.setVisibility(View.VISIBLE);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Boolean isProximitySensorNearby(final SensorEvent event) {
|
public static Boolean isProximitySensorNearby(final SensorEvent event) {
|
||||||
|
|
Loading…
Reference in a new issue