亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? btclient.java

?? j2me精解書籍代碼j2me源代碼很好的入門工具
?? JAVA
字號:
package com.j2medev.chapter8.bt;

import java.io.*;
import java.util.*;
import javax.bluetooth.*;
import javax.bluetooth.UUID;
import javax.microedition.io.*;

public class BTClient implements DiscoveryListener, Runnable {
    
    public static final String uuidString = "0123456789ABCDEF0123456789ABCDEF";
    public static UUID uuid;
    private LocalDevice localDevice;// 本地設(shè)備實(shí)例
    String localBTAddress;// 本地藍(lán)牙地址
    String localBTName;// 藍(lán)牙名稱
    BTClientUI ui;
    DiscoveryAgent discoveryAgent;// 發(fā)現(xiàn)代理
    Thread th;
    Thread readWorkTh;
    Thread writeWorkTh;
    StreamConnection conn;
    boolean exitFlag;
    boolean BTReady;//狀態(tài)標(biāo)記
    DataInputStream in;
    DataOutputStream out;
    String sendText = "";
    Hashtable remoteDevices = new Hashtable();// 存儲找到的遠(yuǎn)程設(shè)備
    String url = null;
    ServiceRecord serviceRecord;
    
    public BTClient(BTClientUI ui) {
        this.ui = ui;
        th = new Thread(this);
        th.start();
    }
    
    public boolean initBT() {
        boolean success = false;
        try {
            uuid = new UUID(uuidString, false);// 我們的UUID
            // 取得本地設(shè)備實(shí)例
            localDevice = LocalDevice.getLocalDevice();
            // 記錄藍(lán)牙地址
            localBTAddress = localDevice.getBluetoothAddress();
            // 記錄藍(lán)牙名稱
            localBTName = localDevice.getFriendlyName();
            localDevice.setDiscoverable(DiscoveryAgent.GIAC);
            // 取得藍(lán)牙代理
            discoveryAgent = localDevice.getDiscoveryAgent();
            success = true;
        } catch (Exception e) {
            System.err.println("初始化藍(lán)牙設(shè)備失敗:" + e);
        }
        return success;
    }
    
    public void search() {// 搜索設(shè)備,搜索服務(wù)
        try {
            // 清除remoteDevices
            remoteDevices.clear();
            // 將緩存的和已知的藍(lán)牙設(shè)備加入remoteDevices
            RemoteDevice[] cacheDevices = discoveryAgent
                    .retrieveDevices(DiscoveryAgent.CACHED);
            if (cacheDevices != null) {
                for (int i = 0; i < cacheDevices.length; i++) {
                    remoteDevices.put(cacheDevices[i].getBluetoothAddress(),
                            cacheDevices[i]);
                }
            }
            RemoteDevice[] preDevices = discoveryAgent
                    .retrieveDevices(DiscoveryAgent.PREKNOWN);
            if (preDevices != null) {
                for (int i = 0; i < preDevices.length; i++) {
                    remoteDevices.put(cacheDevices[i].getBluetoothAddress(),
                            cacheDevices[i]);
                }
            }
            // 在已知的設(shè)備上查詢服務(wù)
            searchServices(remoteDevices);
            if (serviceRecord != null)// 找到返回
                return;
            // 開始搜索設(shè)備
            discoveryAgent.startInquiry(DiscoveryAgent.GIAC, this);
            // 在搜索到的設(shè)備上查詢服務(wù)
            // searchServices(remoteDevices);
            // remoteDevices.clear();
        } catch (BluetoothStateException e) {
            e.printStackTrace();
        }
        if (serviceRecord != null) {
            notify();
        } else {
            ui.state.setText("未發(fā)現(xiàn)設(shè)備或服務(wù)");
        }
    }
    
    private void searchServices(Hashtable remotes)
    throws BluetoothStateException {// 搜索服務(wù)
        // 創(chuàng)建我們感興趣的UUID數(shù)組
        UUID[] UUIDs = new UUID[2];
        UUIDs[1] = new UUID(uuidString, false);// 我們的UUID
        UUIDs[0] = new UUID(0x0003);// 必須支持RFCOMM
        // 取出每一個(gè)設(shè)備查詢
        for (Enumeration e = remotes.keys(); e.hasMoreElements();) {
            String key = (String) e.nextElement();
            RemoteDevice remoteDevice = (RemoteDevice) remotes.get(key);
            // 查詢
            discoveryAgent.searchServices(null, UUIDs, remoteDevice, this);
        }
    }
    
    public void deviceDiscovered(RemoteDevice device, DeviceClass cod) {
        // 記錄找到的設(shè)備
        remoteDevices.put(device.getBluetoothAddress(), device);
    }
    
    public void servicesDiscovered(int transID, ServiceRecord[] servRecord) {
        // 發(fā)現(xiàn)感興趣的服務(wù),這里直接使用第一個(gè)
        if (servRecord == null || servRecord.length == 0) {
            url = null;
            serviceRecord = null;
            return;
        }
        // 取得感興趣的連接URL
        serviceRecord = servRecord[0];
        url = serviceRecord.getConnectionURL(
                ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);
    }
    
