0

当手机处于睡眠状态时,我想要一个动画活动(很像手机铃声动画)。

我已经阅读了很多关于使用 WindowManager 标志打开屏幕的帖子,所以我所做的就是将这段代码添加到我的活动的 onCreate() 函数中:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);
    this.getWindow().setFlags(
         WindowManager.LayoutParams.FLAG_FULLSCREEN |
         WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
         WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON,

         WindowManager.LayoutParams.FLAG_FULLSCREEN |
         WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED |
         WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
    );

    setContentView(R.layout.act_image_activity);
    startAnimation();
}

我的问题是:

  • 动画以小的延迟开始;当屏幕打开时,我可以看到键盘保护(或禁用键盘保护时的主屏幕),然后我的活动开始。
  • 调用我的活动的完成()方法后,手机不会立即进入睡眠状态,而是重新启动睡眠计时器。

有人可以告诉我如何让我的动画活动在屏幕打开后立即显示,并在完成后立即关闭屏幕?

4

2 回答 2

0

但是这个接收器到你的清单

<receiver android:name="IntentReceiver" >
<intent-filter>
     <action android:name="android.intent.action.SCREEN_ON" ></action>
     <action android:name="android.intent.action.SCREEN_OFF" ></action>
</intent-filter>
</receiver>

 public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       this.requestWindowFeature(Window.FEATURE_NO_TITLE);
       setContentView(R.layout.activity_main);

       registerReceiver(new BroadcastReceiver() {                           
       public void onReceive(Context arg0, Intent arg1) {
            Log.v("tag", "screen on");
            // You can catch  screen on here and start your animation
         }
       }, new IntentFilter(Intent.ACTION_SCREEN_ON));

       registerReceiver(new BroadcastReceiver() {
       public void onReceive(Context arg0, Intent arg1) {
            Log.v("tag", "screen off");
            // You can catch  screen off here and start your animation
          }
        }, new IntentFilter(Intent.ACTION_SCREEN_OFF));
    }
于 2012-11-19T21:51:09.297 回答
0

至于最初的延迟和看到键盘保护的一部分,我认为没有办法防止这种情况发生。但是,您可以通过调用PowerManager.goToSleep来强制关闭屏幕。

于 2012-11-19T21:54:44.743 回答