2017-08-11 6 views
0

私は英語が得意ではないと思います。^ _^ Activity.onCreate()アクティビティが既に開いているときにアクティビティの画面を表示するにはどうすればよいですか?

getWindow().addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED 
      | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
      | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD 
      | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 

使用して画面上のターンに関する多くの答えがありました、それは本当に活動が画面の前に立ち上げていないだけで、画面をオンにすることができますオンになっています。アクティビティが画面がオフになる前に起動されている場合は、画面(アクティビティonStop()ではなくonDestroy())をオフにしてから、アクティビティがイベントを受信すると、画面を再びオンにする必要があります。

は、私は時々、それはありませんが、時にはそれが動作し、それは常に動作していない、onStop()onStart()getWindow().clearFlags(...)getWindow().addFlags(...)を入れてみてください。

最後に、私はonStart()

PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); 
    mWakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "VideoChat"); 
    mWakeLock.acquire(); 

を使用し、onCreate()getWindow().addFlags(...)を保つ、私は実際に画面をオンにすると、画面がオフになって、私が「ロック画面」の前で私の活性を示すことができますアクティビティは「onStop()状態」です。

しかし、PowerManager.FULL_WAKE_LOCKはAPIレベル17では非推奨です。最小APIは18、ターゲットAPIは25です。上記のメソッドには<uses-permission android:name="android.permission.WAKE_LOCK"/>が必要です。これはすべて私が望むものではありません。

Googleは、次のように述べています。「この種のウェイクロックの代わりに、ほとんどのアプリケーションでFLAG_KEEP_SCREEN_ONを使用する必要があります。ユーザーがアプリケーション間を移動し、特別な許可を必要としないため、プラットフォームによって正しく管理されます。しかし、Activityがすでに起動されているときに、FLAG_KEEP_SCREEN_ONを使用して画面をオンにする方法については何も考えていませんでした。

ですから、非推奨の方法を使わずに画面をオンにして既に起動したアクティビティを表示する方法はありますか?

は、私は自分自身が明確になりました^ _^

を示しています?画面上

入れます - >開く活動A - >画面をオフにします - > Aいくつかのイベントを受け取る - >どのようにAは、画面をオンにして、非推奨の方法でロック画面の前に自分自身を表示させますか?

ありがとうございました!

答えて

0

あなたはSO答えをフォローアップ、そして、あなたがイベントを取得するときちょうどそれがfalseを返す場合、その場合には、

StackApp.isInForeground() 

をご確認画面が上であるかどうかを確認することができます。バックグラウンドの場合は、次のようにチェックしてください。

PowerManager powerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 

final boolean isScreenOn; 
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
    isScreenOn = powerManager.isInteractive(); 
} else { 
    isScreenOn = powerManager.isScreenOn() 
} 

画面のオンまたはオフに基づいてアクションを実行できます。

+0

申し訳ありませんが、これは私の質問ではありません。私は画面の状態を確認したくありません。私は、アクティビティが既に開いているときに、アクティビティからプログラムで画面を表示する方法を知りたいだけです。言い換えれば、アクティビティはすでにユーザによって開かれているので、ユーザは画面をオフにしてから、画面をオンにしてプログラムでアクティビティを表示する方法を教えてください。 –

+0

アクティビティが開かれていない場合は、 'Intent'を使用してアクティビティを開始し、' WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON'などを使用して画面をオンにできますが、アクティビティがすでに開かれている場合、これらのメソッドは機能しません。 –

関連する問題