Java --- Bluetooth Device & Service Discovery Code examples
来源:互联网 发布:jquery.min.js下载1.9 编辑:程序博客网 时间:2024/05/20 20:19
import java.io.IOException;import java.util.Vector;import javax.bluetooth.DeviceClass;import javax.bluetooth.DiscoveryAgent;import javax.bluetooth.DiscoveryListener;import javax.bluetooth.LocalDevice;import javax.bluetooth.RemoteDevice;import javax.bluetooth.ServiceRecord;/** * Class that discovers all bluetooth devices in the neighborhood and displays their name and * bluetooth address. */public class BluetoothDeviceDiscovery implements DiscoveryListener { // object used for waiting private static Object lock = new Object(); // vector containing the devices discovered private static Vector<RemoteDevice> vecDevices = new Vector<RemoteDevice>(); /** * Lists nearby bluetooth devices * * @return */ public void listDevices() throws IOException { // display local device address and name LocalDevice localDevice = LocalDevice.getLocalDevice(); System.out.println("Address: " + localDevice.getBluetoothAddress()); System.out.println("Name: " + localDevice.getFriendlyName()); // find devices DiscoveryAgent agent = localDevice.getDiscoveryAgent(); System.out.println("Starting device inquiry..."); agent.startInquiry(DiscoveryAgent.GIAC, this); // avoid callback conflicts try { synchronized (lock) { lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Device Inquiry Completed. "); // print all devices in vecDevices int deviceCount = vecDevices.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 (int i = 0; i < deviceCount; i++) { RemoteDevice remoteDevice = (RemoteDevice) vecDevices.elementAt(i); try { System.out.println((i + 1) + ". " + remoteDevice.getBluetoothAddress() + " (" + remoteDevice.getFriendlyName(true) + ")"); } catch (IOException ioe) { ioe.printStackTrace(); } } } } /** * @return the vecDevices */ public static Vector<RemoteDevice> getVecDevices() { return vecDevices; } /** * This call back method will be called for each discovered bluetooth devices. */ public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { System.out.println("Device discovered: " + btDevice.getBluetoothAddress()); // add the device to the vector if (!vecDevices.contains(btDevice)) { vecDevices.addElement(btDevice); } } // no need to implement this method since services are not being discovered public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { } // no need to implement this method since services are not being discovered public void serviceSearchCompleted(int transID, int respCode) { } /** * This callback method will be called when the device discovery is completed. */ public void inquiryCompleted(int discType) { synchronized (lock) { lock.notify(); } switch (discType) { case DiscoveryListener.INQUIRY_COMPLETED: System.out.println("INQUIRY_COMPLETED"); break; case DiscoveryListener.INQUIRY_TERMINATED: System.out.println("INQUIRY_TERMINATED"); break; case DiscoveryListener.INQUIRY_ERROR: System.out.println("INQUIRY_ERROR"); break; default: System.out.println("Unknown Response Code"); break; } }// end method}
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.util.Vector;import javax.bluetooth.DeviceClass;import javax.bluetooth.DiscoveryAgent;import javax.bluetooth.DiscoveryListener;import javax.bluetooth.LocalDevice;import javax.bluetooth.RemoteDevice;import javax.bluetooth.ServiceRecord;import javax.bluetooth.UUID;/** * * Class that discovers all bluetooth devices in the neighborhood, * * Connects to the chosen device and checks for the presence of OBEX push service in it. and * displays their name and bluetooth address. * * */public class BluetoothServiceDiscovery implements DiscoveryListener { // object used for waiting private static Object lock = new Object(); // vector containing the devices discovered private static Vector<RemoteDevice> vecDevices = new Vector<RemoteDevice>(); // device connection address private static String connectionURL = null; /** * Lists nearby bluetooth device services */ public void listServices() throws IOException { // display local device address and name LocalDevice localDevice = LocalDevice.getLocalDevice(); System.out.println("Address: " + localDevice.getBluetoothAddress()); System.out.println("Name: " + localDevice.getFriendlyName()); // find devices DiscoveryAgent agent = localDevice.getDiscoveryAgent(); System.out.println("Starting device inquiry..."); agent.startInquiry(DiscoveryAgent.GIAC, this); // avoid callback conflicts try { synchronized (lock) { lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("Device Inquiry Completed. "); // print all devices in vecDevices int deviceCount = vecDevices.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 (int i = 0; i < deviceCount; i++) { RemoteDevice remoteDevice = (RemoteDevice) vecDevices.elementAt(i); try { System.out.println((i + 1) + ". " + remoteDevice.getBluetoothAddress() + " (" + remoteDevice.getFriendlyName(true) + ")"); } catch (IOException ioe) { ioe.printStackTrace(); } } } // prompt user System.out.print("Choose the device to search for Obex Push service : "); BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in)); String chosenIndex = bReader.readLine(); int index = Integer.parseInt(chosenIndex.trim()); // check for obex service RemoteDevice remoteDevice = (RemoteDevice) vecDevices.elementAt(index - 1); UUID[] uuidSet = new UUID[1]; uuidSet[0] = new UUID("1105", true); System.out.println("\nSearching for service..."); agent.searchServices(null, uuidSet, remoteDevice, this); // avoid callback conflicts try { synchronized (lock) { lock.wait(); } } catch (InterruptedException e) { e.printStackTrace(); } // notify if (connectionURL == null) { System.out.println("Device does not support Object Push."); } else { System.out.println("Device supports Object Push."); } } /** * Called when a bluetooth device is discovered. Used for device search. */ public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { // add the device to the vector if (!vecDevices.contains(btDevice)) { vecDevices.addElement(btDevice); } } /** * Called when a bluetooth service is discovered. Used for service search. */ public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { if (servRecord != null && servRecord.length > 0) { connectionURL = servRecord[0].getConnectionURL(0, false); } synchronized (lock) { lock.notify(); } } /** * Called when the service search is over. */ public void serviceSearchCompleted(int transID, int respCode) { synchronized (lock) { lock.notify(); } } /** * Called when the device search is over. */ public void inquiryCompleted(int discType) { synchronized (lock) { lock.notify(); } }// end method}// end class
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.util.Vector;import javax.bluetooth.DeviceClass;import javax.bluetooth.DiscoveryAgent;import javax.bluetooth.DiscoveryListener;import javax.bluetooth.LocalDevice;import javax.bluetooth.RemoteDevice;import javax.bluetooth.ServiceRecord;import javax.bluetooth.UUID;import javax.microedition.io.Connector;import javax.microedition.io.StreamConnection;import data.model.Node;import data.parser.DataParser;/** * A simple SPP client that connects with an SPP server */public class SimpleSPPClient implements DiscoveryListener {// object used for waitingprivate static Object lock = new Object();// vector containing the devices discoveredprivate static Vector<RemoteDevice> vecDevices = new Vector<RemoteDevice>();// device connection addressprivate static String connectionURL = null;/** * runs a bluetooth client that sends a string to a server and prints the * response */public void runClient() throws IOException {// display local device address and nameLocalDevice localDevice = LocalDevice.getLocalDevice();System.out.println("Address: " + localDevice.getBluetoothAddress());System.out.println("Name: " + localDevice.getFriendlyName());// find devicesDiscoveryAgent agent = localDevice.getDiscoveryAgent();System.out.println("Starting device inquiry...");agent.startInquiry(DiscoveryAgent.GIAC, this);// avoid callback conflictstry {synchronized (lock) {lock.wait();}} catch (InterruptedException e) {e.printStackTrace();}System.out.println("Device Inquiry Completed. ");// print all devices in vecDevicesint deviceCount = vecDevices.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 (int i = 0; i < deviceCount; i++) {RemoteDevice remoteDevice = (RemoteDevice) vecDevices.elementAt(i);try {System.out.println((i + 1) + ". "+ remoteDevice.getBluetoothAddress() + " ("+ remoteDevice.getFriendlyName(true) + ")");} catch (IOException ioe) {ioe.printStackTrace();}}}// prompt userSystem.out.print("Choose the device to search for service : ");BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));String chosenIndex = bReader.readLine();int index = Integer.parseInt(chosenIndex.trim());// check for servicesRemoteDevice remoteDevice = (RemoteDevice) vecDevices.elementAt(index - 1);UUID[] uuidSet = new UUID[1];uuidSet[0] = new UUID("1101", true); // serial, SPP// uuidSet[0] = new UUID("0003", true); // rfcomm// uuidSet[0] = new UUID("1106", true); // obex file transfer// uuidSet[0] = new UUID("1105", true); // obex obj pushSystem.out.println("\nSearching for services...");agent.searchServices(null, uuidSet, remoteDevice, this);// avoid callback conflictstry {synchronized (lock) {lock.wait();}} catch (InterruptedException e) {e.printStackTrace();}// checkif (connectionURL == null) {System.out.println("Device does not support Service.");System.exit(0);}// connect to the serverStreamConnection streamConnection = null;try {System.out.println("Connected to server. \nNow start reading data from " + connectionURL);streamConnection = (StreamConnection) Connector.open(connectionURL);System.out.println("open connection ok!");InputStream inStream = streamConnection.openInputStream();//DataParser dParser = new DataParser(inStream);//dParser.Parse();Node node = new Node(inStream);node.readFromPort();} catch (Exception e) {e.printStackTrace();System.exit(0);}System.out.println("End connection to server.");}// methods of DiscoveryListenerpublic void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) {// add the device to the vectorif (!vecDevices.contains(btDevice)) {vecDevices.addElement(btDevice);}}// implement this method since services are not being discoveredpublic void servicesDiscovered(int transID, ServiceRecord[] servRecord) {if (servRecord != null && servRecord.length > 0) {connectionURL = servRecord[0].getConnectionURL(0, false);}synchronized (lock) {lock.notify();}}// implement this method since services are not being discoveredpublic void serviceSearchCompleted(int transID, int respCode) {synchronized (lock) {lock.notify();}}public void inquiryCompleted(int discType) {synchronized (lock) {lock.notify();}}// end method}
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;import java.io.OutputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import javax.bluetooth.*;import javax.microedition.io.*;/** * Class that implements an SPP Server which accepts single line of message from * an SPP client and sends a single line of response to the client. */public class SimpleSPPServer {/** * runs a bluetooth server that accepts a string from a client and sends a * response */public void runServer() throws IOException {// display local device address and nameLocalDevice localDevice = LocalDevice.getLocalDevice();System.out.println("Address: " + localDevice.getBluetoothAddress());System.out.println("Name: " + localDevice.getFriendlyName());// SimpleSPPServer sampleSPPServer = new SimpleSPPServer();// sampleSPPServer.startServer();this.startServer();} // runServer// start serverprivate void startServer() throws IOException {// Create a UUIDUUID uuid = new UUID("1101", true); // serial, SPP// UUID uuid = new UUID("1105", true); // obex obj push// UUID uuid = new UUID("0003", true); // rfcomm// UUID uuid = new UUID("1106", true); // obex file transfer// Create the service urlString connectionString = "btspp://localhost:" + uuid+ ";name=Sample SPP Server";// open server urlStreamConnectionNotifier streamConnNotifier = (StreamConnectionNotifier) Connector.open(connectionString);// Wait for client connectionSystem.out.println("\nServer Started. Waiting for clients to connect...");StreamConnection connection = streamConnNotifier.acceptAndOpen();// connectSystem.out.println("Connecting to client...");RemoteDevice dev = RemoteDevice.getRemoteDevice(connection);try {System.out.println("Remote device address: "+ dev.getBluetoothAddress());System.out.println("Remote device name: "+ dev.getFriendlyName(true));} catch (IOException ioe) {ioe.printStackTrace();}// read string from spp client// InputStream inStream = connection.openInputStream();// BufferedReader bReader = new BufferedReader(new// InputStreamReader(inStream));// String lineRead = bReader.readLine();// System.out.println("TEST"+lineRead);// read string from spp clientThread recvT = new Thread(new recvLoop(connection));recvT.start();// send response to spp client// OutputStream outStream = connection.openOutputStream();// PrintWriter pWriter = new PrintWriter(new// OutputStreamWriter(outStream));// pWriter.write("Response String from SPP Server\r\n");// pWriter.flush();// send response to spp client// Thread sendT = new Thread(new sendLoop(connection));// sendT.start();// close connection// pWriter.close();// streamConnNotifier.close();System.out.println("\nServer threads started");while (true) {try {Thread.sleep(2000);// System.out.println("\nServer looping.");} catch (InterruptedException e) {e.printStackTrace();}}} // startServerprivate static class recvLoop implements Runnable {private StreamConnection connection = null;private InputStream inStream = null;public recvLoop(StreamConnection c) {this.connection = c;try {this.inStream = this.connection.openInputStream();} catch (Exception e) {e.printStackTrace();}}@Overridepublic void run() {while (true) {try {BufferedReader bReader = new BufferedReader(new InputStreamReader(inStream));String lineRead = bReader.readLine();System.out.println("Server recv: " + lineRead);Thread.sleep(500);} catch (Exception e) {e.printStackTrace();}}}} // recvLoopprivate static class sendLoop implements Runnable {private StreamConnection connection = null;PrintWriter pWriter = null;public sendLoop(StreamConnection c) {this.connection = c;OutputStream outStream;try {outStream = this.connection.openOutputStream();this.pWriter = new PrintWriter(new OutputStreamWriter(outStream));} catch (IOException e) {e.printStackTrace();}}@Overridepublic void run() {while (true) {try {String line = "Response String from SPP Server\r\n"; // "\r\n"// importantpWriter.write(line);pWriter.flush();System.out.println("Server send: " + line);Thread.sleep(500);} catch (Exception e) {e.printStackTrace();}}}} // recvLoop} // class
import java.io.IOException;public class SprimeBT { /** * Main * * @param args */ // main method of the application public static void main(String[] args) throws IOException { /* * Test bed for BT classes. Set to true/false for testing */ if (false) { // scan and print nearby bluetooth devices System.out.println("\n" + "Testing BT Device Discovery" + "\n"); BluetoothDeviceDiscovery bluetoothDeviceDiscovery = new BluetoothDeviceDiscovery(); bluetoothDeviceDiscovery.listDevices(); } if (false) { // scan and print nearby bluetooth device services System.out.println("\n" + "Testing BT Service Discovery" + "\n"); BluetoothServiceDiscovery bluetoothServiceDiscovery = new BluetoothServiceDiscovery(); bluetoothServiceDiscovery.listServices(); } if (false) { // start a bluetooth server System.out.println("\n" + "Testing BT Server" + "\n"); SimpleSPPServer sppServer = new SimpleSPPServer(); sppServer.runServer(); } if (true) { // start a bluetooth client System.out.println("\n" + "Testing BT Client" + "\n"); SimpleSPPClient sppClient = new SimpleSPPClient(); sppClient.runClient(); } }// end main}// end class
0 0
- Java --- Bluetooth Device & Service Discovery Code examples
- Bluetooth Service Classes and Device Classes
- 何謂 Device Discovery
- Java Code Examples for io.jsonwebtoken.SignatureAlgorithm
- Android bluetooth start discovery analyse
- Implement Automatic Discovery in Your Java Code with Annotations
- android service discovery failed
- P2P Device Discovery流程分析
- Bluetooth Device Address
- Java Code Examples for org.jsoup.select.Elements
- Java Code Examples for org.openqa.selenium.JavascriptExecutor
- Java Code Examples for javax.net.ssl.SSLContext
- Java Code Examples for redis.clients.jedis.Jedis
- Java Code Examples for com.sun.jna.Memory
- Java Code Examples for org.apache.commons.codec.binary.Base64InputStream
- Java Code Examples for net.sf.jsqlparser.statement.select.Union
- Java Code Examples for redis.clients.jedis.Jedis.hmset()
- Java Code Examples for com.sun.net.httpserver.HttpExchange.getResponseHeaders()
- Burpsuit使用——暴力破解(Intruder入侵)
- ARToolKit安装指南—第一个程序
- 在html中使用视频
- Android中三大组件和Fragment生命周期汇总
- html中实现对图片的简单拖放
- Java --- Bluetooth Device & Service Discovery Code examples
- Colt matrix library example code
- HideFlags
- Selection
- Java --- serial port communication example codes
- ZOJ 2972 动态规划
- EditorUserBuildSettings 编辑器用户编译设置
- oracle job定时更新表中文姓名对应拼音字段
- c++实现mystring