AI 콘텐츠

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

안드로이드에서 현재 화면 밝기를 가져오고 설정하는 방법은 다음과 같습니다. 이를 위해 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를 사용하여 원하는 밝기 수준을 선택하고 버튼을 클릭하여 밝기를 설정할 수 있습니다.

아자스마일

Recent Posts

안드로이드에서 usb 메모리에 저장하는 방법

안드로이드에서 USB 메모리에 데이터를 저장하는 방법은 USB OTG(On-The-Go) 기능을 활용합니다. 이를 위해서는 USB 드라이브에 접근하기…

4개월 ago

안드로이드 장치 현재 볼륨 정보 가져오기 / 볼륨 설정하기

안드로이드에서 현재 볼륨을 가져오고 볼륨을 설정하는 방법은 다음과 같습니다. 이 작업을 수행하기 위해 AudioManager 클래스를…

4개월 ago

모든 AI 도구를 한 곳에서: Easy-Peasy.ai 사용 후기와 기능 소개

왜 하나만 선택하나요? Easy-Peasy.ai가 모든 걸 해결해드립니다! 안녕하세요, 여러분! 블로그와 콘텐츠 제작 전문가로서, 여러분께 진정한…

5개월 ago

일상 속 작은 기적, 어깨마사지기로 피로 싹 풀기

어깨가 뭉친 경험, 일상에서의 스트레스, 바쁜 일정 속에서도 건강을 챙기고 싶은 현대인들에게 어깨마사지기는 작은 기적과도…

6개월 ago

글쓰기 모임의 피드백에서 생각하는 콘텐츠 냄새?

콘텐츠에서 나는 사람 냄새가 뭘까? 글쓰기 습관 모임에서 글에 대한 피드백을 받을 때 인공지능을 이용하여…

6개월 ago

글쓰기 습관 모임이 모임?

글쓰기 습관 18기 모임을 하고 나서 쓰는 생각 한 조각 글쓰기 습관 18기 모임에 참가해서…

6개월 ago