From e974335a0696c9aa915dc581cd53d81e681640db Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Fri, 24 Apr 2020 15:06:04 +0200 Subject: [PATCH] Fixed crash if proximity sensor isn't available --- .../call/ProximitySensorActivity.kt | 25 +++++++++++++------ 1 file changed, 18 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/org/linphone/activities/call/ProximitySensorActivity.kt b/app/src/main/java/org/linphone/activities/call/ProximitySensorActivity.kt index c20a516cb..f94354169 100644 --- a/app/src/main/java/org/linphone/activities/call/ProximitySensorActivity.kt +++ b/app/src/main/java/org/linphone/activities/call/ProximitySensorActivity.kt @@ -34,6 +34,7 @@ abstract class ProximitySensorActivity : GenericActivity() { private lateinit var sensorManager: SensorManager private lateinit var proximitySensor: Sensor private lateinit var proximityWakeLock: PowerManager.WakeLock + private var proximitySensorFound = false private val proximityListener: SensorEventListener = object : SensorEventListener { override fun onAccuracyChanged(sensor: Sensor?, accuracy: Int) { } @@ -57,13 +58,18 @@ abstract class ProximitySensorActivity : GenericActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager - proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) - proximityWakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager) - .newWakeLock( - PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, - "$packageName;proximity_sensor" - ) + try { + sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager + proximitySensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) + proximityWakeLock = (getSystemService(Context.POWER_SERVICE) as PowerManager) + .newWakeLock( + PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, + "$packageName;proximity_sensor" + ) + proximitySensorFound = true + } catch (ise: IllegalStateException) { + Log.e("[Call Activity] Failed to get proximity sensor: $ise") + } } override fun onResume() { @@ -85,6 +91,11 @@ abstract class ProximitySensorActivity : GenericActivity() { } protected fun enableProximitySensor(enable: Boolean) { + if (!proximitySensorFound) { + Log.w("[Call Activity] Couldn't find proximity sensor in this device, skipping") + return + } + if (enable) { if (!proximitySensorEnabled) { Log.i("[Call Activity] Enabling proximity sensor listener")