1. 程式人生 > >通過廣播獲取Android螢幕旋轉事件

通過廣播獲取Android螢幕旋轉事件

     Android獲取系統螢幕旋轉的方式有幾種,其中比較常見的是通過重寫Activity中的onConfigurationChanged方法,但是這種方法有個缺陷,當測試程式在後臺執行的時候不能捕捉到系統螢幕方向旋轉。那麼,既然螢幕旋轉屬於系統事件,如果需要在進入到其他程式中也能讓測試程式捕捉到系統螢幕旋轉,可以通過接收系統廣播的方式來實現。 首先,寫一個廣播接收的類:
class MyBroadcastReceive extends BroadcastReceiver
    {
             @Override
           public void onReceive(Context arg0, Intent arg1) {
            // TODO Auto-generated method stub
               makeToast("螢幕旋轉角度:" + String.valueOf(AirLinkAct.this.getWindowManager().getDefaultDisplay().getRotation() * 90));
            }
      }

其中this.getWindowManager().getDefaultDisplay().getRotation()是獲取當前螢幕旋轉的角度 註冊廣播有兩種方式,一種是通過在AndroidManifest.xml檔案中註冊,一種是通過java程式碼中註冊,注意,這裡能獲取螢幕旋轉的系統廣播是  android.intent.action.CONFIGURATION_CHANGED 當前裝置設定改變時都會發送這個廣播,要注意的是  這個廣播只能在java程式碼中註冊,不能再xml檔案中註冊,一定要注意 使用方式: 首先定義接收廣播類的物件 privateMyBroadcastReceivebroadcastReceive; 然後 在 onCreate函式中 註冊
broadcastReceive = new MyBroadcastReceive();
//註冊廣播接收,注意:要監聽這個系統廣播就必須用這種方式來註冊,不能再xml中註冊,否則不能生效
IntentFilter filter = new IntentFilter();
filter.addAction("android.intent.action.CONFIGURATION_CHANGED");
registerReceiver(broadcastReceive,filter);

最後,在AndroidManifest.xml中新增許可權 <uses-permissionandroid:name=
"android.permission.CHANGE_CONFIGURATION"/>