Encontrando os dispositivos móveis disponíveis – J2ME

Veja nesta dica como listar os dispositivos que estão remotamente disponíveis para o dispositivo local.

Encontrando os dispositivos móveis disponíveis – J2ME

 

O exemplo abaixo lista os dispositivos que estão remotamente disponíveis para o dispositivo local. Ele lista também os dispositivos que tem o bluetooth desligado.

 

<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.midlet.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.microedition.lcdui.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >javax.bluetooth.*;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Vector;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Hashtable;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.util.Enumeration;</SPAN>
<B><SPAN lang=EN-US >import </SPAN></B><SPAN lang=EN-US >java.io.IOException;</SPAN>

<B><SPAN lang=EN-US >public class </SPAN></B><SPAN lang=EN-US >BluetoothMidlet </SPAN><B><SPAN lang=EN-US >extends </SPAN></B><SPAN lang=EN-US >MIDlet </SPAN><B><SPAN lang=EN-US >implements </SPAN></B>
<SPAN lang=EN-US >CommandListener, Runnable, DiscoveryListener {</SPAN>

<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Display display;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Command discover,exit;</SPAN>
<SPAN lang=EN-US >LocalDevice local;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >DiscoveryAgent discoveryAgent;</SPAN>
<B><SPAN lang=EN-US >private </SPAN></B><SPAN lang=EN-US >Hashtable bluetoothDevices = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Hashtable();</SPAN>
<SPAN lang=EN-US >List deviceList;</SPAN>

<B><SPAN lang=EN-US >public </SPAN></B><SPAN lang=EN-US >BluetoothMidlet() {</SPAN>

<SPAN lang=EN-US >display = Display.getDisplay(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >discover = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Encontrar"</SPAN><SPAN lang=EN-US >,Command.SCREEN, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >exit = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Command(</SPAN><SPAN lang=EN-US >"Sair"</SPAN><SPAN lang=EN-US >,Command.EXIT, </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >);</SPAN>

<SPAN lang=EN-US >// Lista de dispositivosDevice List</SPAN>
<SPAN lang=EN-US >deviceList = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >List(</SPAN><SPAN lang=EN-US >"Selecione o dispositivo"</SPAN><SPAN lang=EN-US >, List.IMPLICIT);</SPAN>
<SPAN lang=EN-US >deviceList.addCommand(exit);</SPAN>
<SPAN lang=EN-US >deviceList.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>

<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >startApp() {</SPAN>

<SPAN lang=EN-US >Form form = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Form(</SPAN><SPAN lang=EN-US >"Devices"</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >form.addCommand(discover);</SPAN>
<SPAN lang=EN-US >form.addCommand(exit);</SPAN>
<SPAN lang=EN-US >form.setCommandListener(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >display.setCurrent(form);</SPAN>

<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >pauseApp() {}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >boolean </SPAN></B><SPAN lang=EN-US >unconditional) {}</SPAN>

<B><SPAN lang=EN-US >private void </SPAN></B><SPAN lang=EN-US >doBluetoothDiscovery() {</SPAN>

<SPAN lang=EN-US >Thread t = </SPAN><B><SPAN lang=EN-US >new </SPAN></B><SPAN lang=EN-US >Thread(</SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >t.start();</SPAN>

<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >// Implementa Runnable</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >run() {</SPAN>

<SPAN lang=EN-US >bluetoothDiscovery();</SPAN>

<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >printString(String s) {</SPAN>

<SPAN lang=EN-US >System.out.println(s);</SPAN>

<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >private void </SPAN></B><SPAN lang=EN-US >bluetoothDiscovery() {</SPAN>

<SPAN lang=EN-US >LocalDevice localDevice;</SPAN>

<B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN>

<SPAN lang=EN-US >localDevice = LocalDevice.getLocalDevice();</SPAN>

<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(BluetoothStateException e) {</SPAN>

<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"BluetoothStateException: " </SPAN><SPAN lang=EN-US >+ e);</SPAN>
<B><SPAN lang=EN-US >return</SPAN></B><SPAN lang=EN-US >;</SPAN>

<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >discoveryAgent = localDevice.getDiscoveryAgent();</SPAN>

<SPAN lang=EN-US >RemoteDevice devices[];</SPAN>

<B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN>

<SPAN lang=EN-US >devices = discoveryAgent.retrieveDevices(DiscoveryAgent.CACHED);</SPAN>

<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(devices != </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN>

<B><SPAN lang=EN-US >for </SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i=</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; i < devices.length; i++) {</SPAN>
<SPAN lang=EN-US >bluetoothDevices.put(devices[i].getFriendlyName(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >), </SPAN>
<SPAN lang=EN-US >devices[i]);</SPAN>

<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"Device (cached): " </SPAN><SPAN lang=EN-US >+ d</SPAN>
<SPAN lang=EN-US >evices[i].getFriendlyName(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >) +</SPAN>
<SPAN lang=EN-US >" " </SPAN><SPAN lang=EN-US >+ devices[i].getBluetoothAddress() );</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >devices = discoveryAgent.retrieveDevices(DiscoveryAgent.PREKNOWN);</SPAN>

<B><SPAN lang=EN-US >if </SPAN></B><SPAN lang=EN-US >(devices != </SPAN><B><SPAN lang=EN-US >null</SPAN></B><SPAN lang=EN-US >) {</SPAN>

<B><SPAN lang=EN-US >for </SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i=</SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; i < devices.length; i++) {</SPAN>

<SPAN lang=EN-US >bluetoothDevices.put(devices[i].getFriendlyName(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >), </SPAN>
<SPAN lang=EN-US >devices[i]);</SPAN>

<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"Device (cached): " </SPAN><SPAN lang=EN-US >+ </SPAN>
<SPAN lang=EN-US >devices[i].getFriendlyName(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >) +</SPAN>
<SPAN lang=EN-US >" " </SPAN><SPAN lang=EN-US >+ devices[i].getBluetoothAddress() );</SPAN>

<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(IOException e) {</SPAN>
<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"Exception (b2): " </SPAN><SPAN lang=EN-US >+ e);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN>

<SPAN lang=EN-US >discoveryAgent.startInquiry(DiscoveryAgent.GIAC, </SPAN><B><SPAN lang=EN-US >this</SPAN></B><SPAN lang=EN-US >);</SPAN>

<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(BluetoothStateException e) {</SPAN>
<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"Exception (b3): " </SPAN><SPAN lang=EN-US >+ e);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"retorna de bluetoothDiscovery()"</SPAN><SPAN lang=EN-US >);</SPAN>

<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >commandAction(Command c, Displayable d) {</SPAN>

<B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(c == exit) {</SPAN>
<SPAN lang=EN-US >notifyDestroyed();</SPAN>
<SPAN lang=EN-US >destroyApp(</SPAN><B><SPAN lang=EN-US >true</SPAN></B><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >if</SPAN></B><SPAN lang=EN-US >(c == discover) {</SPAN>
<SPAN lang=EN-US >doBluetoothDiscovery();</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >private void </SPAN></B><SPAN lang=EN-US >bluetoothCopyDeviceTableToList() {</SPAN>

<B><SPAN lang=EN-US >for </SPAN></B><SPAN lang=EN-US >(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >i=deviceList.size(); i > </SPAN><SPAN lang=EN-US >0</SPAN><SPAN lang=EN-US >; i--) {</SPAN>
<SPAN lang=EN-US >deviceList.delete(i-</SPAN><SPAN lang=EN-US >1</SPAN><SPAN lang=EN-US >);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >for </SPAN></B><SPAN lang=EN-US >(Enumeration e = bluetoothDevices.keys(); e.hasMoreElements(); ) {</SPAN>

<B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN>

<SPAN lang=EN-US >String name = (String) e.nextElement();</SPAN>
<SPAN lang=EN-US >deviceList.append( name, </SPAN><B><SPAN lang=EN-US >null </SPAN></B><SPAN lang=EN-US >);</SPAN>

<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(Exception exception) {</SPAN>
<SPAN lang=EN-US >}</SPAN>
<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >display.setCurrent(deviceList);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >// ************************************************</SPAN>
<SPAN lang=EN-US >// Implementa BT DiscoveryListener</SPAN>
<SPAN lang=EN-US >// ************************************************</SPAN>
<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {</SPAN>

<B><SPAN lang=EN-US >try </SPAN></B><SPAN lang=EN-US >{</SPAN>

<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"deviceDisc: " </SPAN><SPAN lang=EN-US >+ btDevice.getFriendlyName(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >));</SPAN>

<SPAN lang=EN-US >// Adiciona o dispositivo</SPAN>
<SPAN lang=EN-US >bluetoothDevices.put(btDevice.getFriendlyName(</SPAN><B><SPAN lang=EN-US >false</SPAN></B><SPAN lang=EN-US >), btDevice);</SPAN>

<SPAN lang=EN-US >} </SPAN><B><SPAN lang=EN-US >catch </SPAN></B><SPAN lang=EN-US >(Exception e) {</SPAN>
<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"Exception (b4): " </SPAN><SPAN lang=EN-US >+ e);</SPAN>
<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >servicesDiscovered(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >transID, ServiceRecord[] servRecord) {</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >serviceSearchCompleted(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >transID, </SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >respCode) {</SPAN>
<SPAN lang=EN-US >}</SPAN>

<B><SPAN lang=EN-US >public void </SPAN></B><SPAN lang=EN-US >inquiryCompleted(</SPAN><B><SPAN lang=EN-US >int </SPAN></B><SPAN lang=EN-US >discType) {</SPAN>

<SPAN lang=EN-US >printString(</SPAN><SPAN lang=EN-US >"inquiryCompleted! " </SPAN><SPAN lang=EN-US >+ discType);</SPAN>
<SPAN lang=EN-US >bluetoothCopyDeviceTableToList();</SPAN>

<SPAN lang=EN-US >}</SPAN>

<SPAN lang=EN-US >// ************************************************</SPAN>
<SPAN lang=EN-US >// ************************************************</SPAN>
<SPAN lang=EN-US >}</SPAN>

Artigos relacionados