2012-03-20 14 views
3

私はwifiを有効/無効にするために使用しようとしているウィジェットを持っているだけでなく、いくつかの追加情報を表示しています。 Wifiが有効/無効になっている間にトランジションの砂時計アイコンを表示したいので、android.net.wifi.WIFI_STATE_CHANGEDインテントを聞いています。Wifi放送が遅くなります

WifiManager wifiMan = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); 
WifiInfo wifiInfo = wifiMan.getConnectionInfo(); 

RemoteViews views = new RemoteViews("com.nickavv.cleanwidgets", R.layout.wifi_toggle_layout_large); 

supState = wifiInfo.getSupplicantState(); 
wifiState = wifiMan.getWifiState(); 

if(wifiState == WifiManager.WIFI_STATE_ENABLED) { 
    //Show enabled image 
} else if(wifiState == WifiManager.WIFI_STATE_DISABLED){ 
    //Show disabled image 
} else { 
    //Show hourglass 
} 

そして、ここでは、傍受クリックや無線LANの状態のための私のコードです:その意図は、私は、ウィジェットのにonUpdate関数を呼び出していて、その中で私が表示された画像を変更するためのコードブロックを持ってキャッチされる

変更:

@Override 
public void onReceive(Context context, Intent intent) { 
    super.onReceive(context, intent); 
    if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) { 
     if(wifiState != WifiManager.WIFI_STATE_ENABLING || wifiState != WifiManager.WIFI_STATE_DISABLING) { 
      switchToggle(context); 
     } 
    } 
    AppWidgetManager myAWM = AppWidgetManager.getInstance(context); 
    ComponentName cn = new ComponentName(context, WifiWidgetLarge.class); 
    onUpdate(context, myAWM, myAWM.getAppWidgetIds(cn)); 
} 

これは単なるトグルスイッチである小さなウィジェット、上の細かい動作しますが、より大きなウィジェット上で、まったく同じコードが正しい結果を生成しません。無効にしている間は砂時計が表示されますが、有効にしている間は表示されません。デバッグログには最終的に受信されていることが示されているため、何も表示するには遅すぎるという意図があるようです。状態がWIFI_STATE_ENABLEDに変更される直前まで、WIFI_STATE_ENABLINGで受信していないだけです。

私のタブレットとルームメイトの電話では、ウィジェットはうまく機能します。しかし、私はそのパフォーマンスをより確かめるまで、リリースしたくないです。何か案は?

+0

OSのどのバージョンは、あなたが言及したすべてのそれらのデバイス上にありますか? – louielouie

+0

私の電話のジンジャーブレッドと私のルームメイトの。アイスクリームサンドイッチを私のタブレットに入れました。 – Nick

+0

アイスクリームサンドイッチを稼働している他のルームメイトのAsus Transformer(期待どおりに動く)と私のルームメイトのAcer A500がHoneycombを走らせています。私の電話はどう違うのですか? – Nick

答えて

-1

ジンジャーブレッドバージョンの後にチューニングが追加された可能性があります。あなたが今できることは、アンドロイドバージョンを確認し、そのGBの場合は、ハックをする必要があるでしょう。

EXTRA_WIFI_STATE EXTRA_PREVIOUS_WIFI_STATEを使用して

あなたはWIFI_STATE_CHANGED_ACTIONをチェックして、前/次の状態を得ることができ

+0

私は何らかの種類のハックに頼りにしています。同じ電話機の同じコードが他のWi-Fiウィジェットでも動作しますが、このコードは動作しません – Nick

関連する問題