안드로이드 현재 화면 밝기 가져오기 / 설정

안드로이드에서 현재 화면 밝기를 가져오고 설정하는 방법은 다음과 같습니다. 이를 위해 Settings.System 클래스와 ContentResolver를 사용합니다.

현재 화면 밝기 가져오기

화면 밝기 값은 0부터 255까지의 범위입니다. 현재 화면 밝기를 가져오려면 아래 코드를 사용합니다.

import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.util.Log;

public class BrightnessControl {

public static int getCurrentBrightness(Context context) {
int brightness = 0;
try {
ContentResolver contentResolver = context.getContentResolver();
brightness = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);
} catch (Settings.SettingNotFoundException e) {
Log.e("BrightnessControl", "Cannot access system brightness", e);
}
return brightness;
}
}

화면 밝기 설정

화면 밝기를 설정하려면 WRITE_SETTINGS 권한이 필요합니다. 이를 매니페스트에 추가해야 하며, 사용자에게 권한을 요청해야 합니다.

먼저, AndroidManifest.xml에 권한을 추가합니다.

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

그런 다음, 화면 밝기를 설정하는 코드는 다음과 같습니다.

import android.content.ContentResolver;
import android.content.Context;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.Log;
import android.widget.Toast;

public class BrightnessControl {

public static int getCurrentBrightness(Context context) {
int brightness = 0;
try {
ContentResolver contentResolver = context.getContentResolver();
brightness = Settings.System.getInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS);
} catch (SettingNotFoundException e) {
Log.e("BrightnessControl", "Cannot access system brightness", e);
}
return brightness;
}

public static void setBrightness(Context context, int brightness) {
if (Settings.System.canWrite(context)) {
ContentResolver contentResolver = context.getContentResolver();
Settings.System.putInt(contentResolver, Settings.System.SCREEN_BRIGHTNESS, brightness);
} else {
Toast.makeText(context, "Please grant write settings permission", Toast.LENGTH_SHORT).show();
}
}
}

권한 요청

WRITE_SETTINGS 권한을 요청하는 방법은 다음과 같습니다.

import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.provider.Settings;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private static final int REQUEST_CODE_WRITE_SETTINGS = 100;

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

if (!Settings.System.canWrite(this)) {
Intent intent = new Intent(Settings.ACTION_MANAGE_WRITE_SETTINGS);
intent.setData(Uri.parse("package:" + getPackageName()));
startActivityForResult(intent, REQUEST_CODE_WRITE_SETTINGS);
} else {
// 이미 권한이 있는 경우
int currentBrightness = BrightnessControl.getCurrentBrightness(this);
// 밝기 설정 예제
BrightnessControl.setBrightness(this, currentBrightness);
}
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_WRITE_SETTINGS) {
if (Settings.System.canWrite(this)) {
// 권한이 부여된 경우
int currentBrightness = BrightnessControl.getCurrentBrightness(this);
// 밝기 설정 예제
BrightnessControl.setBrightness(this, currentBrightness);
}
}
}
}

사용 예제

밝기를 가져오고 설정하는 방법을 앱에서 사용하려면, 위의 MainActivityBrightnessControl 클래스를 사용하면 됩니다.

import android.os.Bundle;
import android.widget.Button;
import android.widget.SeekBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {

private BrightnessControl brightnessControl;
private TextView brightnessText;
private SeekBar brightnessSeekBar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

brightnessControl = new BrightnessControl();
brightnessText = findViewById(R.id.brightnessText);
brightnessSeekBar = findViewById(R.id.brightnessSeekBar);
Button setBrightnessButton = findViewById(R.id.setBrightnessButton);

// 현재 밝기 표시
int currentBrightness = BrightnessControl.getCurrentBrightness(this);
brightnessText.setText("Current Brightness: " + currentBrightness);
brightnessSeekBar.setProgress(currentBrightness);

// 밝기 설정 버튼 클릭 리스너
setBrightnessButton.setOnClickListener(v -> {
int desiredBrightness = brightnessSeekBar.getProgress();
BrightnessControl.setBrightness(this, desiredBrightness);
brightnessText.setText("Current Brightness: " + desiredBrightness);
});
}
}

activity_main.xml 예제

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">

<TextView
android:id="@+id/brightnessText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Current Brightness:"
android:textSize="18sp"
android:layout_marginBottom="16dp"/>

<SeekBar
android:id="@+id/brightnessSeekBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:max="255"
android:layout_marginBottom="16dp"/>

<Button
android:id="@+id/setBrightnessButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Set Brightness"/>
</LinearLayout>

이 예제에서는 Settings.System을 사용하여 화면 밝기를 가져오고 설정하는 방법을 보여줍니다. SeekBar를 사용하여 원하는 밝기 수준을 선택하고 버튼을 클릭하여 밝기를 설정할 수 있습니다.

Leave a Comment