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:
parent
2fe1cf4185
commit
e684416bea
1 changed files with 12 additions and 16 deletions
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue