Android
 Computer >> コンピューター >  >> プログラミング >> Android

Androidアプリで画面の明るさをプログラムから変更する方法【コード付き解説】

はじめに

この記事では、Androidアプリからプログラムを使って画面の明るさ(輝度)を変更する方法を解説します。SeekBar(スライダー)を操作すると、端末の画面輝度がリアルタイムに変化するシンプルなサンプルアプリを一緒に作成していきましょう。

ステップ1:新規プロジェクトの作成

まずはAndroid Studioで新しいプロジェクトを作成します。メニューから「File」→「New Project」を選択し、必要な項目を入力してプロジェクトを作成してください。

ステップ2:レイアウトファイル(activity_main.xml)の編集

次に、res/layout/activity_main.xml に以下のコードを追加します。画面中央にTextViewとSeekBarを縦方向に配置したシンプルな構成です。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:padding="8dp"
    android:gravity="center"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Turn Off Screen"/>
    <SeekBar
        android:id="@+id/seekBar"
        android:layout_marginTop="10dp"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
</LinearLayout>

ステップ3:MainActivity.java の編集

続いて、src/MainActivity.java に以下のコードを追加します。起動時に現在の輝度値を取得してSeekBarに反映し、スライダーの操作に合わせてシステム設定へ書き込む仕組みです。

import android.content.Context;
import android.provider.Settings;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.SeekBar;
public class MainActivity extends AppCompatActivity {
    SeekBar lightBar;
    Context context;
    int brightness;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lightBar = findViewById(R.id.seekBar);
        context = getApplicationContext();
        brightness =
            Settings.System.getInt(context.getContentResolver(),
            Settings.System.SCREEN_BRIGHTNESS, 0);
        lightBar.setProgress(brightness);
        lightBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
                Settings.System.putInt(context.getContentResolver(),
                Settings.System.SCREEN_BRIGHTNESS, progress);
            }
            @Override
            public void onStartTrackingTouch(SeekBar seekBar) { }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) { }
        });
    }
}

ステップ4:マニフェストへの権限宣言

最後に、androidManifest.xml に以下のコードを追加します。システム設定を書き換えるためには WRITE_SETTINGS 権限の宣言が必須です。

<?xml version="1.0" encoding="utf-8"?>
<manifest
    xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    package="app.com.sample">
    <uses-permission
        android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action
                    android:name="android.intent.action.MAIN" />
                <category
                    android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

アプリを実行してみよう

それでは、作成したアプリを実行してみましょう。ここでは、実機のAndroidスマートフォンがパソコンに接続されているものとして説明します。

Android Studioからアプリを起動するには、プロジェクト内のアクティビティファイルを開き、ツールバーにある「Run」アイコンをクリックします。デバイス選択ダイアログで接続したモバイル端末を選ぶと、実機の画面にアプリが表示されます。

Androidアプリで画面の明るさをプログラムから変更する方法【コード付き解説】

Androidアプリで画面の明るさをプログラムから変更する方法【コード付き解説】

実装のポイント

・輝度値の読み書き: 画面の明るさは Settings.System.SCREEN_BRIGHTNESS を通じて取得・設定できます。値の範囲は一般的に0〜255で、getInt() で現在値を読み取り、putInt() で新しい値を書き込みます。

・WRITE_SETTINGS権限について: Android 6.0(API 23)以降では、マニフェストへの宣言だけでは不十分で、ユーザーが「設定アプリ → アプリ情報 → システム設定の変更」から許可を与える必要があります。実装時には Settings.ACTION_MANAGE_WRITE_SETTINGS のインテントでユーザーを設定画面へ誘導するのが一般的です。

・自動輝度との併用に注意: 端末側で「自動輝度」が有効になっている場合、OSが輝度を上書きすることがあります。確実に動作させる場合は、事前に自動輝度モードを無効化しておくことをおすすめします。

  1. Windows 10で画面の明るさを変更する6つの方法【初心者向け完全ガイド】

    パソコンの画面の明るさ調整は、長時間パソコンを使う方にとって非常に重要です。オフィスでも自宅でも、多くの方が一日に何時間も画面と向き合って作業しています。適切な明るさに設定することで、目の疲れ(眼精疲労)を防ぐことができます。 例えば、日中の明るい場所では画面を明るめに設定し、暗い部屋では明るさを落とすことで、目に優しく快適に作業できます。また、画面の明るさを下げることは省電力にもつながり、ノートパソコンのバッテリー駆動時間の延長にも効果的です。 この記事では、Windows 10で画面の明るさを変更・調整するための6つの方法を詳しく解説します。 Windows 10で画面の明るさを変更する6

  2. Windows 11で画面の明るさを変更する3つの方法を徹底解説

    WindowsのノートPCや一部のデスクトップPCでは、周囲の環境光に応じて画面の明るさが自動的に調整されます。この自動調整機能のおかげで、どんな場所でも画面を見やすい状態に保つことができます。さらに、高性能なPCの中には、表示中のコンテンツに合わせて内蔵ディスプレイの明るさやコントラストを自動的に変化させる機能を搭載しているものもあります。 ただし、外付けモニターを使用している場合、この自動調整は期待どおりに機能しないことがあります。その場合は自動調整をオフにして、モニター側で明るさを手動調整する必要があるでしょう。 本記事では、Windows 11で画面の明るさを変更する方法をわかりやす