Fix proximity sensor on call terminated when nearby

Bug was:
Call callee1, callee1 accepts call.
Keep proximity sensor nearby.
During this interval, callee1 terminates call.
Activity was destroyed but screen kept beeing all black.
This commit is contained in:
Guillaume Beraudo 2011-10-27 11:36:36 +02:00
parent 2fe1cf4185
commit e684416bea

View file

@ -1055,18 +1055,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
}; };
private static void hideActivityViewAsIfProximitySensorNearby(Activity activity) { private static void simulateProximitySensorNearby(Activity activity, boolean nearby) {
final Window window = activity.getWindow();
View view = ((ViewGroup) window.getDecorView().findViewById(android.R.id.content)).getChildAt(0);
WindowManager.LayoutParams lAttrs = activity.getWindow().getAttributes();
lAttrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
view.setVisibility(View.INVISIBLE);
window.setAttributes(lAttrs);
}
private static void proximityNearbyChanged() {
boolean nearby = sLastProximitySensorValueNearby;
for (Activity activity : sProximityDependentActivities) {
final Window window = activity.getWindow(); final Window window = activity.getWindow();
WindowManager.LayoutParams lAttrs = activity.getWindow().getAttributes(); WindowManager.LayoutParams lAttrs = activity.getWindow().getAttributes();
View view = ((ViewGroup) window.getDecorView().findViewById(android.R.id.content)).getChildAt(0); View view = ((ViewGroup) window.getDecorView().findViewById(android.R.id.content)).getChildAt(0);
@ -1079,6 +1068,12 @@ public final class LinphoneManager implements LinphoneCoreListener {
} }
window.setAttributes(lAttrs); window.setAttributes(lAttrs);
} }
private static void proximityNearbyChanged() {
boolean nearby = sLastProximitySensorValueNearby;
for (Activity activity : sProximityDependentActivities) {
simulateProximitySensorNearby(activity, nearby);
}
} }
public static synchronized void startProximitySensorForActivity(Activity activity) { public static synchronized void startProximitySensorForActivity(Activity activity) {
@ -1095,7 +1090,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
Log.i("Proximity sensor detected, registering"); Log.i("Proximity sensor detected, registering");
} }
} else if (sLastProximitySensorValueNearby){ } else if (sLastProximitySensorValueNearby){
hideActivityViewAsIfProximitySensorNearby(activity); simulateProximitySensorNearby(activity, true);
} }
sProximityDependentActivities.add(activity); sProximityDependentActivities.add(activity);
@ -1103,6 +1098,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
public static synchronized void stopProximitySensorForActivity(Activity activity) { public static synchronized void stopProximitySensorForActivity(Activity activity) {
sProximityDependentActivities.remove(activity); sProximityDependentActivities.remove(activity);
simulateProximitySensorNearby(activity, false);
if (sProximityDependentActivities.isEmpty()) { if (sProximityDependentActivities.isEmpty()) {
SensorManager sm = (SensorManager) activity.getSystemService(Context.SENSOR_SERVICE); SensorManager sm = (SensorManager) activity.getSystemService(Context.SENSOR_SERVICE);
sm.unregisterListener(sProximitySensorListener); sm.unregisterListener(sProximitySensorListener);