kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix NPE in proximity sensor management.
If a device either does not have a proximity sensor or has a non-functioning sensor, we can hit an NPE as soon as we hit MainActivity. This fix ensures proper handling if a sensor is unavailable.fork-5.53.8
rodzic
c9597ef8dc
commit
de2c7d38bf
|
@ -36,7 +36,7 @@ class VoiceNoteProximityWakeLockManager(
|
||||||
}
|
}
|
||||||
|
|
||||||
private val sensorManager: SensorManager = ServiceUtil.getSensorManager(activity)
|
private val sensorManager: SensorManager = ServiceUtil.getSensorManager(activity)
|
||||||
private val proximitySensor: Sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)
|
private val proximitySensor: Sensor? = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)
|
||||||
|
|
||||||
private val mediaControllerCallback = MediaControllerCallback()
|
private val mediaControllerCallback = MediaControllerCallback()
|
||||||
private val hardwareSensorEventListener = HardwareSensorEventListener()
|
private val hardwareSensorEventListener = HardwareSensorEventListener()
|
||||||
|
@ -44,16 +44,22 @@ class VoiceNoteProximityWakeLockManager(
|
||||||
private var startTime: Long = -1
|
private var startTime: Long = -1
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
if (proximitySensor != null) {
|
||||||
activity.lifecycle.addObserver(this)
|
activity.lifecycle.addObserver(this)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onResume(owner: LifecycleOwner) {
|
override fun onResume(owner: LifecycleOwner) {
|
||||||
|
if (proximitySensor != null) {
|
||||||
mediaController.registerCallback(mediaControllerCallback)
|
mediaController.registerCallback(mediaControllerCallback)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
override fun onPause(owner: LifecycleOwner) {
|
override fun onPause(owner: LifecycleOwner) {
|
||||||
|
if (proximitySensor != null) {
|
||||||
unregisterCallbacksAndRelease()
|
unregisterCallbacksAndRelease()
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
fun unregisterCallbacksAndRelease() {
|
fun unregisterCallbacksAndRelease() {
|
||||||
mediaController.unregisterCallback(mediaControllerCallback)
|
mediaController.unregisterCallback(mediaControllerCallback)
|
||||||
|
@ -110,7 +116,7 @@ class VoiceNoteProximityWakeLockManager(
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
val newStreamType = if (event.values[0] < PROXIMITY_THRESHOLD && event.values[0] != proximitySensor.maximumRange) {
|
val newStreamType = if (event.values[0] < PROXIMITY_THRESHOLD && event.values[0] != proximitySensor?.maximumRange) {
|
||||||
AudioManager.STREAM_VOICE_CALL
|
AudioManager.STREAM_VOICE_CALL
|
||||||
} else {
|
} else {
|
||||||
AudioManager.STREAM_MUSIC
|
AudioManager.STREAM_MUSIC
|
||||||
|
|
Ładowanie…
Reference in New Issue