第十天-Android 蓝牙4.0的开发

博客介绍了蓝牙这一可实现短距离数据交换的无线技术标准,需掌握添加权限、打开并允许搜索、搜索附近蓝牙、关闭蓝牙等技能,还展示了蓝牙布局文件、主类代码、适配器代码及 Bean 类代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、蓝牙介绍

是一种无线技术标准,可实现固定设备、移动设备和楼宇个人域网之间的短距离数据交换,我们主要掌握这几项技能:
1、添加权限:
在这里插入图片描述
2、打开蓝牙并允许搜索
在这里插入图片描述
3、搜索附近的蓝牙:
在这里插入图片描述
4、关闭蓝牙:
在这里插入图片描述

二、蓝牙代码展示:

1、蓝牙布局文件及效果展示:

在这里插入图片描述
在这里插入图片描述

2、主类代码展示:

public class Main21Activity extends AppCompatActivity implements View.OnClickListener {
private RecyclerView recyclerView;
private MyAdapter adapter;
private List list = new ArrayList<>();
Button b1,b2,b3;

private BluetoothManager bluetoothManager;
private BluetoothAdapter bluetoothAdapter;
private BluetoothReceiver bluetoothReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main21);
    initView();
    initDate();
}
private void initView() {
    b1 = findViewById(R.id.btn_start);
    b2 = findViewById(R.id.btn_top);
    b3 = findViewById(R.id.btn_search);
    b1.setOnClickListener(this);
    b2.setOnClickListener(this);
    b3.setOnClickListener(this);

    LinearLayoutManager manager = new LinearLayoutManager(this);
    manager.setOrientation(LinearLayoutManager.VERTICAL);

    recyclerView = findViewById(R.id.rectclerView);
    recyclerView.setLayoutManager(manager);
    adapter = new MyAdapter(this,list);
    recyclerView.setAdapter(adapter);

}

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
private void initDate() {
    bluetoothManager = (BluetoothManager) getSystemService(BLUETOOTH_SERVICE);
    bluetoothAdapter = bluetoothManager.getAdapter();     //蓝牙adapter
    if (bluetoothAdapter == null){
        finish();
        return;
    }
    bluetoothReceiver = new BluetoothReceiver();
    IntentFilter intentFilter = new IntentFilter();
    intentFilter.addAction(BluetoothDevice.ACTION_FOUND); //可发现
    intentFilter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); //搜索结束
    intentFilter.addAction(BluetoothDevice.ACTION_BOND_STATE_CHANGED); //绑定状态
    registerReceiver(bluetoothReceiver,intentFilter);
}

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.btn_start:
            boolean flag = bluetoothAdapter.enable();
            if (!flag){
                Intent intent = new Intent();
                intent.setAction(BluetoothAdapter.ACTION_REQUEST_ENABLE); //启动蓝牙
                intent.setAction(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); //开启本设备可被发现
                intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION,200); //指定搜索设备时间
                startActivityForResult(intent,100);
            }
            break;
        case R.id.btn_top:
            bluetoothAdapter.disable(); //关闭蓝牙
            list.clear();
            adapter.refresh(list);
            break;
        case R.id.btn_search:
            bluetoothAdapter.startDiscovery(); //开启搜索
            break;
    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == 100 && requestCode == RESULT_OK){
        Toast.makeText(this, "开启蓝牙成功", Toast.LENGTH_SHORT).show();
    }
}

class BluetoothReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        String action = intent.getAction();
        switch (action){
            case BluetoothDevice.ACTION_FOUND:
                //搜索到一台蓝牙设备,进入一次found
                //搜索到的设备保存到list中
                BluetoothDevice bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
                BlueToothBean blueToothBean = new BlueToothBean();
                blueToothBean.name = bluetoothDevice.getName();
                blueToothBean.address = bluetoothDevice.getAddress();
                blueToothBean.bluetoothDevice = bluetoothDevice;
                list.add(blueToothBean);
                Log.e("list-------------",list+"");
                adapter.refresh(list);
                break;
            case BluetoothAdapter.ACTION_DISCOVERY_FINISHED:
                adapter.refresh(list);
                break;
            default:
                break;
        }
    }
}

}

3、适配器代码:

public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {

private Context context;
private List<BlueToothBean> list;

public MyAdapter(Context context, List<BlueToothBean> list) {
    this.context = context;
    this.list = list;
}

public void refresh(List<BlueToothBean> list){
    this.list.addAll(list);
    notifyDataSetChanged();
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(context).inflate(R.layout.day20_item,viewGroup,false);
    return new MyViewHolder(view);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    myViewHolder.name.setText(list.get(i).getName());
    myViewHolder.address.setText(list.get(i).getAddress());
}

@Override
public int getItemCount() {
    if (list.size() != 0){
        return list.size();
    }else{
        return 0;
    }
}

class MyViewHolder extends RecyclerView.ViewHolder{
    private TextView name;
    private TextView address;
    public MyViewHolder(@NonNull View itemView) {
        super(itemView);
        name = itemView.findViewById(R.id.text_name);
        address = itemView.findViewById(R.id.text_address);
    }
}

}

Bean类:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值