通過廣播獲取Android螢幕旋轉事件
阿新 • • 發佈:2019-02-18
Android獲取系統螢幕旋轉的方式有幾種,其中比較常見的是通過重寫Activity中的onConfigurationChanged方法,但是這種方法有個缺陷,當測試程式在後臺執行的時候不能捕捉到系統螢幕方向旋轉。那麼,既然螢幕旋轉屬於系統事件,如果需要在進入到其他程式中也能讓測試程式捕捉到系統螢幕旋轉,可以通過接收系統廣播的方式來實現。
首先,寫一個廣播接收的類:
其中this.getWindowManager().getDefaultDisplay().getRotation()是獲取當前螢幕旋轉的角度 註冊廣播有兩種方式,一種是通過在AndroidManifest.xml檔案中註冊,一種是通過java程式碼中註冊,注意,這裡能獲取螢幕旋轉的系統廣播是 android.intent.action.CONFIGURATION_CHANGED 當前裝置設定改變時都會發送這個廣播,要注意的是 這個廣播只能在java程式碼中註冊,不能再xml檔案中註冊,一定要注意 使用方式: 首先定義接收廣播類的物件 privateMyBroadcastReceivebroadcastReceive; 然後 在 onCreate函式中 註冊
最後,在AndroidManifest.xml中新增許可權 <uses-permissionandroid:name= "android.permission.CHANGE_CONFIGURATION"/>
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=