私のアプリは、TelephonyManager.ACTION_PHONE_STATE_CHANGED
いくつかのアクションに を使用します。しかし、ユーザーが存在するとき (画面がオン) に電話が鳴っている間は別のアクションが必要であり、ユーザーが存在しないとき (画面がオフ) には別のアクションが必要です。isScreenOn()
私は最初の方法を試しましたonReceive
(画面がオフで着信があると、画面がしばらくオフのままになるため)。ただし、うまくいかない場合もあります。ブロードキャストは画面の状態と非同期です...
public void onReceive(Context context, Intent intent) {
pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
Boolean screenOn = pm.isScreenOn();
Log.w(TAG, "Screen on is " + screenOn.toString());
コードを変更して、電話がかかってきたときに電話がスリープ状態だったかどうかを正確に判断するにはどうすればよいですか?