蓝牙的扫描

2024-06-20 03:58
文章标签 蓝牙 扫描

本文主要是介绍蓝牙的扫描,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上一篇 蓝牙打开和关闭

在这里插入图片描述

蓝牙扫描 返回boolean值
public boolean startDiscovery()

示例:

   /*** 开始扫描** @return*/public boolean startScan(){if (BluetoothManager.newInstance().isBlueEnable()){//如果正在扫描取消if (BluetoothManager.newInstance().getBluetoothAdapter().isDiscovering()){BluetoothManager.newInstance().getBluetoothAdapter().cancelDiscovery();}/*开始扫描蓝牙  返回true表示扫描成功  通过广播接收返回结果*/return BluetoothManager.newInstance().getBluetoothAdapter().startDiscovery();}else {Toast.makeText(getContext(),"请打开蓝牙",Toast.LENGTH_LONG).show();}return false;}

正在扫描和取消扫描
public boolean isDiscovering()
public boolean cancelDiscovery()

示例:

  /*** 取消扫描*/public void cancelScan(){if (BluetoothManager.newInstance().isBlueEnable()){if (BluetoothManager.newInstance().getBluetoothAdapter().isDiscovering()){BluetoothManager.newInstance().getBluetoothAdapter().cancelDiscovery();}}}

通过广播接收扫描的结果

  • 注册广播
 public void register(){IntentFilter filter1 = new IntentFilter(android.bluetooth.BluetoothAdapter.ACTION_DISCOVERY_STARTED);IntentFilter filter2 = new IntentFilter(android.bluetooth.BluetoothAdapter.ACTION_DISCOVERY_FINISHED);IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_FOUND);getContext().registerReceiver(scanBlueReceiver,filter1);getContext().registerReceiver(scanBlueReceiver,filter2);getContext().registerReceiver(scanBlueReceiver,filter3);}
  • 接收广播
String TAG= "=======bluetooth======";private ScanBlueReceiver scanBlueReceiver = new ScanBlueReceiver();public class  ScanBlueReceiver extends BroadcastReceiver{@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//            Log.d(TAG, "action:" + action);switch (action){case BluetoothAdapter.ACTION_DISCOVERY_STARTED:Log.d(TAG, "开始扫描...");progressBar .setVisibility(View.VISIBLE);break;case BluetoothAdapter.ACTION_DISCOVERY_FINISHED:Log.d(TAG, "结束扫描...");progressBar .setVisibility(View.GONE);break;case BluetoothDevice.ACTION_FOUND://发现设备if (!TextUtils.isEmpty(device.getName())){Log.d(TAG, "device: 蓝牙名字=" + device.getName()+",mac地址 = "+device.getAddress()+",蓝牙类型 ="+device.getType()+",绑定状态 ="+device.getBondState());list.add(device);adapter.notifyDataSetChanged();}if (scanBluetoothResult!=null){scanBluetoothResult.result(device);}break;}}}
  • 完整代码
public class DiscoveryBluetooth extends Dialog {private ProgressBar progressBar;private RecyclerView mRecyclerView ;private MyAdapter adapter;List<BluetoothDevice> list = new ArrayList<>();public DiscoveryBluetooth(Context context) {super(context,R.style.dialog);setContentView(R.layout.discovery_bluetooth_layout);progressBar=findViewById(R.id.progressBar);mRecyclerView = findViewById(R.id.mRecyclerView);LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext());linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);mRecyclerView.addItemDecoration(new DividerItemDecoration(getContext(),DividerItemDecoration.VERTICAL));mRecyclerView.setLayoutManager(linearLayoutManager);mRecyclerView.setAdapter(adapter=new MyAdapter());findViewById(R.id.start).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {list.clear();startScan();}});findViewById(R.id.stop).setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {cancelScan();}});register();Window window = getWindow();WindowManager.LayoutParams lp = window.getAttributes();lp.width = WindowManager.LayoutParams.MATCH_PARENT;lp.height = WindowManager.LayoutParams.MATCH_PARENT;window.setAttributes(lp);}/*** 开始扫描** @return*/public boolean startScan(){if (BluetoothManager.newInstance().isBlueEnable()){//如果正在扫描取消if (BluetoothManager.newInstance().getBluetoothAdapter().isDiscovering()){BluetoothManager.newInstance().getBluetoothAdapter().cancelDiscovery();}/*开始扫描蓝牙  返回true表示扫描成功  通过广播接收返回结果*/return BluetoothManager.newInstance().getBluetoothAdapter().startDiscovery();}else {Toast.makeText(getContext(),"请打开蓝牙",Toast.LENGTH_LONG).show();}return false;}/*** 取消扫描*/public void cancelScan(){if (BluetoothManager.newInstance().isBlueEnable()){if (BluetoothManager.newInstance().getBluetoothAdapter().isDiscovering()){BluetoothManager.newInstance().getBluetoothAdapter().cancelDiscovery();}}}public void register(){IntentFilter filter1 = new IntentFilter(android.bluetooth.BluetoothAdapter.ACTION_DISCOVERY_STARTED);IntentFilter filter2 = new IntentFilter(android.bluetooth.BluetoothAdapter.ACTION_DISCOVERY_FINISHED);IntentFilter filter3 = new IntentFilter(BluetoothDevice.ACTION_FOUND);getContext().registerReceiver(scanBlueReceiver,filter1);getContext().registerReceiver(scanBlueReceiver,filter2);getContext().registerReceiver(scanBlueReceiver,filter3);}String TAG= "=======bluetooth======";private ScanBlueReceiver scanBlueReceiver = new ScanBlueReceiver();public class  ScanBlueReceiver extends BroadcastReceiver{@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
//            Log.d(TAG, "action:" + action);switch (action){case BluetoothAdapter.ACTION_DISCOVERY_STARTED:Log.d(TAG, "开始扫描...");progressBar .setVisibility(View.VISIBLE);break;case BluetoothAdapter.ACTION_DISCOVERY_FINISHED:Log.d(TAG, "结束扫描...");progressBar .setVisibility(View.GONE);break;case BluetoothDevice.ACTION_FOUND://发现设备if (!TextUtils.isEmpty(device.getName())){Log.d(TAG, "device: 蓝牙名字=" + device.getName()+",mac地址 = "+device.getAddress()+",蓝牙类型 ="+device.getType()+",绑定状态 ="+device.getBondState());list.add(device);adapter.notifyDataSetChanged();}if (scanBluetoothResult!=null){scanBluetoothResult.result(device);}break;}}}private ScanBluetoothResult scanBluetoothResult;public interface ScanBluetoothResult{void result(BluetoothDevice device);}/*** @param scanBluetoothResult* @return*/public DiscoveryBluetooth setScanBluetoothResult(ScanBluetoothResult scanBluetoothResult) {this.scanBluetoothResult = scanBluetoothResult;return this ;}public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder>{@NonNull@Overridepublic MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {return new MyViewHolder(LayoutInflater.from(getContext()).inflate(android.R.layout.test_list_item,viewGroup,false));}@Overridepublic int getItemCount() {return list.size();}@Overridepublic void onBindViewHolder(@NonNull MyAdapter.MyViewHolder myViewHolder,  int i) {if (list.size()>0){final BluetoothDevice d = list.get(i);myViewHolder.textView.setText(d.getName()+"-"+d.getAddress());myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {CreateBondBluetooth createBondBluetooth=new CreateBondBluetooth(getContext());createBondBluetooth.CreateBond(d);createBondBluetooth.show();}});}}class MyViewHolder extends RecyclerView.ViewHolder{public TextView textView;public MyViewHolder(@NonNull View itemView) {super(itemView);textView =itemView.findViewById(android.R.id.text1);textView.setTextColor(Color.BLACK);}}}
}

这篇关于蓝牙的扫描的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1077035

相关文章

Android我的二维码扫描功能发展史(完整)

最近在研究下二维码扫描功能,跟据从网上查阅的资料到自己勉强已实现扫描功能来一一介绍我的二维码扫描功能实现的发展历程: 首页通过网络搜索发现做android二维码扫描功能看去都是基于google的ZXing项目开发。 2、搜索怎么使用ZXing实现自己的二维码扫描:从网上下载ZXing-2.2.zip以及core-2.2-source.jar文件,分别解压两个文件。然后把.jar解压出来的整个c

探索蓝牙协议的奥秘:用ESP32实现高质量蓝牙音频传输

蓝牙(Bluetooth)是一种短距离无线通信技术,广泛应用于各种电子设备之间的数据传输。自1994年由爱立信公司首次提出以来,蓝牙技术已经经历了多个版本的更新和改进。本文将详细介绍蓝牙协议,并通过一个具体的项目——使用ESP32实现蓝牙音频传输,来展示蓝牙协议的实际应用及其优点。 蓝牙协议概述 蓝牙协议栈 蓝牙协议栈是蓝牙技术的核心,定义了蓝牙设备之间如何进行通信。蓝牙协议

蓝牙ble数传芯片推荐,TD5327A芯片蓝牙5.1—拓达半导体

蓝牙数传芯片TD5327A芯片是一款支持蓝牙BLE的纯数传芯片,蓝牙5.1版本。芯片的亮点在于性能强,除了支持APP端直接对芯片做设置与查询操作,包括直接操作蓝牙芯片自身的IO与PWM口以外,还支持RTC日历功能,可以做各类定时类操作,极大丰富了蓝牙在IOT产品中的应用。此外,在数传应用方面,此芯片支持串口流控功能,提大提高了数据传输的稳定与可靠性。 拓达蓝牙芯片特点: 支持RTC日历功能,超

uniapp 低功耗蓝牙BLE分包

ble.js // 分包写入蓝牙async sendWriteBLECharacteristicValue(deviceId,serviceId,writeCharacteristicId,readCharacteristicId,buffer,success, // 成功回调failure, // 失败回调) {const offset = 500; // 偏移量let pos = 0;

2021-02-16物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA,金蝶仓库条码管理WMS系统

物料档案条码添加和蓝牙条码标签打印,金蝶安卓盘点机PDA https://member.bilibili.com/platform/upload-manager/article 本期视频我们来讲解一下汉点机PDA条码添加和条码标签蓝牙便携打印: 在实际使用中,我们商品有两种情况: 一种是商品本身就有条码, 比如:超市卖的可口可乐,牛奶等商品,商品本身就有69开头的国标码,那么我们就可以使用盘点

金蝶盘点机PDA,序列号SN管理扫描入库出库质量追溯溯源防串货

比如有5个红米手机,红米手机的代码是100001, 那么这5个红米手机的条码是:100001+001,100001+002,100001+003,100001+004,100001+005, 那么入库时,依次扫描这些条码,自动生成金蝶里的入库单。并记录序列号信息。这样能实现序列号追溯,以后通过序列号就能查询出来该序列号的产品是从哪里进货的什么时候进货的,什么时间销售给谁了。 第一步:商

仓库盘点好方法,使用安卓盘点机PDA扫描商品条码进行超市盘点

仓库管理我们为什么要盘点? 因为传统的进销存出入库都需要电脑一行行的人工手工录单,比如入库时,人眼识别这个商品是什么商品,然后电脑上选择该商品,录入数量。人眼识别要求入库人对商品非常熟悉,而且对于包装规格相近的很容易弄错,张冠李戴,A商品的录单时记录成为B商品了。所以人工手工录单效率低,误差大,是导致我们进销存管理软件中帐面库存存跟仓库门店实际库存不相符合的主要原因。电脑账存跟实际库存不符合,所

金蝶盘点机PDA进行工序汇报扫描,工时工资统计使用说明书

使用盘点机PDA扫描商品条码(序列号)进行工序汇报,自动生成电脑里的【工序汇报单】,自动计算工时,工资。这样就不用去电脑上人工手工一行行录单,大大提高工作效率和数据准确性。 操作时,只需要商品条码(序列号)即可实现快速,准确的工序汇报。从而防止电脑进行工序汇报耗时,费事,不准确的问题。 注意商品条码规则:产品代码+钢管长度+炉号+管号+合同号+序列号 下面我们看下【工序汇报单】的操作步骤

金蝶工序汇报扫描,通过扫描条码的方式进行工序汇报的方法

工序汇报单扫描 优势点:传统的工序汇报是纸质的,生产过程中填好,然后生产完再安排专人录入到金蝶系统里,整个过程比较费事,容易出错,而且有延时,数据不及时。录入数据的人非当事人,数据错误后容易出现扯皮的情况。 那么如果使用盘点机PDA扫描商品条码进行工序汇报,就能很好的解决这个问题了。谁操作,谁扫描,另外扫描后工序数据实时传输到后台,电脑上立即可以看到,管理层可以根据生产数据实时做出策略。从而

金蝶盘点机PDA仓库条码管理家电空调类序列号扫描出入库整体解决方案

采购入库单 传统的进销存管理软件需要人工识别商品品种,清点商品数量,然后再去人工手工在电脑上一行行的录入采购入库单。录单效率低,误差大。 如果使用汉码盘点机PDA,入库时,仓管员只需要手持PDA去入库现场,将需要入库的商品按照顺序扫描条码,即可自动生成采购入库单,从而提高工作效率和数据准确性。 盘点机PDA的采购入库单有以下功能: (1)支持采购订单作为源单下推采购入库单,实现商品品种