Как использовать функциональность приложения Заставка в фоновом режиме для любого другого приложения - PullRequest
0 голосов
/ 15 марта 2020

Я создаю приложение Screensaver, которое автоматически уменьшает яркость экрана до 0% через 7 секунд. В одно касание яркость экрана уменьшается до 100%. Затем через 7 секунд яркость экрана снова уменьшается до 0%. Но это работает только в этом приложении. Я хочу работать с этой функциональностью в фоновом режиме, в любом другом приложении. Как я могу это сделать. Вот код, указанный ниже:

    private static final String DEBUG_TAG = "TAG";
    private View mView;
    //Variable to store brightness value
    private int brightness;
    //Content resolver used as a handle to the system's settings
    private ContentResolver cResolver;
    //Window object, that will store a reference to the current window
    private Window window;

    //Intent globalService;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        boolean settingsCanWrite = Settings.System.canWrite(this);
        //Toast.makeText(this, ""+settingsCanWrite, Toast.LENGTH_SHORT).show();


        //YourService yourService = new YourService(this);
        //yourService.s

        if (settingsCanWrite)
        {

           dimsToZero();

        }
        else
        {
            try {
                if (checkSystemWritePermission()) {

               dimsToZero();

                }else {
                    Toast.makeText(this, "Allow modify system settings ==> ON ", Toast.LENGTH_LONG).show();
                }
            } catch (Exception e) {
                Log.i("brightness",e.toString());
                Toast.makeText(this, "Unable to change brightness ", Toast.LENGTH_SHORT).show();
            }
        }




        //globalService = new Intent(this,GlobalTouchService.class);


    }

    private boolean checkSystemWritePermission() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if(Settings.System.canWrite(this))
                return true;
            else
                openAndroidPermissionsMenu();
        }
        return false;
    }

    private void openAndroidPermissionsMenu() {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
            intent.setData(Uri.parse("package:" + this.getPackageName()));
            this.startActivity(intent);
        }
    }



    @Override
    public boolean onTouchEvent(MotionEvent event) {

        int action = MotionEventCompat.getActionMasked(event);

        switch (action) {
            case (MotionEvent.ACTION_DOWN):
                Log.d(DEBUG_TAG, "Action was DOWN");

                dimsTo100();

                dimsToZero();

                return true;


            case (MotionEvent.ACTION_MOVE):
                Log.d(DEBUG_TAG, "Action was MOVE");

                dimsTo100();

                dimsToZero(); // then after 7s again dims to 0

                return true;


            case (MotionEvent.ACTION_UP):
                Log.d(DEBUG_TAG, "Action was UP");

                dimsTo100();

                dimsToZero(); // then after 7s again dims to 0

                return true;


            case (MotionEvent.ACTION_CANCEL):
                Log.d(DEBUG_TAG, "Action was CANCEL");

                dimsTo100();

                dimsToZero(); // then after 7s again dims to 0

                return true;


            case (MotionEvent.ACTION_OUTSIDE):
                Log.d(DEBUG_TAG, "Movement occurred outside bounds " +
                        "of current screen element");

                dimsTo100();

                dimsToZero(); // then after 7s again dims to 0

                return true;

            default:
                return super.onTouchEvent(event);

        }
    }

    private void dimsTo100() {

        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.screenBrightness = (float) 1;
        getWindow().setAttributes(lp);

    }

    private void dimsToZero() {

        //7s delaying
        Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {

                WindowManager.LayoutParams lp = getWindow().getAttributes();
                lp.screenBrightness = (float) 0;
                getWindow().setAttributes(lp);

            }
        },7000);
    }





/*
    public void buttonClicked(View v){

        if(v.getTag() == null){
            startService(globalService);
            v.setTag("on");
            Toast.makeText(this, "Start Service", Toast.LENGTH_SHORT).show();
        }
        else{
            stopService(globalService);
            v.setTag(null);
            Toast.makeText(this, "Stop Service", Toast.LENGTH_SHORT).show();
        }

    }

 */

    @Override
    public void onBackPressed() {
        super.onBackPressed();
        startActivity(new Intent(MainActivity.this, MainActivity.class));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...