如何查找Android手机是否处于睡眠/空闲模式

Sha*_*han 6 android

如何查找Android手机是否处于睡眠/空闲模式?

我的问题是我可以通过使用警报管理器从睡眠模式中唤醒手机

但是当手机不是睡眠模式并且在同一时刻如果使用警报管理器来唤醒手机..机械手强制关闭应用程序..

无论如何都能找到手机是处于睡眠还是空闲模式?(黑屏)

更新:

我的要求:

当手机处于睡眠模式时--->应该从服务启动意图当手机未处于睡眠模式时 - >应该从服务启动相同的意图

下面的解决方案都没有完美的工作,所以这里是我的小调整,完美的工作:) :)

  //Pending intent for my alarm manager 
  Intent intentaa=new Intent(this,MyBroadcastReceiver.class);
  PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intentaa, 0);

  //Intent to be launched where MyIntent is the intent
  Intent intenta = new Intent();
  intenta.setClass(this, MyIntent.class);
  intenta.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

  //Real code
  try
  {
   startActivity(intenta); 

  }catch(Exception E)
  {

      AlarmManager am = (AlarmManager)getSystemService(ALARM_SERVICE);
      am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,SystemClock.elapsedRealtime(),
      pendingIntent);
      startActivity(intenta); 

   }    
Run Code Online (Sandbox Code Playgroud)

Moj*_*sin 15

您可以通过调用isScreenOn方法来检查屏幕是否已关闭.

注意:这只能用于2.1及以上..


Ram*_*man 5

isScreenOn方法仅在屏幕打开或关闭时返回.它并不表示困倦模式,因为Android睡眠模式与Android屏幕关闭模式不同.在Android中,屏幕关闭(空闲模式)后,睡眠模式可能在几毫秒内(取决于唤醒锁) - 但这并不能保证(参考这篇文章).

我想你可以尝试使用SystemClock.uptimeMillis(),SystemClock.elapsedRealtime()比较.


Noe*_*hew 5

查看isInteractive()

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
  return pm.isInteractive();
} else {
  return pm.isScreenOn();
}
Run Code Online (Sandbox Code Playgroud)