首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android穿戴观察台保持屏幕

Android穿戴观察台保持屏幕
EN

Stack Overflow用户
提问于 2015-01-04 22:26:38
回答 2查看 1.8K关注 0票数 4

我正在使用官方的android手表脸API,我希望在动画期间保持屏幕开着几秒钟,这样屏幕就不会在动画过程中进入环境模式,一旦动画完成,我想把一切都恢复到正常状态,这有可能吗?我的类扩展了CanvasWatchFaceService,我也扩展了CanvasWatchFaceService.Engine,所以我想要类似于此的东西,但用于观察面:

代码语言:javascript
运行
复制
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

然后是这个:

代码语言:javascript
运行
复制
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-05 06:37:14

您需要显式地保持唤醒锁:http://developer.android.com/reference/android/os/PowerManager.WakeLock.html

获得一个唤醒锁,保持屏幕上,并释放它,当你完成动画。

下面是一个关于保持设备保持清醒的文档:https://developer.android.com/training/scheduling/wakelock.html

下面是一个例子:

代码语言:javascript
运行
复制
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);

WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,
        "WatchFaceWakelockTag"); // note WakeLock spelling

wakeLock.acquire();
票数 3
EN

Stack Overflow用户

发布于 2015-01-23 09:00:00

您还可以使用"setKeepScreenOn(true)“方法来保持屏幕开着,假设您有一个(根) RelativeLayout,在其中您的动画发生:

代码语言:javascript
运行
复制
private RelativeLayout rLayout;

在OnCreate()中,获取想要的布局:

代码语言:javascript
运行
复制
 final WatchViewStub stub = (WatchViewStub)                             
     findViewById(R.id.watch_view_stub);
 stub.setOnLayoutInflatedListener(new    
     WatchViewStub.OnLayoutInflatedListener() {
        @Override
        public void onLayoutInflated(WatchViewStub stub) {

// rLayout是动画发生的根布局

代码语言:javascript
运行
复制
rLayout = (RelativeLayout) stub.
                    findViewById(R.id.your_layout);
            relativeLayout.setKeepScreenOn(true);

然后,您可以在动画中再次将AnimationListener设置为setKeepScreenOn(false):

代码语言:javascript
运行
复制
yourAnimation.setAnimationListener(new 
    Animation.AnimationListener()   {
        @Override
        public void onAnimationStart(Animation animation) {

        }

        @Override
        public void onAnimationEnd(Animation animation) {
            if(animation.hasEnded())
                rLayout.setKeepScreenOn(false);
        }

       @Override
       public void onAnimationRepeat(Animation animation) {

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

https://stackoverflow.com/questions/27771059

复制
相关文章

相似问题

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