内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

安卓工業(yè)平板電腦的藍(lán)牙開發(fā)教程-創(chuàng)新互聯(lián)

開發(fā)系統(tǒng):Android4.4.2 運(yùn)行平臺:廣州微嵌安卓工業(yè)平板電腦
安卓的藍(lán)牙的打開包括獲取藍(lán)牙模塊、搜索藍(lán)牙設(shè)備、藍(lán)牙設(shè)備間的配對、連接跟通信等部分。
1、安卓中使用藍(lán)牙模塊需要藍(lán)牙的使用權(quán)限,需要在AndroidMainfest.xml中聲明:

允許程序連接到已配對的藍(lán)牙設(shè)備
<uses-permission android:name="android.permission.BLUETOOTH"/>
允許程序發(fā)現(xiàn)和配對藍(lán)牙設(shè)備
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

創(chuàng)新互聯(lián)建站專注于企業(yè)營銷型網(wǎng)站建設(shè)、網(wǎng)站重做改版、屯溪網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)商城建設(shè)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)公司、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為屯溪等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。

2、獲取藍(lán)牙適配器并打開藍(lán)牙

//獲取藍(lán)牙適配器
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter ==null){
Toast.makeText(this, "不支持藍(lán)牙設(shè)備",Toast.LENGTH_LONG).show(); bluetoothSwitch.setEnabled(false);
return;
}
打開藍(lán)牙設(shè)備
//判斷藍(lán)牙設(shè)備是否處于關(guān)閉狀態(tài),如果是則打開藍(lán)牙
if(!mBluetoothAdapter.isEnabled()){
if(mBluetoothManager.enable()){//打開藍(lán)牙設(shè)備
//開啟藍(lán)牙后,需設(shè)置藍(lán)牙為可發(fā)現(xiàn)狀態(tài),這樣其它的藍(lán)牙設(shè)備才能搜索到。
Intent discoverableIntent = new Intent
(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
//最后的參數(shù)設(shè)置可見的時(shí)間,最長為300s,設(shè)為0表示一直可見
discoverableIntent.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0);
startActivity(discoverableIntent);
//成功打開藍(lán)牙后開始搜索附近的藍(lán)牙設(shè)備
mBluetoothAdapter.startDiscovery();
//停止搜索:mBluetoothAdapter.cancelDiscovery();
}
}else{
//關(guān)閉藍(lán)牙設(shè)備
mBluetoothManager.disable();
}
//獲取已配對的藍(lán)牙設(shè)備
Set<BluetoothDevice> Bondedlist =mBluetoothAdapter.getBondedDevices();

3、定義廣播接收,在開始搜索附近的藍(lán)牙設(shè)備,系統(tǒng)回發(fā)出三個(gè)搜索狀態(tài)的廣播

BluetoothDevice.ACTION_FOUND //搜索到設(shè)備
BluetoothAdapter.ACTION_DISCOVERY_STARTED //開始搜索
BluetoothAdapter.ACTION_DISCOVERY_FINISHED //搜索結(jié)束
定義廣播接收相應(yīng)的廣播狀態(tài)
private class BluetoothReceive extends BroadcastReceiver{@Override
br/>@Override
// TODO 自動生成的方法存根
String action = intent.getAction();
//判斷廣播內(nèi)容
//搜索到藍(lán)牙設(shè)備廣播
if(action.equals(BluetoothDevice.ACTION_FOUND)){
//獲取搜素到的藍(lán)牙設(shè)備
BluetoothDevice device =intent.getParcelableExtra
(BluetoothDevice.EXTRA_DEVICE);
if(device.getName()==null){
return;
}
//獲取搜素到的藍(lán)牙設(shè)備是否已經(jīng)配對
if(device.getBondState() == BluetoothDevice.BOND_BONDED){
deviceSet.add(device);
adapter.add(device.getName()+":可使用");
}
else {
deviceSet.add(device);
adapter.add(device.getName()+":可配對");
}
}
//搜索結(jié)束的廣播
else if(action.equals
(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)){
Toast.makeText(MainActivity.this,
"掃描結(jié)束",Toast.LENGTH_LONG).show();
}
}
}

4、藍(lán)牙設(shè)備的配對

//獲取搜索到的藍(lán)牙設(shè)備列表中的藍(lán)牙設(shè)備及其狀態(tài)
BluetoothDevice device = deviceSet.get(position);
int state = deviceSet.get(position).getBondState();
//判斷藍(lán)牙設(shè)備狀態(tài)
Switch(state){
//藍(lán)牙設(shè)備沒有配對
case BluetoothDevice.BOND_NONE:
//配對方法一:
Method createBondMethod=
device.getClass().getMethod("createBond");
Boolean returnValue =(Boolean)createBondMethod.invoke(device);
//配對方法二:
device.createBond();
break;
//藍(lán)牙設(shè)備已經(jīng)配對
case BluetoothDevice.BOND_BONDED:
//可選操作:刪除配對信息、連接藍(lán)牙設(shè)備
//刪除配對信息:
Method createBondMethod=
device.getClass().getMethod("removeBond");
Boolean returnValue =(Boolean)createBondMethod.invoke(device);
//連接藍(lán)牙設(shè)備:
//建立藍(lán)牙客戶端并連接服務(wù)器
mBluetoothClient = new BluetoothClient(MainActivity.this,device,uuid);
mBluetoothClient.connect();
break;
}

