}
}
try { destroyApp(false);
} catch (MIDletStateChangeException e) { e.printStackTrace(); }
public void run() { while (true) { try { Thread.sleep(500); } catch (InterruptedException e) { } checkConnected(); } }
private void checkConnected() { if(client != null) { if(client.isFoundEnd()) { stateStr.setText(\寻找结束\ }else{ stateStr.setText(\寻找主机中...\ } } }
public void setMessage(String message) { st.setText(message); }
public void setSystemMsg(String message) { systemMsg.setText(message); }
public void setConnection(BTConnection btc) { this.btc = btc; }
public void setFound(String message) { if(stateStr != null) { stateStr.setText(message);
} } }
package mini;
import java.io.IOException; import java.util.Vector;
import javax.bluetooth.BluetoothStateException; 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;
public class Client implements Runnable, DiscoveryListener { private BTMIDlet midlet; private String uuidString = \ /**搜索代理对象*/ private DiscoveryAgent agent; /**蓝牙设备列表*/ private Vector deviceList; /**搜索到的服务*/ private ServiceRecord record; private String message; private boolean foundEnd = false; public Client(BTMIDlet midlet) { this.midlet = midlet; deviceList = new Vector(); try { LocalDevice localDevice = LocalDevice.getLocalDevice(); agent = localDevice.getDiscoveryAgent();
}
} catch (BluetoothStateException e) { e.printStackTrace(); }
/**开始搜索线程*/
public void startDiscover() { foundEnd = false; Thread t = new Thread(this); t.start(); }
public void run() { //开始查找附近的蓝牙设备,该方法不会阻塞当前线程 if(agent != null) { try { agent.startInquiry(DiscoveryAgent.GIAC, this); synchronized(this) { try { this.wait(); } catch (InterruptedException e) { // } } //开始搜索服务 int n = deviceList.size(); UUID[] uuids ={new UUID(uuidString,false)}; int i = 0; while(i //创建连接 if(record != null) { //找到服务 String url record.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false); StreamConnection conn = (StreamConnection)Connector.open(url); midlet.setConnection(new BTConnection(midlet, conn)); message = \找到客户端\ midlet.setFound(message); } else { message = \找不到连接\ } } catch (BluetoothStateException e1) { message = \蓝牙出错\ } catch (IOException e) { message = \出错\ } } else { } foundEnd = true; midlet.setMessage(message); } /**查找到蓝牙设备时,底层实现自动调用该方法,该方法可以被多次回调*/ public void deviceDiscovered(RemoteDevice btDevice, DeviceClass cod) { if(cod.getMajorDeviceClass() == 0x200) { deviceList.addElement(btDevice); //记录搜索到的设备 } } /**蓝牙设备查找结束时,底层实现自动调用该方法*/ public void inquiryCompleted(int discType) { synchronized(this) { this.notifyAll(); //通知等待线程,设备搜索结束 } } /**在远程蓝牙设备中搜索到蓝牙服务结束时,底层实现自动调用该方法*/ public void serviceSearchCompleted(int transID, int respCode) { = synchronized(this) { this.notifyAll(); //通知服务搜索结束 } } /**在远程蓝牙设备中搜索到蓝牙服务时,底层实现自动调用该方法,该方法可以被多次调用*/ public void servicesDiscovered(int transID, ServiceRecord[] servRecord) { if(record == null) { record = servRecord[0]; //发现一个服务 } } public String getMessage() { return message; } public boolean isFoundEnd() { return foundEnd; } } package mini; import java.io.IOException; import javax.bluetooth.BluetoothStateException; import javax.bluetooth.DiscoveryAgent; import javax.bluetooth.LocalDevice; import javax.bluetooth.UUID; import javax.microedition.io.Connector; import javax.microedition.io.StreamConnection; import javax.microedition.io.StreamConnectionNotifier; public class Host implements Runnable{ private BTMIDlet midlet; private String uuidString = \ private UUID uuid; private LocalDevice device; private StreamConnectionNotifier service; public Host(BTMIDlet midlet) { 百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库J2ME蓝牙通话代码(2)在线全文阅读。
相关推荐: