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();
}

私の問題は次のとおりです。

  • アニメーションは少し遅れて始まります。画面がオンになると、キーガード (またはキーガードが無効になっている場合はホーム画面) が表示され、その後、アクティビティが開始されます。
  • アクティビティの finish() メソッドを呼び出した後、電話はすぐにはスリープ状態にならず、スリープ タイマーを最初からやり直します。

画面がオンになった直後にアニメーションアクティビティを表示し、終了後すぐに画面をオフにする方法を教えてください。

4

2 に答える 2

0

初期遅延とキーガードの一部が見えることに関しては、それを防ぐ方法はないと思います。ただし、 PowerManager.goToSleepを呼び出して画面を強制的にオフにすることができます。

于 2012-11-19T21:54:44.743 に答える
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 に答える