首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在使用"PROXIMITY_SCREEN_OFF_WAKE_LOCK“唤醒锁之后,在不应该触发的时候触发Touch事件

在使用"PROXIMITY_SCREEN_OFF_WAKE_LOCK“唤醒锁之后,在不应该触发的时候触发Touch事件
EN

Stack Overflow用户
提问于 2014-10-28 03:05:21
回答 1查看 215关注 0票数 2

我遇到了一个非常奇怪的问题。(在设备上运行,摩托罗拉XT910安卓4.1.2,Xamarin.Android 4.16.0)

我有一个活动,有一个按钮,用户按下并按住它来录制一些音频。我处理onTouch事件并监听DOWN和UP事件(on DOWN我开始记录,on UP我停止它)。到目前一切尚好。现在,我还处理了onSensorChanged事件,以便在用户将设备举到耳朵上时关闭屏幕。我是通过使用这样的wakelock来实现的:

代码语言:javascript
复制
private void AcquireScreenWakeLock()
    {
        if (screenWakeLock == null) {
            PowerManager pm = (PowerManager)GetSystemService (Context.PowerService);
            field = pm.Class.GetField ("PROXIMITY_SCREEN_OFF_WAKE_LOCK").GetInt (null);
            screenWakeLock = pm.NewWakeLock ((WakeLockFlags)field, "ScreenWakeLock");
        }
        screenWakeLock.Acquire();
    }

private void ReleaseScreenWakeLock()
    {
        if (screenWakeLock == null)
            return;
        if (screenWakeLock.IsHeld)
            screenWakeLock.Release();
    }

当按下并按住按钮进行记录时,问题出现了,在DOWN事件之后,我在没有抬起手指的情况下收到了UP事件……当然,我还做了其他事情,但我设法将问题缩小到这段代码(如果我注释掉它,一切都像预期的那样工作)。

我知道我正在使用一个隐藏字段来制作wakeLock (实际上它似乎是在API21,docs here中发布的),但是我还没有找到更好的方法来做这件事,并且整个屏幕的关闭/打开过程都可以完美地工作。我在运行安卓4.1.2的摩托罗拉XT910上测试时遇到了这个问题,我在运行安卓4.4.4的Moto G上测试了它,一切都运行得很好(按住按钮时没有UP事件被触发)。

我真的不知所措,这个out...how能导致这种行为吗?你有没有其他方法可以有效地关闭/打开屏幕?我搜索了其他帖子,但似乎没有一个对我有帮助。使用部分wakeLock也不起作用(我已经用这个code检查过了)。提前感谢!

附言:我已经检查过了,触摸事件只注册了一次。

EN

回答 1

Stack Overflow用户

发布于 2015-06-08 17:19:52

PROXIMITY_SCREEN_OFF_WAKE_LOCK根据自身的接近状态关闭/打开屏幕。也不需要处理onSensorChanged事件。这可能会导致问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26594963

复制
相关文章

相似问题

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