fix bug around proximity sensing in call activity. It could remain activated forever in some circumstances.

This commit is contained in:
Simon Morlat 2016-08-06 10:12:51 +02:00
parent c4f52b2f96
commit 9d8481386b

View file

@ -119,6 +119,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
private boolean isConferenceRunning = false; private boolean isConferenceRunning = false;
private LinphoneCoreListenerBase mListener; private LinphoneCoreListenerBase mListener;
private DrawerLayout sideMenu; private DrawerLayout sideMenu;
private boolean mProximitySensingEnabled;
public static CallActivity instance() { public static CallActivity instance() {
return instance; return instance;
@ -800,8 +801,22 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
} }
} }
private void enableProximitySensing(boolean enable){
if (enable){
if (!mProximitySensingEnabled){
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL);
mProximitySensingEnabled = true;
}
}else{
if (mProximitySensingEnabled){
mSensorManager.unregisterListener(this);
mProximitySensingEnabled = false;
}
}
}
private void showAudioView() { private void showAudioView() {
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); enableProximitySensing(true);
replaceFragmentVideoByAudio(); replaceFragmentVideoByAudio();
displayAudioCall(); displayAudioCall();
showStatusBar(); showStatusBar();
@ -816,7 +831,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
} }
refreshInCallActions(); refreshInCallActions();
mSensorManager.unregisterListener(this); enableProximitySensing(false);
replaceFragmentAudioByVideo(); replaceFragmentAudioByVideo();
hideStatusBar(); hideStatusBar();
} }
@ -1173,7 +1188,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
handleViewIntent(); handleViewIntent();
if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) { if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); enableProximitySensing(true);
removeCallbacks(); removeCallbacks();
} }
} }
@ -1223,10 +1238,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mControlsHandler.removeCallbacks(mControls); mControlsHandler.removeCallbacks(mControls);
} }
mControls = null; mControls = null;
enableProximitySensing(false);
if (!isVideoEnabled(LinphoneManager.getLc().getCurrentCall())) {
mSensorManager.unregisterListener(this);
}
} }
@Override @Override
@ -1239,7 +1251,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
mControls = null; mControls = null;
mControlsHandler = null; mControlsHandler = null;
mSensorManager.unregisterListener(this); enableProximitySensing(false);
unbindDrawables(findViewById(R.id.topLayout)); unbindDrawables(findViewById(R.id.topLayout));
instance = null; instance = null;
@ -1510,7 +1522,7 @@ public class CallActivity extends Activity implements OnClickListener, SensorEve
private void displayConference(boolean isInConf){ private void displayConference(boolean isInConf){
if(isInConf) { if(isInConf) {
mControlsLayout.setVisibility(View.VISIBLE); mControlsLayout.setVisibility(View.VISIBLE);
mSensorManager.registerListener(this, mProximity, SensorManager.SENSOR_DELAY_NORMAL); enableProximitySensing(true);
mActiveCallHeader.setVisibility(View.GONE); mActiveCallHeader.setVisibility(View.GONE);
mNoCurrentCall.setVisibility(View.GONE); mNoCurrentCall.setVisibility(View.GONE);
conferenceList.removeAllViews(); conferenceList.removeAllViews();