好記性不如爛筆頭(一),記性不如爛筆頭

來源:互聯網
上載者:User

好記性不如爛筆頭(一),記性不如爛筆頭

擷取系統設定狀態
我們可以通過Settings.System類來擷取到一些系統設定的狀態,所以我們可以通過以下代碼來擷取系統的狀態,比如ACCELEROMETER_ROTATION
等,不過有一點要注意的就是,Android的ROM太多了,不同的廠商可能會直接改掉Android的實現,然後自己實現一套,然後,就崩了。
所以在真正處理的時候,我們需要去捕獲異常,保證代碼的健壯性。

/*** 擷取系統螢幕方向是否被鎖定的狀態* @return*/public static boolean isLock(Context context){ int lock = Settings.System.getInt(context.getContentResolver(), Settings.System.ACCELEROMETER_ROTATION, -1);return lock != 1;}return false;}

監控系統設定“鎖定方向”或者“自動旋轉”按鈕改變
我們都知道ContentObserver監控的Content是指Android本身提供的一些底層資料庫,比如簡訊,電話等,當然,也包括我們的設定項,
所以,通過上面的方法,我們可以擷取到系統設定的狀態,但是如何在狀態改變的時候,也第一時間知道呢,那就要求我們去註冊一個
Observer了,也就是觀察者,具體代碼如下。
1、建立Observer

private ContentObserver mRotationLockObserver = new ContentObserver(new Handler()) {@Overridepublic void onChange(boolean selfChange) {      // 能夠進入到這個函數,就說明對應的Content的內容已經發生變化了,也即設定項的值已經被改變了。     // 而 selfChange在這裡表明是否當前App改變設定的值的}};

2、 註冊Observer
上面只是建立一個對Content的Observer,但是具體需要去監聽哪個內容呢,這就由我們在註冊的時候來決定了。
在之前的博文中,有寫過一篇文章,是對簡訊收件匣進行監聽的,大家有興趣的話可以看一下那一篇文章,就會更好地瞭解關於這個ContentObserver的使用了。

Android學習小Demo(13)Android中關於ContentObserver的使用

getContentResolver().registerContentObserver(Settings.System.getUriFor(Settings.System.ACCELEROMETER_ROTATION),true, mRotationLockObserver);

3、撤消Observer

getContentResolver().unregisterContentObserver(mRotationLockObserver);

監聽手機螢幕方向改變
可通過繼承OrientationEventListener來自訂一個類,其中onOrientationChanged方法會在螢幕方向發生變化的時候被調用。
參數orientation的值為0-359,表明螢幕此時旋轉的角度。

public class OrientationDetector extends OrientationEventListener {public OrientationDetector(Context context) {super(context);}@Overridepublic void onOrientationChanged(int orientation) {if (orientation == OrientationEventListener.ORIENTATION_UNKNOWN) {}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.