Проверьте состояние Wi-Fi в приложении Blackberry - PullRequest
6 голосов
/ 21 сентября 2011

Я разработал приложение для устройств BlackBerry. Приложение работает нормально, если оно использует интернет через поставщика услуг передачи данных.

У меня BB 9550, и я хочу использовать свое приложение, используя Wi-Fi. Я много пробовал, но не могу получить правильный ответ, чтобы проверить состояние Wi-Fi.

Как мы можем отличить запуск нашего приложения для провайдера Wi-Fi или передачи данных?

Ответы [ 2 ]

10 голосов
/ 21 сентября 2011

Для проверки Wi-Fi подключен или нет, вам поможет следующий метод.

 public static boolean isWifiConnected()
    {
        try
        {
            if (RadioInfo.getSignalLevel(RadioInfo.WAF_WLAN) != RadioInfo.LEVEL_NO_COVERAGE)
            {
                return true;
            }
        }
        catch(Exception e)
        {
            System.out.println("Exception during get WiFi status");
        }
        return false;
    } 

, если Wi-Fi не подключен, следующие методы помогут добавить услугу передачи данных.

public static String getConnParam(){
        String connectionParameters = "";
        if (WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED) {
        // Connected to a WiFi access point
        connectionParameters = ";interface=wifi";
        } else {
        int coverageStatus = CoverageInfo.getCoverageStatus();
        ServiceRecord record = getWAP2ServiceRecord();
        if (record != null
        && (coverageStatus & CoverageInfo.COVERAGE_DIRECT) ==
        CoverageInfo.COVERAGE_DIRECT) {
        // Have network coverage and a WAP 2.0 service book record
        connectionParameters = ";deviceside=true;ConnectionUID="
        + record.getUid();
        } else if ((coverageStatus & CoverageInfo.COVERAGE_MDS) ==
        CoverageInfo.COVERAGE_MDS) {
        // Have an MDS service book and network coverage
        connectionParameters = ";deviceside=false";
        } else if ((coverageStatus & CoverageInfo.COVERAGE_DIRECT) ==
        CoverageInfo.COVERAGE_DIRECT) {
        // Have network coverage but no WAP 2.0 service book record
        connectionParameters = ";deviceside=true";
        }

    }
        return connectionParameters;
    }
        private static  ServiceRecord getWAP2ServiceRecord() {
            ServiceBook sb = ServiceBook.getSB();
            ServiceRecord[] records = sb.getRecords();
            for(int i = 0; i < records.length; i++) {
            String cid = records[i].getCid().toLowerCase();
            String uid = records[i].getUid().toLowerCase();

            if (cid.indexOf("wptcp") != -1 &&
            uid.indexOf("wifi") == -1 &&
            uid.indexOf("mms") == -1) {
            return records[i];
            }
            }
            return null;
            }

Пример использования вышеуказанных методов.

String connParams=(isWifiConnected())?";interface=wifi":getConnParam();

Надеюсь, это поможет вам

3 голосов
/ 21 сентября 2011

попробуйте это:

private static String getParameters() {
    if (GetWiFiCoverageStatus()) {
        return ";deviceside=true;interface=wifi";
    }
    else {
        return yourParametersForEdge
    }
}

private static boolean GetWiFiCoverageStatus()  {
    if((WLANInfo.getWLANState() == WLANInfo.WLAN_STATE_CONNECTED)) {
        return true;
    } 
    else 
        return false;           
}

И когда вам нужно подключиться, вам нужно добавить параметры в URL:

yourUrl = yourUrl + getParameters();
...