当前位置:操作系统 > 安卓/Android >>

蓝牙通信-搜索附近的蓝牙设备

 与其他设备通信通信之前需要搜索周围的蓝牙设备。

怎么搜索呢??

1.如果数据中已经和某些蓝牙设备绑定,可以使用BluetoothAdapter.getBondedDevices();方法获得已经绑定的蓝牙设备列表

2.搜索周围的蓝牙设备受用BluetoothAdapter.startDiscovery()方法

3.搜索到的蓝牙设备都是通过广播返回,so..。需要注册广播接收器来获得已经搜索到的蓝牙设备。

下面我们看一下demo:

我们在布局文件中放一个按钮和一个显示文本TextView。

我们点击Button时,开始搜索附近的蓝牙设备。将搜索到的蓝牙设备追加到TextView上,我们将绑定的和搜索到的都显示在TextView上。

布局文件:


[html]
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".MainActivity" > 
 
    <Button 
        android:id="@+id/button_id" 
        android:layout_width="fill_parent" 
        android:layout_height="wrap_content" 
        android:onClick="onClick_Search" 
        android:text="搜索蓝牙设备" /> 
 
    <TextView 
        android:id="@+id/tvDevices" 
        android:layout_width="fill_parent" 
        android:layout_below="@+id/button_id" 
        android:layout_height="wrap_content" /> 
 
</RelativeLayout> 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button_id"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:onClick="onClick_Search"
        android:text="搜索蓝牙设备" />

    <TextView
        android:id="@+id/tvDevices"
        android:layout_width="fill_parent"
        android:layout_below="@+id/button_id"
        android:layout_height="wrap_content" />

</RelativeLayout>

 

 


JAVA文件:

[java]
package com.example.search_bluetooth_devices; 
 
import java.util.Set; 
 
import android.os.Bundle; 
import android.app.Activity; 
import android.bluetooth.BluetoothAdapter; 
import android.bluetooth.BluetoothDevice; 
import android.content.BroadcastReceiver; 
import android.content.Context; 
import android.content.Intent; 
import android.content.IntentFilter; 
import android.view.Menu; 
import android.view.View; 
import android.view.Window; 
import android.widget.TextView; 
 
public class MainActivity extends Activity { 
 
    private TextView mTextView; 
    private BluetoothAdapter mBluetoothAdapter; 
 
    private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 
        @Override 
        public void onReceive(Context context, Intent intent) { 
            // TODO Auto-generated method stub  
 
            String action = intent.getAction(); 
            // 获得已经搜索到的蓝牙设备  
            if (action.equals(BluetoothDevice.ACTION_FOUND)) { 
                BluetoothDevice device = intent 
                        .getParcelableExtra(BluetoothDevice.EXTRA_DEVICE); 
                // 搜索到的不是已经绑定的蓝牙设备  
                if (device.getBondState() != BluetoothDevice.BOND_BONDED) { 
                    // 显示在TextView上  
                    mTextView.append(device.getName() + ":" 
                            + device.getAddress()+"\n"); 
                } 
                // 搜索完成  
            } else if (action 
                    .equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) { 
                setProgressBarIndeterminateVisibility(false); 
                setTitle("搜索蓝牙设备"); 
            } 
    &

补充:移动开发 , Android ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,