Wifi Включение трансляции с опозданием - PullRequest
3 голосов
/ 20 марта 2012

У меня есть виджет, который я пытаюсь использовать для включения / выключения Wi-Fi, а также отображать некоторую дополнительную информацию.Я хочу показать переходный значок песочных часов, когда Wifi включен / отключен, поэтому я слушаю намерение android.net.wifi.WIFI_STATE_CHANGED.

Когда это намерение поймано, я вызываю функцию onUpdate виджетаи в этом у меня есть этот блок кода для изменения отображаемого изображения:

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
}

А вот мой код для перехвата кликов и изменений состояния Wi-Fi:

@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_ENABLING до тех пор, пока непосредственно перед тем, как состояние не изменится на WIFI_STATE_ENABLED.

В большинстве случаев виджет работает нормально на моем планшете и телефоне моего соседа по комнате, но не на моем телефоне.Однако я не хочу выпускать его, пока не смогу быть более уверенным в его производительности.Есть идеи?

1 Ответ

0 голосов
/ 27 марта 2012

Может быть, после Gingerbread-версии было больше настроек.Что вы можете сделать сейчас, это проверить версию для Android, и если она имеет размер в ГБ, вам понадобится взломать ее.

Вы можете проверить WIFI_STATE_CHANGED_ACTION и получить предыдущие / следующие состояния, используя

EXTRA_WIFI_STATE EXTRA_PREVIOUS_WIFI_STATE

...