Não há distinção e ele vai encontrar qualquer coisa que implementa a stack Bluetooth.
Se vc estudou o assunto, verá que é possível determinar a qual classe de dispositivo o mesmo pertence: impressora, desktop, camera,etc…
S
Shakall
Dá sim cara e é o mesmo codigo do PC, pode tentar que vai!
rafaelviny
importjava.io.IOException;importjava.util.Vector;importjavax.bluetooth.BluetoothStateException;importjavax.bluetooth.DeviceClass;importjavax.bluetooth.DiscoveryAgent;importjavax.bluetooth.DiscoveryListener;importjavax.bluetooth.LocalDevice;importjavax.bluetooth.RemoteDevice;importjavax.bluetooth.ServiceRecord;importjavax.microedition.lcdui.List;publicclassBluetoothDeviceDiscoveryimplementsDiscoveryListener{privatestaticObjectlock=newObject();privatestaticVectorvecDispositivos=newVector();VectorMAC=newVector();VectorNome=newVector();intdeviceCount=0;publicvoidbuscaDispositivos()throwsIOException{try{BluetoothDeviceDiscoverybluetoothDeviceDiscovery=newBluetoothDeviceDiscovery();LocalDevicelocalDevice=LocalDevice.getLocalDevice();// System.out.println("MAC: " + localDevice.getBluetoothAddress());// System.out.println("NOME : " + localDevice.getFriendlyName());DiscoveryAgentagent=localDevice.getDiscoveryAgent();System.out.println("Iniciando a busca...");agent.startInquiry(DiscoveryAgent.GIAC,bluetoothDeviceDiscovery);try{synchronized(lock){lock.wait();}}catch(InterruptedExceptione){e.printStackTrace();}System.out.println("Busca Finalizada");deviceCount=0;deviceCount=vecDispositivos.size();if(deviceCount<=0){System.out.println("No Devices Found .");}else{//print bluetooth device addresses and names in the format [ No. address (name) ]System.out.println("Bluetooth Devices: ");for(inti=0;i<deviceCount;i++){RemoteDeviceremoteDevice=(RemoteDevice)vecDispositivos.elementAt(i);System.out.println((i+1)+". "+remoteDevice.getBluetoothAddress()+" ("+remoteDevice.getFriendlyName(true)+")");try{MAC.addElement(remoteDevice.getBluetoothAddress());Nome.addElement(remoteDevice.getFriendlyName(true));System.out.println((i+1)+". "+remoteDevice.getBluetoothAddress()+" ("+remoteDevice.getFriendlyName(true)+")");}catch(IOExceptionex){ex.printStackTrace();}}}}catch(BluetoothStateExceptionex){ex.printStackTrace();}}publicVectorgetMAC(){returnMAC;}publicVectorgetNome(){returnNome;}publicintgetNumeroDispositivosDetectados(){returndeviceCount;}publicvoiddeviceDiscovered(RemoteDevicebtDevice,DeviceClasscod){System.out.println("Dispositivos Descobertos: "+btDevice.getBluetoothAddress());//add the device to the vectorif(!vecDispositivos.contains(btDevice)){vecDispositivos.addElement(btDevice);}}publicvoidservicesDiscovered(inttransID,ServiceRecord[]servRecord){}publicvoidserviceSearchCompleted(inttransID,intrespCode){}publicvoidinquiryCompleted(intdiscType){synchronized(lock){lock.notify();}switch(discType){caseDiscoveryListener.INQUIRY_COMPLETED:System.out.println("INQUIRY_COMPLETED");break;caseDiscoveryListener.INQUIRY_TERMINATED:System.out.println("INQUIRY_TERMINATED");break;caseDiscoveryListener.INQUIRY_ERROR:System.out.println("INQUIRY_ERROR");break;default:System.out.println("Unknown Response Code");break;}}}
este é o codigo que to usando, porem somente localiza o MEC e NOME do dispositivo LOCAL
S
Shakall
E o que mais tu quer? Com o Mac e o Nome tu faz tudo o que é necessario.
rafaelviny
eu quero o MAC e NOME dos dispositivos que estão AO REDOR, nao o MAC e NOME do dispositivo local
Shakall eu usei o mesmo codigo, com excessao do metodo main que eu troquei por um metodo normal
porem dai so localiza o local, com o metodo main e em um projeto que tenha o bluecouve localiza todos os dispositivos certinho
S
Shakall
Entendi, bom aqui eu uso o codigo abaixo consigo achar qualquer dipositivo bluetooth e ele monta uma lista exibindo eles, foi um sisteam teste para pegar posições de um gps. testa ae.
/* * To change this template, choose Tools | Templates * and open the template in the editor. */packageBluetooth;importTela.BluetoothGPS;importjava.io.IOException;importjava.util.Vector;importjavax.bluetooth.BluetoothStateException;importjavax.bluetooth.DeviceClass;importjavax.bluetooth.DiscoveryAgent;importjavax.bluetooth.DiscoveryListener;importjavax.bluetooth.LocalDevice;importjavax.bluetooth.RemoteDevice;importjavax.bluetooth.ServiceRecord;importjavax.bluetooth.UUID;importjavax.microedition.lcdui.AlertType;/** * * @author Shakall */publicclassBuscarextendsThreadimplementsDiscoveryListener{privateLocalDevicelocaldevice;privateDiscoveryAgentagent;privateBluetoothGPSpai;privateVectordevices;privateVectorservicos;privateVectordevicesClasses;privateRemoteDevice[]remoteDevices;publicbooleaninquiryOn=false,serviceSearchOn=false;privateServiceRecordrecord;privateinttransactionID;privateUUID[]uuidset=newUUID[]{newUUID(0x1101)};privateVectorservNames;publicBuscar(BluetoothGPSpai){servicos=newVector();devicesClasses=newVector();this.pai=pai;try{localdevice=LocalDevice.getLocalDevice();agent=localdevice.getDiscoveryAgent();devices=newVector();}catch(BluetoothStateExceptionex){ex.printStackTrace();}}publicDiscoveryAgentgetAgent(){returnagent;}publicvoidrun(){localizarDevices();}publicvoidlocalizarDevices(){remoteDevices=retrieveDevices();//verifica dispositivos já encontradosif(remoteDevices!=null&&remoteDevices.length>0){//caso nao ache nenhum começa a buscarpai.getLDispositivos().deleteAll();try{for(inti=0;i<remoteDevices.length;i++){pai.getLDispositivos().append(remoteDevices[i].getFriendlyName(false),null);}pai.switchDisplayable(null,pai.getLDispositivos());}catch(IOExceptionex){pai.getAlert().setString("Erro ao obter o nome do dispositivo!");pai.getAlert().setType(AlertType.ERROR);pai.switchDisplayable(pai.getAlert(),pai.getLDispositivos());}}else{//busca por dispositivostry{inquiryOn=true;devices.removeAllElements();agent.startInquiry(DiscoveryAgent.GIAC,this);pai.switchDisplayable(null,pai.getFAguarde());}catch(BluetoothStateExceptionex){pai.getAlert().setString("Erro ao iniciar inquiry!");pai.getAlert().setType(AlertType.ERROR);pai.switchDisplayable(pai.getAlert(),pai.getLDispositivos());}}}privateRemoteDevice[]retrieveDevices(){RemoteDevice[]rd=null;rd=agent.retrieveDevices(DiscoveryAgent.CACHED);if(rd==null){rd=agent.retrieveDevices(DiscoveryAgent.PREKNOWN);}returnrd;}publicvoiddeviceDiscovered(RemoteDevicebtDevice,DeviceClasscod){if(!devices.contains(btDevice)){devices.addElement(btDevice);devicesClasses.addElement(cod);}}publicvoidservicesDiscovered(inttransID,ServiceRecord[]servRecord){servNames=newVector();for(inti=0;i<servRecord.length;i++){//DataElement serviceNameElement = servRecord[i].getAttributeValue(0x0100);//String _serviceName = (String) serviceNameElement.getValue();//String serviceName = _serviceName.trim();//servNames.addElement(serviceName);//servNames.addElement(servRecord[i].getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false));servicos.addElement(servRecord[i]);}}publicvoidserviceSearchCompleted(inttransID,intrespCode){serviceSearchOn=false;if(servicos.size()>0){SPPClientclient=newSPPClient((ServiceRecord)servicos.elementAt(0),pai);//pai.getAlert().setString("GPS Conectado!\n" + servNames.toString());pai.getAlert().setString("GPS Conectado!");pai.switchDisplayable(pai.getAlert(),pai.getLPrincipal());pai.setCliente(client);client.start();}else{pai.switchDisplayable(null,pai.getLPrincipal());}}publicvoidinquiryCompleted(intdiscType){inquiryOn=false;switch(discType){caseINQUIRY_COMPLETED://concluido normalmente{pai.getLDispositivos().deleteAll();if(devices.size()>0){remoteDevices=newRemoteDevice[devices.size()];devices.copyInto(remoteDevices);interror=0;for(inti=0;i<remoteDevices.length;i++){try{pai.getLDispositivos().append(remoteDevices[i].getFriendlyName(false),null);}catch(IOExceptionex){if(error<4){i--;error++;}else{pai.getAlert().setString("Erro ao obter o nome do dispositivo!");pai.getAlert().setType(AlertType.ERROR);pai.switchDisplayable(pai.getAlert(),pai.getLDispositivos());return;}}}pai.switchDisplayable(null,pai.getLDispositivos());pai.setDevicesFound(remoteDevices);}else{pai.getAlert().setString("Nenhum dispositivo encontrado!");pai.getAlert().setType(AlertType.INFO);pai.switchDisplayable(pai.getAlert(),pai.getLDispositivos());}break;}caseINQUIRY_TERMINATED://cancelado manualmente{pai.getAlert().setString("Busca por dispositivos cancelada!");pai.getAlert().setType(AlertType.INFO);pai.switchDisplayable(pai.getAlert(),pai.getLDispositivos());break;}caseINQUIRY_ERROR://erro{pai.getAlert().setString("Houve um erro na busca por dispositivos!");pai.getAlert().setType(AlertType.ERROR);pai.switchDisplayable(pai.getAlert(),pai.getLDispositivos());break;}}pai.setDevicesFound(remoteDevices);}publicvoidcancelarBusca(){if(inquiryOn){agent.cancelInquiry(this);inquiryOn=false;}if(serviceSearchOn){agent.cancelServiceSearch(transactionID);serviceSearchOn=false;}}publicvoidsearchService(RemoteDevicerecord){try{pai.switchDisplayable(null,pai.getFAguarde());servicos.removeAllElements();serviceSearchOn=true;pai.switchDisplayable(null,pai.getFAguarde());agent.searchServices(null,uuidset,record,this);}catch(IOExceptionex){pai.getAlert().setString(ex.getMessage());pai.switchDisplayable(pai.getAlert(),pai.getLPrincipal());}}}
rafaelviny
obrigado Shakall, to estudando sua classe
consegui pegar os Notebooks com bluetooth que to trabalhando, agora vou atras de celulares, tentarei fazer testes na faculdade