Google Android - как выяснить, включен ли 3 г и 2 г

Ждите в цикле для полного ответа после того, как вы напишите первый кадр.

// Set read timeout to value recommended in the communication protocol specification 
// so serial port operations don't stuck.
_port.WriteTimeout = 200;
_port.ReadTimeout = 200;

public void OnClick()
{
    // Write first frame.
    _port.Write(...);
    // Now wait for the full response.

    // Expected response length. Look for the constant value from the device communication 
    // protocol specification or extract from the response header (first response bytes) if  
    // there is any specified in the protocol.
    int count = ...; 
    var buffer = new byte[count];
    var offset = 0;
    while (count > 0)
    {
        var readCount = _port.Read(buffer, offset, count);                 
        offset += readCount;
        count -= readCount;
    }
    // Now buffer contains full response or TimeoutException instance is thrown by SerialPort.
    // Check response status code and write other frames.
}

Чтобы не блокировать поток пользовательского интерфейса, вам, скорее всего, все еще нужно использовать синхронный API и Task.Run(). См. C # ожидание события и тайм-аута в последовательном порту связи обсуждение StackOverflow.

Для получения дополнительной информации проверьте Top 5 SerialPort Tips статья Кима Гамильтона.

10
задан rcorbellini 17 April 2013 в 13:58
поделиться

2 ответа

2G / 3G

Чтобы определить тип вашей сети, используйте:

TelephonyManager.getNetworkType();

вот пример кода:

bool is3G = (manager.getNetworkType() == TelephonyManager.NETWORK_TYPE_UMTS);

Документы для класса можно найти по адресу: TelephonyManager


Вкл / Выкл

Чтобы проверить, включено или выключено ваше телефонное радио:

ServiceState.getState();

Чтобы установить его, используйте:

ServiceState.setState(STATE_POWER_OFF);

Неясно, установлен ли setState Метод существует на всех устройствах и функций во всех государствах. Для этого метода нет документации. Документацию для класса можно найти по адресу: ServiceState

. Эта проблема также может иметь отношение к: http://code.google.com/p/android/issues/detail?id=1065

13
ответ дан 3 December 2019 в 22:39
поделиться

Вы также можете использовать ConnectivityManager. Примерно так:

ConnectivityManager connectivityManager =(ConnectivityManager)mContext.getSystemService(Context.CONNECTIVITY_SERVICE); 
NetworkInfo activeNetInfo = connectivityManager.getActiveNetworkInfo();
2
ответ дан 3 December 2019 в 22:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: