android settings———BrightnessPreference.java(亮度設定)

來源:互聯網
上載者:User

1,訊號流程:
            BrightnessPreference ---->onBindDialogView(getBrightness)---->showDialog---->onPreferenceTreeClick---->onProgressChanged(若有變化才會進來)(setBrightness)----->onDialogClosed---->ContentObserver-mBrightnessObserver----->onBrightnessChanged(getBrightness).

 

2,相關知識點:

    ContentObserver——內容觀察者,目的是觀察(捕捉)特定Uri引起的資料庫的變化,繼而做一些相應的處理
     *  觀察特定Uri的步驟如下:
     *  1、    建立我們特定的ContentObserver衍生類別,必須重載父類構造方法,必須重載onChange()方法去處理回調後的功能實現
     *  2、    利用context.getContentResolover()獲得ContentResolove對象,接著調用registerContentObserver()方法去註冊內容觀察者
     *  3、    由於ContentObserver的生命週期不同步於Activity和Service等,因此,在不需要時,需要手動的調用
             unregisterContentObserver()去取消註冊。
     * 
     *  總結: 使用ContentObserver的情況主要有一下兩者情況:
              1、需要頻繁檢測的資料庫或者某個資料是否發生改變,如果使用線程去操作,很不經濟而且很耗時 ;
              2、在使用者不知曉的情況下對資料庫做一些事件,比如:悄悄發送資訊、拒絕接受簡訊黑名單等;

 

*public final void  registerContentObserver(Uri uri, boolean notifyForDescendents, ContentObserver observer)
 * 功能:為指定的Uri註冊一個ContentObserver衍生類別執行個體,當給定的Uri發生改變時,回調該執行個體對象去處理。
 * 參數:uri          需要觀察的Uri(需要在UriMatcher裡註冊,否則該Uri也沒有意義了)
 * notifyForDescendents  為false 表示精確匹配,即只匹配該Uri
                                                                     為true 表示可以同時匹配其派生的Uri
 * observer       ContentObserver的衍生類別執行個體
 *
 *
 *  public final void  unregisterContentObserver(ContentObserver observer)
 *  功能:取消對給定Uri的觀察
          參數: observer ContentObserver的衍生類別執行個體

3,public void onProgressChanged(SeekBar seekBar, int progress,boolean fromTouch)----------------------手動模式下,通過進度條控制項設定亮度;

   public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)---------------------選中自動或手動調整亮度;

  private void setBrightness(int brightness)-------------這是設定亮度!它通過調用PowerManager(framework\base\core\java\android\os\PowerManager.java)及PowerManagerService(framework\base\service\java\com\android\server\PowerManagerService.java)的介面 來調整高度.PowerManagerService中定義的mButtonLight和mKeyboardLight都是鍵盤燈,具體使用哪一個,要看底層的平台廠商使用
public void setBacklightBrightness(int brightness);

(framework\base\service\java\com\android\server\LightsService.java)

(framework\base\services\jni\com_android_server_LightsService.cpp)

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.