2017-03-04 132 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; 
}