接下來要熟悉的是BluetoothDevice這個類別。我們已經知道BluetoothAdapter代表的是Android手機裡的藍芽裝置,那麼就可以把BluetoothDevice想像成其它的藍芽裝置,比如說;藍芽耳機、藍芽喇叭、小米手環...等各式各樣的裝置。
現在,我們的App已經可以利用BluetoothAdapter來開關Android手機裡的藍芽設備,接著我們可以再利用BluetoothAdapter這個類別來找出已經和我們的Android手機配對完成的藍芽裝置,並顯示它們的名稱以及位址。延續之前的程式碼,我們在MainActivity.java中加入
public void findDevice(View view) {
ArrayAdapter<String> mArrayAdapter = new ArrayAdapter(this,
android.R.layout.simple_list_item_1);
Set<BluetoothDevice> pairedDevices = mBTadapter.getBondedDevices();
if ( pairedDevices.size() > 0 ) {
for (BluetoothDevice device : pairedDevices) {
mArrayAdapter.add(device.getName() + "\n" + device.getAddress());
ListView listview = (ListView)findViewById(R.id.listView);
listview.setAdapter(mArrayAdapter);
}
}
}
利用BluetoothAdapter提供的getBondedDevices()方法可以取得已經和我們的Android手機配對完成的裝置。這個方法會回傳BluetoothDevice物件,而且存放於Set這種型式的container裡。我們可以利用BluetoothDevice類別裡的getName()與getAddress()分別取得藍芽裝置的名稱以及位址。最後,使用ListView把藍芽裝置的名稱與位址一筆一筆地顯示出來。
activity_main.xml 加入<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="findDevice"
android:text="@string/find_device"
android:layout_alignParentTop="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true" />
<ListView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/listView"
android:layout_below="@+id/button"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginTop="51dp" />
strings.xml 加入
<string name="find_device">搜尋裝置</string>
新增一個按鈕「搜尋裝置」
按下搜尋裝置按鈕之後,會顯示已經配對完成的裝置名稱,以我的Android手機來說,總共有兩個配對完成的藍芽裝置。