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,29 +1055,24 @@ 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);
|
||||
View view = ((ViewGroup) window.getDecorView().findViewById(android.R.id.content)).getChildAt(0);
|
||||
if (nearby) {
|
||||
lAttrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
||||
view.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
lAttrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
view.setVisibility(View.VISIBLE);
|
||||
}
|
||||
window.setAttributes(lAttrs);
|
||||
}
|
||||
|
||||
private static void proximityNearbyChanged() {
|
||||
boolean nearby = sLastProximitySensorValueNearby;
|
||||
for (Activity activity : sProximityDependentActivities) {
|
||||
final Window window = activity.getWindow();
|
||||
WindowManager.LayoutParams lAttrs = activity.getWindow().getAttributes();
|
||||
View view = ((ViewGroup) window.getDecorView().findViewById(android.R.id.content)).getChildAt(0);
|
||||
if (nearby) {
|
||||
lAttrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN;
|
||||
view.setVisibility(View.INVISIBLE);
|
||||
} else {
|
||||
lAttrs.flags &= (~WindowManager.LayoutParams.FLAG_FULLSCREEN);
|
||||
view.setVisibility(View.VISIBLE);
|
||||
}
|
||||
window.setAttributes(lAttrs);
|
||||
simulateProximitySensorNearby(activity, nearby);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1095,7 +1090,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
|
|||
Log.i("Proximity sensor detected, registering");
|
||||
}
|
||||
} else if (sLastProximitySensorValueNearby){
|
||||
hideActivityViewAsIfProximitySensorNearby(activity);
|
||||
simulateProximitySensorNearby(activity, true);
|
||||
}
|
||||
|
||||
sProximityDependentActivities.add(activity);
|
||||
|
@ -1103,6 +1098,7 @@ public final class LinphoneManager implements LinphoneCoreListener {
|
|||
|
||||
public static synchronized void stopProximitySensorForActivity(Activity activity) {
|
||||
sProximityDependentActivities.remove(activity);
|
||||
simulateProximitySensorNearby(activity, false);
|
||||
if (sProximityDependentActivities.isEmpty()) {
|
||||
SensorManager sm = (SensorManager) activity.getSystemService(Context.SENSOR_SERVICE);
|
||||
sm.unregisterListener(sProximitySensorListener);
|
||||
|
|
Loading…
Reference in a new issue