上面的內(nèi)容主要是獲取藍(lán)牙模塊、打開藍(lán)牙、搜素附近藍(lán)牙設(shè)備跟進(jìn)行配對。
下面的是藍(lán)牙設(shè)備間建立連接并進(jìn)行通信。
藍(lán)牙設(shè)備的連接、通信跟網(wǎng)絡(luò)通信TCP的類似,分別有服務(wù)器、客戶端,先是新建一個(gè)服務(wù)器用于監(jiān)聽客戶端的連接請求,客戶端向服務(wù)器發(fā)送連接請求,連接成功后雙方都獲得BluetoothSocket的實(shí)例,雙方可以通過BluetoothSocket的實(shí)例進(jìn)行通信。
5、服務(wù)器:
新建一個(gè)藍(lán)牙服務(wù)器并監(jiān)聽客戶端的連接請求
在listenUsingRfcommWithServiceRecord中有一個(gè)參數(shù)叫做UUID,UUID(Universally Unique Identifier)是一個(gè)128位的字符串ID,被用于唯一標(biāo)識我們的藍(lán)牙服務(wù)。

String name = mBluetoothAdapter.getName();
try {
//創(chuàng)建一個(gè)BluetoothServerSocket藍(lán)牙服務(wù)器,并開啟接收線程等待客戶端的連接
mServerSocket = mBluetoothAdapter
.listenUsingRfcommWithServiceRecord(name, uuid);
new acceptThread().start();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
};
等待客戶端連接:
public class acceptThread extends Thread{@Override
br/>@Override
// TODO 自動生成的方法存根
try {
//該方法是服務(wù)器阻塞等待客戶端的連接,
//監(jiān)聽到有客戶端連接返回一個(gè)BluetoothSocket的實(shí)例
socket = mServerSocket.accept();
Log.d("Server", "以連接");
//開啟讀取線程讀取客戶端發(fā)來的數(shù)據(jù)
read = new readThread();
read.start();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
super.run();
}
}
讀取數(shù)據(jù):
public class readThread extends Thread{@Override
br/>@Override
// TODO 自動生成的方法存根
if(socket.isConnected()){
try {
//獲取socket的InputStream并不斷讀取數(shù)據(jù)
InputStream in = socket.getInputStream();
byte[] buff = new byte[1024];
while(!isInterrupted()){
int size = in.read(buff);;
if(size>0){
Log.d("RECVDATA", String.valueOf(buff));
}
}
in.close();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
super.run();
}
}
發(fā)送數(shù)據(jù):
public void write(String str){
if(socket.isConnected()){
try {
//獲取socket的OutputStream并寫入數(shù)據(jù)
OutputStream out = socket.getOutputStream();
out.write(str.getBytes());
out.close();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
}
}
//關(guān)閉服務(wù)器:
mServerSocket.close();
//關(guān)閉BluetoothSocket:
Socket.close();

6、客戶端:

獲取一個(gè)BluetoothSocket的實(shí)例并向服務(wù)器發(fā)送連接請求
public class ConnectThread extends Thread{@Override
br/>@Override
// TODO 自動生成的方法存根
try {
//獲取BluetoothSocket實(shí)例并連接服務(wù)器,該處的uuid需與服務(wù)器短
//的uuid一致才能連接成功,connect()是回阻塞的。
socket = mBluetoothDevice
.createRfcommSocketToServiceRecord(uuid);
socket.connect()
Log.d("TAG", "連接成功");
read = new ReadThread();
read.start();
} catch (IOException e) {
// TODO 自動生成的 catch 塊
e.printStackTrace();
}
super.run();
}
}
客戶端的讀取跟發(fā)送與服務(wù)器的相同。

至此安卓系統(tǒng)工業(yè)平板電腦的藍(lán)牙的基本功能就基本完成了,在兩塊都開啟了藍(lán)牙的安卓設(shè)備上分別建議服務(wù)器跟客戶端,并進(jìn)行連接,連接成功后雙方就可以通過藍(lán)牙進(jìn)行通信了。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:安卓工業(yè)平板電腦的藍(lán)牙開發(fā)教程-創(chuàng)新互聯(lián)
分享URL:http://www.rwnh.cn/article10/docpdo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、微信公眾號App設(shè)計(jì)、做網(wǎng)站、網(wǎng)站設(shè)計(jì)小程序開發(fā)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)
砀山县| 青铜峡市| 拉萨市| 夏津县| 康平县| 五莲县| 乐清市| 拜泉县| 凉山| 浏阳市| 如东县| 安西县| 师宗县| 新河县| 丰顺县| 汉沽区| 枣强县| 临洮县| 日土县| 中阳县| 铜鼓县| 深州市| 长泰县| 保定市| 民乐县| 镇巴县| 三门峡市| 巴青县| 墨脱县| 平泉县| 奉新县| 米林县| 五莲县| 当涂县| 甘泉县| 永丰县| 汽车| 香河县| 西城区| 井陉县| 全州县|