我正在使用官方的android手表脸API,我希望在动画期间保持屏幕开着几秒钟,这样屏幕就不会在动画过程中进入环境模式,一旦动画完成,我想把一切都恢复到正常状态,这有可能吗?我的类扩展了CanvasWatchFaceService,我也扩展了CanvasWatchFaceService.Engine,所以我想要类似于此的东西,但用于观察面:
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);然后是这个:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON).发布于 2015-01-05 06:37:14
您需要显式地保持唤醒锁: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();发布于 2015-01-23 09:00:00
您还可以使用"setKeepScreenOn(true)“方法来保持屏幕开着,假设您有一个(根) 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设置为setKeepScreenOn(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) {
}
});https://stackoverflow.com/questions/27771059
复制相似问题