Android wifi休眠戦略

7131 ワード

本論は次から次へhttp://blog.csdn.net/wwwwap2008/article/details/51783138
最近プロジェクトの中で1段のlogcatを発見しました。W/Settings: Setting wifi_sleep_policy has moved from android.provider.Settings.System to android.provider.Settings.Global, value is unchanged.は後に次のコードに位置づけられます。
    /**
     * @brief           wifi    
     * @param context        
     */ 
    public static void setWifiDormancy()
    {
       Context context = MyApplication.getInstance();   
       try {
           int value = Settings.System.getInt(context.getContentResolver(), Settings.System.WIFI_SLEEP_POLICY,  Settings.System.WIFI_SLEEP_POLICY_DEFAULT);
           PreferenceMgr.getInstance().setIntConfigValue(Constants.CONFIG_WIFI_SLEEP_POLICY_DEFAULT, value);
           if(Settings.System.WIFI_SLEEP_POLICY_NEVER != value)
           {
              Settings.System.putInt(context.getContentResolver(), Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);
              Log.i(TAG, "setWifiDormancy->value = " + Settings.System.WIFI_SLEEP_POLICY_NEVER);
           }
       } catch (Exception e) {
           LogUtil.e(TAG, "setWifiDormancy->exception: %s", e.getMessage());
       }
    }
ロゴマークによって分かります。私のプロジェクトの中のコードは有効ではありません。以下のような文章を調べたらとても役に立ちます。だから私のブログに転送します。
今日は一つのバグを修正して、AインターフェースでBluetoothを開いて、デバイスを接続して、データの転送を開始しました。この時、ページBを閉じてAに戻ると、Bluetoothが切断され、logsログは以下の通りです。02-17:55:49.024 W/Settings:Setting wifi_sleep_policy has moved from android.provider.Settings.System to android.provider.Settings.Global、value is unchanged.02-17:55:49.026 W/System.err:java.io.IOExptioion:bt sockclosed、rern 1.rernrn 7.rern 1.rerern.rern.Blint.Blint 7 7 7 7.reint.reint.reint.reint.Blint.Blint.Blint.Blint.Blint.Blint.Blint.Blint.Blint.Blototototototototuetooth Sockett.java:508)02-17 10:55:49.058 W/System.err:at android.bluetooth.Bluetooth InputStream.read(BluetoothInputStream.java:60)02-17:55:49.058 W/System.err:at xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx. xxxxxxxxxxxxx. A. A. A. Aadreta(49 9 9 9 9 9 9 9.Aadreaaaata(49 9 9 9 9 9 9 9 9 9 9.AAAadreaaaaaaaaata( 02−1710:55:49.059 W/System.err:axx.A.xxx 2.run(A.java:285)02-17 10:55:49.059 W/System.err:at java.lang.Thread.run(Thread.java:818)02-17:55:49.129 I/Timeline:Timeline:Activity_idle id:android.os.BinderProxy@a41b2b9time:63154582 02-17 10:55:49.92 I/View Root Impl:View Root’s Touch Event:ACT ION_DOWN 02-17 10:55:50.05 I/View RootImpl:View Root’s Touch Event:ACT ION_UP斜体の部分は私が疑問に思うところです。ブルートゥースが切れた原因だと思います。
セットアップwifisleep_policy has moved from android.provider.Settings.System to android.provider.Settings.Global,value is unchanged.
wifisleep_この設定はすでにandroid.provider.Settings.Systemからandroid.provider.Settings.Globalに移動しましたが、その値は変わりません。
それは違うバージョンのsdkによるこのヒントです。そこで先に調べたbingを記録して、
このシステムの設定の原因は、WIFIがスリープ状態でデフォルトでは接続されません。この時、接続を維持する必要がある場合、どう解決すればいいですか?WIFIをスリープ状態に設定して接続を維持します。public void WifiNever Dorrmancy(Contect mControtext){Contents Resever reolver=mContect.get ContintControver];
           int value = Settings.System.getInt(resolver, Settings.System.WIFI_SLEEP_POLICY,  Settings.System.WIFI_SLEEP_POLICY_DEFAULT);  
           final SharedPreferences prefs=PreferenceManager.getDefaultSharedPreferences(mContext);  

           Editor editor = prefs.edit();  
           editor.putInt(mContext.getString(R.string.wifi_sleep_policy_default), value);   

           editor.commit();  
           if(Settings.System.WIFI_SLEEP_POLICY_NEVER != value)  
           {  
              Settings.System.putInt(resolver, Settings.System.WIFI_SLEEP_POLICY, Settings.System.WIFI_SLEEP_POLICY_NEVER);  

           }  
           System.out.println("wifi value:"+value);  
        }  
上のコードは現在のシステムのWifi設定を保存し、彼をスリープ状態に設定してどんどん開いています。私たちはネットワークを使う必要がない時にsharedpreferencesから取り出して、修正前のモードに戻します。コードは以下の通りです。
          /**
             *   wifi  
             *
             * @param context
             */
            @SuppressWarnings("deprecation")
            public static void reductionWifiSleepPolicy(Context context) {
                SharedPreferences sp = AppContext.getSharedPreferences();
                int wifi_sleep_policy = sp.getInt("wifi_sleep_policy", 0);
                Settings.System.putInt(context.getContentResolver(),
                        android.provider.Settings.System.WIFI_SLEEP_POLICY,
                        wifi_sleep_policy);
            }
これぐらいは大丈夫だと思います。
どのヒントから見ても、システムがandroid.provider.Settings.System.WIFI PuPOLICYという値を見つけられないので、android.provider.Settings.Global.WIFI(uSLEEPuPOLICY)に変更したのですか?
そこで私はSettings.System.WIFI PuPOLICYのソースコードを注文しました。
     /** @deprecated */
            @Deprecated
            public static final String WIFI_SLEEP_POLICY = "wifi_sleep_policy";
もう期限が切れました。何を使って代用しますか?それはアンディ・プロヴィッド・Settings.Global.WIFI(USLEEPuPOLICY)ですよね。
公式サイトに行ってみます
期限が切れました
そしてクリックしてSettings.Globalに移りました。Settings.Globalの紹介を見てください。
Global sysstem settininings、containininininininininininininininininininininininininininininininininininces aaaathththaaaththththaaat aaaaaaaaaaathaaaat allowed to write;like the the「Secure」setttttttttttttttttgs、the「Secure」setttttttttttttttttttttgs、thererettttttttgs、therereregs、thes、therererererererererererere
あなたのアプリケーションはこれらの設定を読むことができますが、書くことはできません。
つまり、sdk 17からはこれは読み取り専用です。書き込みはできません。コードに書いてもいいです。sdkであれば、判断します。sdkであれば、sdkであれば、sdkです。17はSettings.Globalですが、secureの権限が必要です。その後、manfest.xmlにこの権限を書いてください。asはこのシステムでしか使えません。使います
つまりsdk 17からはコードの設定ができません。Wi-Fiはスリープ状態で接続を維持します。
最後にこのBluetoothが切断された問題はwifiの設定とは関係がないです。しかし、今回の検索は私にいくつかのことを理解させました。今日は無駄ではありません。
参照http://developer.android.com/intl/zh-cn/reference/android/provider/Settings.System.html#putInt(android.co nt.content.Resoliver、%20 java.lang.String、%20 int)