Androidスリープ運転


アクセス権

    <uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>

onCreateで
//  
        boolean ignoringBatteryOptimizations = isIgnoringBatteryOptimizations();
        if (ignoringBatteryOptimizations){
            Toast.makeText(this, "       ", Toast.LENGTH_SHORT).show();
        }else {
            requestIgnoreBatteryOptimizations();
        }

方法
/**
     *          
     * @return
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    private boolean isIgnoringBatteryOptimizations() {
        boolean isIgnoring = false;
        PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
        if(powerManager != null) {
            isIgnoring = powerManager.isIgnoringBatteryOptimizations(getPackageName());
        }
        return isIgnoring;
    }
    /**
     *        
     */
    @RequiresApi(api = Build.VERSION_CODES.M)
    public void requestIgnoreBatteryOptimizations() {
        try{
            Intent intent = new Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
            intent.setData(Uri.parse("package:"+ getPackageName()));
            startActivity(intent);
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

リクエスト結果
 /**
         *   
         */
        boolean ignoringBatteryOptimizations = isIgnoringBatteryOptimizations();
        if (ignoringBatteryOptimizations){
            Toast.makeText(this, "OK", Toast.LENGTH_SHORT).show();
        }else {
            Toast.makeText(this, "failure", Toast.LENGTH_SHORT).show();
        }