Android 尝试确定屏幕是否关闭时,检测始终显示

Android 尝试确定屏幕是否关闭时,检测始终显示,android,always-on-display,Android,Always On Display,我正试图找出如何检测Android上的显示器是否关闭,我感觉S10上的常开显示器正在影响我的结果 目前,我正在使用中的逻辑 还有一种说法是,你应该能够使用它来检查三星的“始终显示”,但它没有解释如何使用 利用这些信息,我把这个函数组合起来。但它似乎不起作用。如果启用了“始终打开”显示,则显示似乎几乎总是打开 public boolean isScreenOn(){ if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.KITKAT\u WATCH){

我正试图找出如何检测Android上的显示器是否关闭,我感觉S10上的常开显示器正在影响我的结果

目前,我正在使用中的逻辑

还有一种说法是,你应该能够使用它来检查三星的“始终显示”,但它没有解释如何使用

利用这些信息,我把这个函数组合起来。但它似乎不起作用。如果启用了“始终打开”显示,则显示似乎几乎总是打开

public boolean isScreenOn(){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.KITKAT\u WATCH){
DisplayManager dm=(DisplayManager)getSystemService(Context.DISPLAY\u服务);
对于(显示:dm.getDisplays()){
if((display.getFlags()&display.FLAG_PRIVATE)!=display.FLAG_PRIVATE){
if(display.getState()!=display.STATE\u OFF){
返回true;
}
}
}
返回false;
}否则{
PowerManager pm=(PowerManager)getSystemService(Context.POWER\u服务);
//无检查弃用
返回pm.isScreenOn();
}
}

我不确定我检查
显示.FLAG\u PRIVATE
标志的方式是否正确,或者这是否有助于解决始终显示可能影响结果的问题。

我发现这些标志实际上与此无关。当“始终打开”显示处于活动状态时,显示状态似乎将是几个状态之一,包括,和几个其他状态。因此,我只是检查所有其他状态,并将其视为关闭显示

public boolean isScreenOn(){
if(Build.VERSION.SDK\u INT>=Build.VERSION\u code.KITKAT\u WATCH){
DisplayManager dm=(DisplayManager)getSystemService(Context.DISPLAY\u服务);
对于(显示:dm.getDisplays()){
if(display.getState()==display.STATE\u打开){
返回true;
}
}
返回false;
}否则{
PowerManager pm=(PowerManager)getSystemService(Context.POWER\u服务);
//无检查弃用
返回pm.isScreenOn();
}
}