首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PROXIMITY_SCREEN_OFF_WAKE_LOCK不与三星合作

PROXIMITY_SCREEN_OFF_WAKE_LOCK不与三星合作
EN

Stack Overflow用户
提问于 2019-04-03 14:50:57
回答 1查看 778关注 0票数 0

我正在使用接近感应器,而安卓中的webRtc调用则使用设备感应器来打开/关闭屏幕。它在大多数设备上都能完美工作,但在三星上就不行了。当传感器关闭屏幕时,将调用活动的onStop()。下面是我使用的代码:

代码语言:javascript
复制
@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();
                }
            }
        }
    }
EN

回答 1

Stack Overflow用户

发布于 2019-11-20 17:30:29

尽量不要直接使用SensorManager。这对我使用三星S10e很有帮助。

代码语言:javascript
复制
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
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55488799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档