首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android Wear -唤醒锁不能唤醒手表

Android Wear -唤醒锁不能唤醒手表
EN

Stack Overflow用户
提问于 2016-08-03 03:09:07
回答 2查看 755关注 0票数 0

我正在尝试让手表在不定期的特定时刻振动。

当手表屏幕打开时,我可以这样做,但当手表屏幕变暗时,它就不工作了。

我在这里和WakeLocks上的安卓开发者页面上读到了一些问题,我想这就是我需要的……然而,它对我不起作用。下面是我的代码,我做错了什么吗?

首先,在我的清单文件中,我有:

代码语言:javascript
复制
    <uses-permission android:name="android.permission.WAKE_LOCK" />

下面是我的部分代码:

代码语言:javascript
复制
    PowerManager.WakeLock wakeLock;

        @Override
        public void onCreate(SurfaceHolder holder) {
            super.onCreate(holder);

            PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
            wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, TAG);
        }

        private void vibrate(int duration) {
            wakeLock.acquire();
            Vibrator v = (Vibrator) getBaseContext().getSystemService(Context.VIBRATOR_SERVICE);
            v.vibrate(duration);
            wakeLock.release();
        }

屏幕打不开手表也不会震动。我做错了什么?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2016-08-04 01:16:03

如果你的手表在收到通知时没有震动,或者你根本看不到通知,那么在每一步之后检查你的手表,看看通知是否开始工作。尝试执行以下troubleshooting步骤:

  • 确保您的手表未处于影院模式。
  • 确保您的手机收到通知。
  • 确保您尚未关闭(阻止)特定应用的通知。
  • 确保您手机上的应用通知和系统通知已打开。
  • 检查您的手机是否已连接到Internet.
  • Make,确保您的手表与您的手机或平板电脑配对。
  • 尝试重新设置您的手机和手表。谷歌<

>H116检查这些应用是否为最新:谷歌Play服务、谷歌、安卓穿戴。<代码>H217<代码>F218

尝试使用标志FLAG_KEEP_SCREEN_ON唤醒设备。

代码语言:javascript
复制
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}

这种方法的优点是,与唤醒锁不同,它不需要特殊权限,并且平台可以正确地管理用户在应用程序之间的移动,而无需担心应用程序释放未使用的资源。

另一种实现方法是在应用程序的布局XML文件中使用android:keepScreenOn属性:

代码语言:javascript
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
...
</RelativeLayout>

使用FLAG_KEEP_SCREEN_ON.与使用android:keepScreenOn="true"等效您可以使用任何最适合您的应用程序的方法。

票数 0
EN

Stack Overflow用户

发布于 2016-08-10 11:06:21

只要你想让手表保持交互状态(振动才能继续--你必须处于交互状态才能振动),你就需要保持获得唤醒锁的时间,但你似乎在获得唤醒锁后立即释放了唤醒锁。

获取唤醒锁可能有风险,因此,如果您正在从手表表面服务运行该代码(从代码片段中未清除),请在获取唤醒锁时启动一个透明的活动,并在该活动终止时释放它--这样,您就可以使用活动生命周期作为停止振动和释放唤醒锁的方法。这是我在ustwo Timer Watch Faces中实现的(当计时器到期时,手表表面开始在交互模式下闪烁和振动),它工作得很好。

此外,请记住,要使振动工作,您需要在清单中声明振动权限:

代码语言:javascript
复制
 <uses-permission android:name="android.permission.VIBRATE" />
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38728648

复制
相关文章

相似问题

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