[英]PROXIMITY_SCREEN_OFF_WAKE_LOCK not working with Samsung
我正在使用接近传感器,而 webRtc 在 android 中调用以使用设备传感器打开/关闭屏幕。 它在大多数设备中都能完美运行,但在三星中则不然。 当 Sensor 关闭屏幕时,将调用活动的 onStop()。 以下是我正在使用的代码:
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
if (sensorEvent.sensor.getType() == Sensor.TYPE_PROXIMITY) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (mWakeLock != null) {
mWakeLock.release(1);
mWakeLock = null;
}
if (sensorEvent.values[0] >= -SENSOR_SENSITIVITY && sensorEvent.values[0] <= SENSOR_SENSITIVITY) {
mWakeLock = mPowerManager.newWakeLock(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK, "tag");
mWakeLock.acquire();
} else {
//far
mWakeLock = mPowerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "tag");
mWakeLock.acquire();
}
}
}
}
尽量不要直接使用 SensorManager。 它帮助我使用了三星 S10e。
class ProximityMgr(context: Context) {
private val powerManager: PowerManager = context.getSystemService()!!
private val wakeLock: PowerManager.WakeLock
init {
wakeLock = powerManager.newWakeLock(
PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK,
"lock:proximity_screen_off")
}
fun acquire() {
if (powerManager.isWakeLockLevelSupported(PowerManager.PROXIMITY_SCREEN_OFF_WAKE_LOCK)) {
if (wakeLock.isHeld) {
wakeLock.release()
}
wakeLock.acquire(WAKE_LOCK_TIMEOUT_MS)
} else {
Log.w(TAG, "not supported")
}
}
fun release() {
if (wakeLock.isHeld)
wakeLock.release()
}
companion object {
private const val TAG = "ProximitySensor"
private const val WAKE_LOCK_TIMEOUT_MS: Long = 2 * 3600 * 1000
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.