Android藍芽2.0的使用方法:

請叫我東子發表於2016-01-30

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010046908/article/details/50610297

             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 style="font-family: Arial, Helvetica, sans-serif;">ServerSocket</span>
	BluetoothSocket mBTHSocket = null;//下位機的socket
	InputStream mmInStream = null;//輸入流
	OutputStream mmOutStream = null;//輸出流
 <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">        </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中的使用,這兩個還是有很多不同的,大家請期待



相關文章