<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      安卓情景模式開發 控制GPS/WIFI/藍牙/飛行模式 及個人測試

      1     private static boolean getGpsState(Context context) {  
      2         ContentResolver resolver = context.getContentResolver();  
      3         boolean open = Settings.Secure.isLocationProviderEnabled(resolver,  
      4                 LocationManager.GPS_PROVIDER);  
      5       textview.setText("getGpsState:" + open);  
      6         return open;  
      7     } 

      上面是檢測GPS狀態,不需要權限,采用如下方法,然后檢測GPS狀態確實有所改變,但是在模擬器里的GPS開關處還是老樣子,不變。因沒有進行GPS定位測試,無法肯定是否確實開啟GPS。(以下內容摘自http://www.189works.com/article-47762-1.html )

      對于android上GPS的控制,官方提供了相關的API 

       Settings.Secure.setLocationProviderEnabled(getContentResolver(), LocationManager.GPS_PROVIDER, true); 

      但是當我們調用setLocationProviderEnabled方法后,系統會拋出異常提示需要android.permission.WRITE_SECURE_SETTINGS的權限,即便在mainfest 中添加該權限的請求也是一樣。setLocationProviderEnabled這個方法需要root的權限,要使這個代碼能執行,程序就必須是系統的app,即安裝在/system/app下;或者是請求root權限,這樣除了廠商能將自己的app安裝在/system/app 之下外,只能是需要請求root權限了。

      百度了一下,有解決辦法,但是說的不太清除,而且直接copy他們的代碼,運行后gps狀態也沒有改變。而且也沒有說明其原理。

       其實除了使用  Settings.Secure.setLocationProviderEnabled 這個方法之外,還有一個方法就是使用系統自帶的電量控制Widget來更改GPS的狀態。

       具體代碼如下: 

       

      Intent intent = new Intent();
      intent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
      intent.addCategory("android.intent.category.ALTERNATIVE");
      intent.setData(Uri.parse("custom:3"));
      context.sendBroadcast(intent);

       

       

       這段代碼是什么意思呢?其實就是通過intent將消息發給com.android.settings.widget.SettingsAppWidgetProvider去處理,因為這個是系統自帶的程序,所以他擁有root權限。

       那 Uri.parse("custom:3") 又是什么意思呢,其實custom:3就是電量控制插件上對應的各個按鈕,通過查看改代碼可以知道各個id的情況

       

      private static final int BUTTON_BLUETOOTH = 4;
      private static final int BUTTON_BRIGHTNESS = 1;
      private static final int BUTTON_GPS = 3;
      private static final int BUTTON_SYNC = 2;
      private static final int BUTTON_WIFI = 0; 

       

      這樣就可以通過給 com.android.settings.widget.SettingsAppWidgetProvider 發送消息實現更改GPS狀態了。同時,更改其他系統設設置的狀態也可以通過這個方法實現。

       

       

      接下來控制WIFI的開關就很容易了,只要簡單調用一下代碼就可以實現了

       

      WifiManager manager =null;
      manager = (WifiManager)context.getSystemService(Context.WIFI_SERVICE);
      manager.setWifiEnabled(false);
      manager.setWifiEnabled(true); 

       

       

       控制藍牙的開關

      BluetoothAdapter bluetoothadapter = BluetoothAdapter.getDefaultAdapter();
      bluetoothadapter.disable();
      bluetoothadapter.enable(); 

       

      控制飛行模式,谷歌沒有提供相關的api,但是我們可以通過intent廣播來實現

       

      Intent intent;
      Settings.System.putInt(context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON, enabled ? 1 : 0);
      intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED);
      intent.putExtra("state", enabled);
      context.sendBroadcast(intent);

       

      這樣,我們就完成了情景模式中控制GPS/WIFI/藍牙/飛行模式 的功能。

      posted @ 2012-08-06 15:27  qishangui  閱讀(633)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 九九热在线视频免费播放| 丰满少妇特黄一区二区三区| 国产精品中文字幕观看| 青川县| 美女一区二区三区亚洲麻豆| 极品尤物被啪到呻吟喷水| 国产精品色哟哟在线观看| 久久香蕉国产线看观看怡红院妓院 | 色琪琪丁香婷婷综合久久| 中文字幕亚洲综合久久| 精品一区二区三区日韩版| 日韩有码中文在线观看| 非会员区试看120秒6次| 国产一区二区三区18禁| 国产成人综合欧美精品久久| 国产成人综合色在线观看网站 | 亚洲av中文一区二区| 91高清免费国产自产拍| 精品久久久久久国产| 色吊丝免费av一区二区| 中文字幕av无码免费一区| 毛片tv网站无套内射tv网站| 国产色婷婷亚洲99精品小说| 亚洲人成网站77777在线观看| 国内揄拍国内精品少妇| 国产高清av首播原创麻豆| 久久亚洲精品国产精品婷婷| 开心一区二区三区激情| 国产精品一区二区三区av| 熟女丝袜潮喷内裤视频网站| 亚洲综合成人一区二区三区| 小嫩批日出水无码视频免费| 亚洲熟妇自偷自拍另欧美| 蜜臀av一区二区三区在线| 亚洲色偷偷色噜噜狠狠99| 韩国三级网一区二区三区| 成人免费乱码大片a毛片| 亚洲最大天堂在线看视频| 亚洲性日韩精品一区二区三区| 中文字幕成人精品久久不卡| 综合色天天久久|