Képernyő állapotának lekérdezése

Kémprogramokhoz elengedhetetlen a láthatatlanság, igaz hogy fejlődik az android és már egyre nehezebb bármit is ellopni a júzer telefonjáról, de a felhasználói szokások még az ellopható dolgok közé tartoznak, mint például a telefon helyzete, ahol árulkodó lehet a bekapcsolt gps működését jelző ikon az állapot sávban. Az ilyent érdemes kikapcsolt képernyőnél csinálni, és ehhez jól jön ha le tudjuk kérdezni a képernyő ki- vagy bekapcsolt állapotát

public boolean isScreenOn(Context context) {
        if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT_WATCH) {
            DisplayManager dm = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
            boolean screenOn = false;
            for (Display display : dm.getDisplays()) {
                if (display.getState() != Display.STATE_OFF) {
                    screenOn = true;
                }
            }
            return screenOn;
        } else {
            PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
            //noinspection deprecation
            return pm.isScreenOn();
        }
    }

Beállíthatunk egy filtert is, hogy fusson le egy procedúra, ha a telefon képernyőjét ki vagy bekapcsolták

brr= new BroadcastReceiver() {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (mp1 != null){
            mp1.release();
            mp1= MediaPlayer.create(getApplicationContext(), R.raw.sound7);
        }
        mp1.start();
        Log.i("TTAG","je");
    }
};



IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_SCREEN_OFF);
filter.addAction(Intent.ACTION_SCREEN_ON);
registerReceiver(brr, filter);

Ez utóbbinál persze kell lenni egy hang fájlnak a raw mappában, és akkor hanggal jelez, ha ki vagy bekapcsolták a telefont