0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Android クイック設定タイル開発 使える物を作ってみよう その1

Posted at

はじめに

  • こちらの記事で紹介した、最小限タイルをカスタマイズしていきます。

この記事は、断片的に役立つ人間もいるだろうとの考えの下、「筆者の筆者による筆者のためのタイル」の開発過程を共有するものです。

完成イメージ

  • タップしたときにダイアログが表示され、ディスプレイの輝度を数パターンから選んで変更するタイルを目標とします。
  • イメージが近いのは、インターネットの設定を行うタイルです。それのダイアログで選択するものがWiFiアクセスポイントではなくディスプレイ輝度になっているようなものをイメージしています。

本記事の範囲

  • ユーザーがタイルをタップしたときに、あらかじめ決められたディスプレイ輝度に変更するところまでを実験します。

手順

  1. AndroidManifest.xmlにて、システム設定の変更権限を要求します。
  2. TileServiceを継承したクラスのonClickにタップしたときの動作(ディスプレイ輝度変更)を追加します。

AndroidManifest.xmlの修正

以下を追加して、本アプリがシステム設定を変更する権限が必要であることを示します。

AndroidManifest.xml
    <uses-permission android:name="android.permission.WRITE_SETTINGS"
        tools:ignore="ProtectedPermissions" />

システム設定を変更する権限を要求する仕組み(ダイアログを出す等)は、本記事では取り扱いません。
動作確認をする場合は、本体設定のアプリの項目から、本アプリに変更権限を与えてください。

ディスプレイ輝度変更動作の実装

後々のことを考えて、希望の輝度を引数とする関数として実装します。
以下を、TileServiceを継承したBrightnessSwitchTileServiceに追加し、onClickから呼び出します。

BrightnessSwitchTileService.kt
    fun BrightnessChange(brightness: Int): Boolean
    {
        val cr = applicationContext.getContentResolver()
        var ret = false
        runCatching {
            Settings.System.putInt(cr, Settings.System.SCREEN_BRIGHTNESS, brightness)
        }.fold(
            onSuccess = {
                Log.d("test","true")
                ret = true
            },
            onFailure = {
                Log.d("test","false")
            }
        )
        return ret
    }

輝度0はなく、引数は1以上の整数にしなければならないようです。

輝度変更は、権限がない場合、失敗します。
将来的に、権限がなかったときに何かしたくなるかもしれないので、戻り値として成功か失敗かを返すようにしています。

動作確認

  • タイルをタップして固定輝度に変更できるはずです。
  • 権限があるときとないときで、動作が変わるはずです。ログで確認できます。

次回

  • 次の記事を書いたらリンクを貼ります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?