[英]Android Wear watchface keep screen on
我正在使用官方的android watch face API,我希望在动画期间保持屏幕开启几秒钟,以便在动画期间屏幕不会进入环境模式,一旦动画完成,我想重置一切恢复正常,这可能吗? 我的类扩展了CanvasWatchFaceService,我也在扩展CanvasWatchFaceService.Engine所以我想要类似的东西,但是对于表面:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
然后这个:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).
你需要明确地保持唤醒锁: http : //developer.android.com/reference/android/os/PowerManager.WakeLock.html
获得一个唤醒锁定,使屏幕保持打开状态,并在完成动画制作后释放它。
这是一个关于保持设备清醒的文档: https : //developer.android.com/training/scheduling/wakelock.html
这是一个例子:
PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE);
WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK,
"WatchFaceWakelockTag"); // note WakeLock spelling
wakeLock.acquire();
您还可以使用“setKeepScreenOn(true)”方法来保持屏幕开启,假设您有一个(Root)RelativeLayout,其中包含动画:
private RelativeLayout rLayout;
在OnCreate()中获取所需的布局:
final WatchViewStub stub = (WatchViewStub)
findViewById(R.id.watch_view_stub);
stub.setOnLayoutInflatedListener(new
WatchViewStub.OnLayoutInflatedListener() {
@Override
public void onLayoutInflated(WatchViewStub stub) {
// rLayout是动画发生的根布局
rLayout = (RelativeLayout) stub.
findViewById(R.id.your_layout);
relativeLayout.setKeepScreenOn(true);
然后,您可以在动画上将AnimationListener设置为再次设置KeepScreenOn(false):
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) {
}
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.