servicediscoverer.java

来自「用于手机或其他支持蓝牙的设备上」· Java 代码 · 共 136 行

JAVA
136
字号
import javax.bluetooth.*;
import java.io.*;
import java.util.Vector;

/**
 *
 * <p>Title: ServiceDiscoverer.java</p>
 *
 * <p>Description: A handly utility class used by BluetoothProbeMidlet used
 * to find the Bluetooth services availabe on the Bluetooth devices in the
 * area.</p>
 *
 * <p>Copyright: Copyright (c) 2005</p>
 *
 * <p>By: Bruce Hopkins</p>
 *
 * @version 1.0
 */


public class ServiceDiscoverer extends Thread implements DiscoveryListener {


      UUID[] uuidSet = {new UUID(0x0003) };


	int[] attrSet = {0x0100, 0x0003, 0x0004};

	BluetoothProbeMidlet midlet = null;
	ServiceRecord serviceRecord = null;
	RemoteDevice remoteDevice = null;
	String connectionURL = null;

        /**
         * A simple constructor
         * @param midlet BluetoothProbeMidlet
         * @param remoteDevice RemoteDevice
         */
        public ServiceDiscoverer(BluetoothProbeMidlet midlet, RemoteDevice remoteDevice) {

		this.midlet = midlet;
		this.remoteDevice = remoteDevice;

	}

        /**
         * ServiceDiscoverer.java extends Thread, so the run method allows the
         * class to run in a separate thread.
         */
        public void run(){

		try {
			LocalDevice localDevice = LocalDevice.getLocalDevice();
			DiscoveryAgent discoveryAgent = localDevice.getDiscoveryAgent();

			midlet.updateStatus("\n+ "  + remoteDevice.getFriendlyName(true)  );
			discoveryAgent.searchServices(attrSet, uuidSet, remoteDevice, this);

		}
		catch(Exception e) {
			e.printStackTrace();
		}


	}

        /**
         * This method is called when a new service is discovered on a remote
         * Bluetooth device.
         * @param transID int
         * @param servRecord ServiceRecord[]
         */

	public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {

		for(int i = 0; i < servRecord.length; i++) {

	            DataElement serviceNameElement = servRecord[i].getAttributeValue(0x0100);
			String temp_serviceName = (String)serviceNameElement.getValue();
			String serviceName = temp_serviceName.trim();
			midlet.updateStatus(" -" + serviceName );

		}
	}


        /**
         * This method is called when the service search process is completed for
         * a remote Bluetooth device.
         * @param transID int
         * @param respCode int
         */

	public void serviceSearchCompleted(int transID, int respCode) {

		String searchStatus = null;

		if (respCode == DiscoveryListener.SERVICE_SEARCH_DEVICE_NOT_REACHABLE) {
			midlet.updateStatus("Device not reachable");
		}
		else if (respCode == DiscoveryListener.SERVICE_SEARCH_NO_RECORDS) {
			midlet.updateStatus("Service not available");
		}
		else if (respCode == DiscoveryListener.SERVICE_SEARCH_COMPLETED) {
			//do nothing
		}
		else if (respCode == DiscoveryListener.SERVICE_SEARCH_TERMINATED) {
			midlet.updateStatus("Service search terminated");
		}
		else if (respCode == DiscoveryListener.SERVICE_SEARCH_ERROR) {
			midlet.updateStatus("Service search error");
		}


	}

        /**
         * This method is not used, but any implementation of DiscoveryListerer.java
         * must include these methods
         * @param transID int
         * @param servRecord ServiceRecord[]
         */
    public void inquiryCompleted(int discType){}


    /**
     * This method is not used, but any implementation of DiscoveryListerer.java
     * must include these methods
     * @param transID int
     * @param servRecord ServiceRecord[]
     */

    public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod){}

}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?