Android 佩戴表盘保持屏幕常亮
Android Wear watchface keep screen on
我正在使用官方 android 表盘 API 并且我想在播放动画期间让屏幕保持打开状态几秒钟,这样屏幕在播放期间不会进入环境模式动画,一旦动画完成,我想将一切重置为正常,这可能吗?
我的 class 扩展了 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 来 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) {
}
});
我正在使用官方 android 表盘 API 并且我想在播放动画期间让屏幕保持打开状态几秒钟,这样屏幕在播放期间不会进入环境模式动画,一旦动画完成,我想将一切重置为正常,这可能吗? 我的 class 扩展了 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 来 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) {
}
});