안드로이드에서 현재 화면 밝기를 가져오고 설정하는 방법은 다음과 같습니다. 이를 위해 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);
}
}
}
}
사용 예제
밝기를 가져오고 설정하는 방법을 앱에서 사용하려면, 위의 MainActivity
와 BrightnessControl
클래스를 사용하면 됩니다.
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
를 사용하여 원하는 밝기 수준을 선택하고 버튼을 클릭하여 밝기를 설정할 수 있습니다.