編輯:關於Android編程
本文為大家分享了Android操作藍牙2.0的使用方法,供大家參考,具體內容如下
1.Android操作藍牙2.0的使用流程
(1)找到設備uuid
(2)獲取藍牙適配器,使得藍牙處於可發現模式,獲取下位機的socket,並且與上位機建立建立連接,獲取獲取輸入流和輸出流,兩個流都不為空時,表示連接成功。否則是連接失敗。
(3).與下位機的socket開始通信。
(4).通信結束後,斷開連接(關閉流,關閉socket)
2接下來接直接上代碼:
2.1找到設備uuid(一般廠商都會給開發者提供)
復制代碼 代碼如下:UUID MY_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
2.2與藍牙設備建立連接
BluetoothAdapter myBluetoothAdapter = null;//藍牙適配器 BluetoothServerSocket mBThServer = null;//上位機<span >ServerSocket</span> BluetoothSocket mBTHSocket = null;//下位機的socket InputStream mmInStream = null;//輸入流 OutputStream mmOutStream = null;//輸出流 <span > </span>
myBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();//獲取適配器
Set<BluetoothDevice> pairedDevices = myBluetoothAdapter
.getBondedDevices();//獲取適配器下的所有藍牙設備
if (pairedDevices.size() > 0) {
for (Iterator<BluetoothDevice> iterator = pairedDevices
.iterator(); iterator.hasNext();) {
BluetoothDevice device = (BluetoothDevice) iterator
.next();
if (DEVICE_NAME1.equals(device.getName())
|| DEVICE_NAME2.equals(device.getName())
|| DEVICE_NAME3.equals(device.getName())
|| DEVICE_NAME4.equals(device.getName())) {
try {
myBluetoothAdapter.enable();//將適配器設置可用
Intent discoverableIntent = new Intent(
BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);// 使得藍牙處於可發現模式,持續時間150s
discoverableIntent
.putExtra(
BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,
150);
mBTHSocket = device
.createRfcommSocketToServiceRecord(MY_UUID);//獲取下位機的socket
int sdk = Integer.parseInt(Build.VERSION.SDK);
if (sdk >= 10) {
mBTHSocket = device
.createInsecureRfcommSocketToServiceRecord(MY_UUID);
} else {
mBTHSocket = device
.createRfcommSocketToServiceRecord(MY_UUID);
}
mBThServer = myBluetoothAdapter
.listenUsingRfcommWithServiceRecord(
"myServerSocket", MY_UUID);監聽可用的設備
mBTHSocket.connect(); // 建立連接
mmInStream = mBTHSocket.getInputStream();// 獲取輸入流
mmOutStream = mBTHSocket.getOutputStream();// 獲取輸出流
} catch (IOException e) {
ett.setText("設備連接異常!");
}
if ((mmInStream != null) && (mmInStream != null))// 二者不為空時,表示連接成功,否則連接失敗
{
ett.setText("設備連接成功!");
} else {
ett.setText("設備連接失敗!");
}
break;
}
}
}
2.3開始發送數據,並且讀取數據(字節數組)
if ((mmInStream == null) || (mmInStream == null)) {
Readflage = -2;// 連接異常
return;
}
mmOutStream.write(cmd_find);//寫入查找指令
Thread.sleep(200);
int datalen = mmInStream.read(recData);//讀取數據
注意:cmd_find和recData都是字節數組byte[].
以上代碼就一次發送指令和讀取數據的步驟。很簡單吧
2.4斷開連接
if ((mmInStream == null) || (mmInStream == null)) {
return;
}
//關閉流和socket
mmOutStream.close();
mmInStream.close();
mBTHSocket.close();
mBThServer.close();
最後總結一下,基本就3大步,第一建立連接,第二發送數據讀取數據,第三步斷開連接。今天就這些了,以後會寫關於藍牙4.0 ble 在Android中的使用,這兩個還是有很多不同的,大家請期待。
Android 安卓手機還有必要清內存嗎?
安卓手機自誕生之日起無論多大運存,似乎清內存都是安卓用戶一個必不可少的動作,發展至今安卓系統版本幾經迭代、手機運存不斷飙升,軟硬件都有了翻天覆地的變化,那
Android筆記六.深入理解Intent和IntentFilter(二)
深入理解Intent和IntentFiler(二) Jiangdg_VIP http://blog.csdn.net/u012637501 在上一篇文章中,我們比較詳細學
Android MeterDesign(一)
請查看下面這個視頻作為本教程最終的結果。從這裡開始,空白 Activity 裡面有一個 DrawerLayout 。 Activity 已經調整為材料設計風格的
bitmap的六種壓縮方式,圖片壓縮
android中圖片是以bitmap形式存在的,那麼bitmap所占內存,直接影響到了應用所占內存大小,首先要知道bitmap所占內存大小計算方式:圖片長度 x 圖片寬度