Search Wikipedia

Search results

May 6, 2014

Adjust Screen Brightness in Android with example

Screen Brightness in Android can be controlled programmatically in simple way. This tutorial explains the process with an example. Native brightness control in Android device has a Seekbar that adjust the screen brightness. The below tutorial has UI in a similar way.You take a look at SeekBar tutorial here if needed. 

android.provider.Settings.System - This class contains miscellaneous system preferences. There are convenience functions for accessing individual system settings. android.provider.

Settings.System.getInt - Convenience function for retrieving a single system settings value as an integer. Note that internally setting values are always stored as strings; this function converts the string to an integer for you. The default value will be returned if the setting is not defined or not an integer. 

android.provider.Settings.System.SCREEN_BRIGHTNESS - String that holds Screen Brightness value ranging from 0 to 255.




Get Current Screen_Brightness Value 
 The above functions and constants can be used to get screen brightness as shown in the code snippet.This example has a seekbar defined with maximum value as 255, since the screen brightness constant varies from 0 to 255.

float curBrightnessValue = 0;
curBrightnessValue=android.provider.Settings.System.getInt(getContentResolver(), android.provider.Settings.System.SCREEN_BRIGHTNESS);




The obtained value should be set to setProgress method of seekbar as shown below ,

seekBar.setProgress(screen_brightness);

Set/Put Screen_Brightness Value
 In the same way as get, we can also put value to set Screen_Brightness as shown in the below code snippet

android.provider.Settings.System.putInt(getContentResolver(), 
android.provider.Settings.System.SCREEN_BRIGHTNESS, progress);
progress is the current SeekBar progress, in this way SeekBar and Screen_Brightness will be synced.

Android Permission to Change Screen Brightness
 Since we are modifying system settings we need to add permissions in AndroidManifest.xml to modify Screen_Brightness.
<uses-permission android:name="android.permission.WRITE_SETTINGS"></uses-permission>


activity_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >
<SeekBar
        android:id="@+id/seekBar1"
        android:layout_width="300dp"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="26dp"
        android:max="10" />
</RelativeLayout>

MainActivity.java
package com.example.android_adjustbrightness;
import android.os.Bundle;
import android.provider.Settings.SettingNotFoundException;
import android.app.Activity;
import android.view.Menu;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;

public class MainActivity extends Activity {

  private SeekBar seekBar;

  @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.activity_main);
  seekBar = (SeekBar) findViewById(R.id.seekBar1);
  seekBar.setMax(255);

   float curBrightnessValue = 0;
  try {
   curBrightnessValue = android.provider.Settings.System.getInt(
     getContentResolver(),
     android.provider.Settings.System.SCREEN_BRIGHTNESS);
  } catch (SettingNotFoundException e) {
   e.printStackTrace();
  }

   int screen_brightness = (int) curBrightnessValue;
  seekBar.setProgress(screen_brightness);
  seekBar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
   int progress = 0;

    @Override
   public void onProgressChanged(SeekBar seekBar, int progresValue,
     boolean fromUser) {
    progress = progresValue;
   }

    @Override
   public void onStartTrackingTouch(SeekBar seekBar) {
    // Do something here,
    // if you want to do anything at the start of
    // touching the seekbar
   }

    @Override
   public void onStopTrackingTouch(SeekBar seekBar) {
    android.provider.Settings.System.putInt(getContentResolver(),
      android.provider.Settings.System.SCREEN_BRIGHTNESS,
      progress);
   }
  });
 }

  @Override
 public boolean onCreateOptionsMenu(Menu menu) {
  // Inflate the menu; this adds items to the action bar if it is present.
  getMenuInflater().inflate(R.menu.main, menu);
  return true;
 }

}

AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.android_adjustbrightness"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="18" />

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.android_adjustbrightness.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

No comments:

Post a Comment

Did this post help you? Do you have any questions? Drop your thoughts here...

}