2017-03-04 117 views

回答

0

恐怕你不能这样做,对this网站科尔多瓦插件列表上一看,你会不会觉得你可以用它来检查屏幕状态

编辑任何插件:如果你知道一种方法使用原生Java为Android发生这种情况,你可以创建一个科尔多瓦插件,并将其附加到你的应用程序,但作为目前可用的插件没有任何一个可以做到这一点

+0

我怕你是对的,但仍然希望有人在我之前做过 –

0

有一些属性像“mLockScreenShown”&“ mumpsful“,可以获取设备锁定屏幕状态。如果你在adb shell中运行dumpsys activity命令,你会得到几乎所有关于androd活动的信息。下面是完整的Java API,它会给你Android设备的屏幕状态。

public static String getScreenState() throws IOException { 
    Process process = null; 
    BufferedReader buffRead; 
    String processString = ""; 
    int sleepMode = -1; 
    int awakeMode = -1; 
    String screenState = ""; 

    try { 
     String command = System.getProperty("java.home") + File.separator + "tools" + File.separator 
       + "adb.exe shell dumpsys activity | grep mLockScreenShown"; 
     process = Runtime.getRuntime().exec(command); 

     buffRead = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024); 
     while ((processString = buffRead.readLine()) != null) { 
      if (processString.split("mSleeping=").length > 1) { 
       if (processString.split("mSleeping=")[1].startsWith("true")) 
        sleepMode = 0; 
       else if (processString.split("mSleeping=")[1].startsWith("false")) 
        sleepMode = 1; 
      } 
     } 

     try { 
      command = System.getProperty("java.home") + File.separator + "tools" + File.separator 
        + "adb.exe shell dumpsys activity | grep mWakefulness"; 
      process = Runtime.getRuntime().exec(command); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     processString = ""; 
     buffRead = new BufferedReader(new InputStreamReader(process.getInputStream()), 1024); 
     while ((processString = buffRead.readLine()) != null) { 
      if (processString.split("mWakefulness=").length > 1) { 
       if (processString.split("mWakefulness=")[1].startsWith("Awake")) 
        awakeMode = 0; 
       else if (processString.split("mWakefulness=")[1].startsWith("Asleep") 
         || processString.split("mWakefulness=")[1].startsWith("Dozing")) 
        awakeMode = 1; 
      } 
     } 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    if (sleepMode == 0 && awakeMode == 1) { 
     screenState = "SCREEN_OFF"; 
    } else if (sleepMode == 0 && awakeMode == 0) { 
     screenState = "SCREEN_LOCK"; 
    } else if (sleepMode == 1 && awakeMode == 0) { 
     screenState = "SCREEN_ON"; 
    } 

    return screenState; 
}