Query a radio's availability and change its status

You can use the RadioInfo and Radio classes to determine whether a particular radio technology is supported on a BlackBerry® device, and to turn on or turn off the radio. For more information, see the API reference for the BlackBerry® Java® SDK.
  1. Import the required classes and interfaces.
    import net.rim.device.api.system.Radio;
    import net.rim.device.api.system.RadioInfo;
  2. Retrieve a bit field of supported wireless access families.
    int intSupportedWAFs = RadioInfo.getSupportedWAFs();
  3. Check if the wireless access family that you want to use is available on the device. Perform a bitwise AND operation that combines the intSupportedWAFs bit field and the constant for the wireless access family that you want to use. If the family is available, the result will be nonzero.
    if ((intSupportedWAFs & RadioInfo.WAF_WLAN) !=0 )
    {
    
  4. Retrieve a bit field of available radios.
    int intSupportedWAFs = RadioInfo.getSupportedWAFs();
        int intActiveWAFs = RadioInfo.getActiveWAFs();
  5. Check if the radio that you want to use is turned off. If it is turned off, a bitwise AND operation applied to intActiveWAFs and the constant for the radio returns 0.
        if ((intActiveWAFs & RadioInfo.WAF_WLAN) = 0)
        {
  6. If the radio is turned off, then turn it on.
            Radio.activateWAFs(RadioInfo.WAF_WLAN);
         }
    }

Code sample: Controlling radios

import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;


public class NetworkSample extends UiApplication {
    public static void main(String[] args) 
    {
        NetworkSample app = new NetworkSample();
        app.enterEventDispatcher();
    }
    public NetworkSample() 
    {
        pushScreen(new RadioControlScreen());
    }
}


class RadioControlScreen extends MainScreen implements FieldChangeListener 
{

    boolean[] _intRadioOn = new boolean[3];
    ButtonField _btn3G, _btnCDMA, _btniDEN, _btnWiFi;

    public RadioControlScreen()
    {
        VerticalFieldManager vfm = new VerticalFieldManager(Field.FIELD_HCENTER);

        int wafs = RadioInfo.getSupportedWAFs();
        if ((wafs & RadioInfo.WAF_3GPP) != 0 )
        {
            _btn3G = new ButtonField("3G Radio");
            _btn3G.setChangeListener(this);
            vfm.add(_btn3G);
        }
        if ((wafs & RadioInfo.WAF_CDMA) != 0 )
        {
            _btnCDMA = new ButtonField("CDMA Radio");
            _btnCDMA.setChangeListener(this);
            vfm.add(_btnCDMA);
        }
        if ((wafs & RadioInfo.WAF_WLAN) != 0 )
        {
            _btnWiFi = new ButtonField("WiFi Radio");
            _btnWiFi.setChangeListener(this);
            vfm.add(_btnWiFi);
        }

        wafs = RadioInfo.getActiveWAFs();
        if ((wafs & RadioInfo.WAF_3GPP) != 0 )
        {
            _intRadioOn[0] = true;
            _btn3G.setLabel("3G Radio is on");
        }
        if ((wafs & RadioInfo.WAF_CDMA) != 0 )
        {
            _intRadioOn[1] = true;
            _btnCDMA.setLabel("CDMA Radio is on");
        }
        if ((wafs & RadioInfo.WAF_WLAN) != 0 )
        {
            _intRadioOn[2] = true;
            _btnWiFi.setLabel("WiFi Radio is on");
        }

        add(vfm);
        StandardTitleBar tb = new StandardTitleBar();
        tb.addTitle("Radio Control Demo");
        tb.addSignalIndicator();
        setTitleBar(tb);

    }


    public void fieldChanged(Field field, int context) 
    {
        if (field instanceof ButtonField)
        {
            if(field == _btn3G)
            {
                if (_intRadioOn[0])
                {
                    Radio.deactivateWAFs(RadioInfo.WAF_3GPP);
                    _btn3G.setLabel("3G Radio is off");
                    _intRadioOn[0] = false;
                } else
                {
                    Radio.activateWAFs(RadioInfo.WAF_3GPP);
                    _btn3G.setLabel("3G Radio is on");
                    _intRadioOn[0] = true;
                }
            } else if(field == _btnCDMA)
            {
                if (_intRadioOn[1])
                {
                    Radio.deactivateWAFs(RadioInfo.WAF_CDMA);
                    _btnCDMA.setLabel("CDMA Radio is off");
                    _intRadioOn[1] = false;
                } else
                {
                    Radio.activateWAFs(RadioInfo.WAF_CDMA);
                    _btnCDMA.setLabel("CDMA Radio is on");
                    _intRadioOn[1] = true;
                }
            } else if(field == _btnWiFi)
            {
                if (_intRadioOn[2])
                {
                    Radio.deactivateWAFs(RadioInfo.WAF_WLAN);
                    _btnWiFi.setLabel("WiFi Radio is off");
                    _intRadioOn[2] = false;
                } else
                {
                    Radio.activateWAFs(RadioInfo.WAF_WLAN);
                    _btnWiFi.setLabel("WiFi Radio is on");
                    _intRadioOn[2] = true;
                }
            }
        }


    }

}
Back To Top
Previous topic: Working with radios

Was this information helpful? Send us your comments.