    public void serviceSearchCompleted(int transID, int respCode) {
        synchronized (this) {
            notifyAll();
        }
    }
    
    public void inquiryCompleted(int discType) {
        try {
            searchServices(remoteDevices);
        } catch (BluetoothStateException e) {
            e.printStackTrace();
        }
        remoteDevices.clear();
    }
    
    public void run() {
        if (!initBT()) {
            ui.state.setText("初始化失敗");
            return;
        }
        try {
            ui.state.setText("開始查找");
            // 等待啟動服務(wù)搜索
            synchronized (this) {
                try {
                    wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            if (exitFlag)
                return;
            search();
            // 等待URL準(zhǔn)備好
            synchronized (this) {
                try {
                    wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
            if (exitFlag)
                return;
            conn = (StreamConnection) Connector.open(url);
            in = conn.openDataInputStream();
            out = conn.openDataOutputStream();
            readWorkTh = new ReadWorkThread();
            readWorkTh.start();
            writeWorkTh = new WriteWorkThread();
            writeWorkTh.start();
            ui.state.setText("準(zhǔn)備就緒");
            BTReady = true;
        } catch (IOException e) {
            ui.state.setText("初始化失敗");
            return;
        } catch (SecurityException e) {
            ui.state.setText("初始化失敗");
            return;
        }
        th = null;
    }
    
    public void close() {
        try {
            exitFlag = true;
            synchronized (this) {
                notify();
            }
            if (writeWorkTh != null) {
                synchronized (writeWorkTh) {
                    writeWorkTh.notify();
                }
            }
            if (in != null) {
                in.close();
            }
            if (out != null) {
                out.close();
            }
            if (conn != null)
                conn.close();
            if (readWorkTh != null) {
                readWorkTh.join();
            }
            if (writeWorkTh != null)
                writeWorkTh.join();
            if (th != null)
                th.join();
        } catch (IOException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    
    public void send(String str) {
        if (writeWorkTh == null)
            return;
        sendText = str;
        synchronized (writeWorkTh) {
            writeWorkTh.notify();
        }
    }
    
    class ReadWorkThread extends Thread {
        public void run() {
            try {
                while (!exitFlag) {
                    String str = in.readUTF();
                    if (str != null) {
                        ui.receiveTF.setString(str);
                    }
                }
            } catch (IOException e) {
                if (!exitFlag)
                    ui.state.setText("讀取數(shù)據(jù)失敗");
            }
        }
    }
    
    class WriteWorkThread extends Thread {
        public void run() {
            try {
                while (!exitFlag) {
                    synchronized (this) {
                        try {
                            wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        if (exitFlag)// 可能因?yàn)殛P(guān)閉操作被打斷
                            break;
                        if (sendText != null)
                            out.writeUTF(sendText);
                    }
                }
            } catch (IOException e) {
                if (!exitFlag)
                    ui.state.setText("寫書據(jù)失敗");
            }
        }
    }
    
    public void startSearch() {
        synchronized (this) {
            notifyAll();
        }
    }
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩电影免费在线| 成人涩涩免费视频| 中文成人综合网| 欧美日韩国产成人在线免费| 国产酒店精品激情| 亚洲成人在线观看视频| 国产欧美日韩激情| 日韩女优制服丝袜电影| 91国产免费观看| 风间由美一区二区三区在线观看| 亚洲h在线观看| 亚洲欧洲日本在线| 久久综合丝袜日本网| 欧美高清一级片在线| 色婷婷精品大视频在线蜜桃视频| 国产成人精品影院| 国内精品伊人久久久久av影院| 亚洲精选视频免费看| 欧美激情一区在线观看| 精品国产91洋老外米糕| 欧美日韩国产首页在线观看| 97久久超碰国产精品| 国产一区二区三区在线观看免费视频| 天天操天天综合网| 一级日本不卡的影视| 综合久久给合久久狠狠狠97色 | 美女视频一区在线观看| 亚洲综合免费观看高清在线观看| 国产精品免费丝袜| 国产视频一区在线观看| 精品少妇一区二区三区在线播放| 欧美久久一二区| 欧美无人高清视频在线观看| 色综合久久综合中文综合网| 不卡视频一二三| 成人免费视频视频| 成人深夜视频在线观看| 成人一区二区三区视频在线观看 | 亚洲成人一二三| 亚洲一区精品在线| 一区二区成人在线| 亚洲bt欧美bt精品777| 亚洲成人久久影院| 五月天欧美精品| 日韩成人一区二区三区在线观看| 无吗不卡中文字幕| 免费成人小视频| 久久国产尿小便嘘嘘| 国产一区二区三区在线看麻豆| 九九国产精品视频| 国产精品一区专区| 国产成都精品91一区二区三| 菠萝蜜视频在线观看一区| 成人av网站免费| 色爱区综合激月婷婷| 欧美视频一区二区在线观看| 91精品国产综合久久久久久漫画 | 精品日韩一区二区三区| 精品国产91九色蝌蚪| 久久久久国产精品免费免费搜索| 国产欧美一区二区三区鸳鸯浴| 亚洲国产岛国毛片在线| 亚洲日本在线看| 香蕉乱码成人久久天堂爱免费| 免费在线一区观看| 国产福利一区在线| 色婷婷精品大在线视频| 欧美二区乱c少妇| 精品理论电影在线观看| 亚洲欧洲av另类| 一区二区三区毛片| 奇米色一区二区| 成人精品免费网站| 欧美视频日韩视频在线观看| 日韩欧美一级二级三级久久久| 国产亚洲成年网址在线观看| 一区二区三区日韩精品视频| 日韩av二区在线播放| 国产精品一卡二卡| 国产欧美日韩精品a在线观看| 中文字幕中文字幕在线一区| 午夜一区二区三区视频| 国产成人午夜电影网| 欧美色综合网站| 久久久天堂av| 亚洲国产你懂的| 国产999精品久久久久久绿帽| 欧美中文字幕一区| 国产性色一区二区| 亚洲一区二区三区四区五区中文| 精品系列免费在线观看| 99精品黄色片免费大全| 欧美精品一区二区在线观看| 亚洲精品免费电影| 国产一区在线不卡| 欧美日韩国产在线观看| 国产精品毛片无遮挡高清| 手机精品视频在线观看| 波多野结衣在线一区| 欧美va亚洲va| 亚洲线精品一区二区三区八戒| 国产乱色国产精品免费视频| 欧美视频完全免费看| 国产精品短视频| 精品一区二区三区香蕉蜜桃| 欧美日韩一卡二卡三卡| 亚洲欧洲日韩一区二区三区| 国产一区二区影院| 欧美一级夜夜爽| 亚洲一区二区三区影院| av影院午夜一区| 欧美mv日韩mv国产| 亚洲超碰精品一区二区| 成人精品视频一区二区三区 | 久久久精品综合| 五月婷婷另类国产| 一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 午夜影院久久久| 色综合天天性综合| 日本一区二区免费在线| 国产一区二区成人久久免费影院 | 欧美剧情片在线观看| 亚洲一区在线观看免费| 91女厕偷拍女厕偷拍高清| 久久久久久久久久久久久久久99 | 欧美日韩精品一区二区三区| 亚洲人成亚洲人成在线观看图片| 成人一区在线观看| 国产日本欧美一区二区| 国产福利91精品一区二区三区| 精品少妇一区二区三区免费观看 | 国产精品久久久久aaaa| 国产精品一卡二卡在线观看| 久久综合中文字幕| 国产精品456| 国产女人18毛片水真多成人如厕| 激情综合色综合久久综合| 日韩一级欧美一级| 麻豆成人免费电影| 精品国产免费人成在线观看| 韩国成人在线视频| 国产嫩草影院久久久久| av亚洲精华国产精华| 1区2区3区精品视频| 91视频国产资源| 一区二区三区高清在线| 欧美日韩免费高清一区色橹橹| 亚洲午夜国产一区99re久久| 欧美精品亚洲一区二区在线播放| 性感美女极品91精品| 日韩欧美国产精品一区| 国产美女精品人人做人人爽| 欧美极品少妇xxxxⅹ高跟鞋 | 国产午夜精品一区二区三区视频 | 色综合久久综合中文综合网| 亚洲一区二区三区中文字幕在线| 欧美日韩国产影片| 老司机精品视频在线| 国产亚洲一区二区在线观看| 福利一区二区在线观看| 亚洲激情图片一区| 欧美理论电影在线| 国模大尺度一区二区三区| 中文一区在线播放| 91福利国产成人精品照片| 日韩精品五月天| 337p粉嫩大胆色噜噜噜噜亚洲| 成人动漫av在线| 亚洲国产一二三| 精品国产免费人成在线观看| 99久久精品国产麻豆演员表| 亚洲第一av色| 国产亚洲美州欧州综合国| 91免费观看在线| 麻豆精品视频在线| 亚洲欧洲av在线| 欧美一区二区不卡视频| 成人晚上爱看视频| 日韩中文字幕av电影| 久久精品人人爽人人爽| 精品视频资源站| 国产精品亚洲综合一区在线观看| 伊人开心综合网| 国产偷国产偷亚洲高清人白洁 | 国产欧美一区二区三区沐欲| 91高清视频在线| 国产精品一二三区在线| 亚洲国产成人av| 亚洲国产电影在线观看| 777欧美精品| 97久久精品人人做人人爽50路| 蜜臀av在线播放一区二区三区| 亚洲欧洲精品天堂一级| 欧美mv日韩mv国产网站| 欧美日韩中文另类| 成a人片亚洲日本久久| 九九**精品视频免费播放| 亚洲一区二区在线免费看| 国产蜜臀av在线一区二区三区| 7777精品伊人久久久大香线蕉经典版下载|