package com.example.demo;import java.util.Set;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.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class MainActivity extends Activity implements OnClickListener{private TextView tv;private Button start, end, search;private BluetoothAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);tv = (TextView) findViewById(R.id.textView);start = (Button) findViewById(R.id.start);end = (Button) findViewById(R.id.end);search = (Button) findViewById(R.id.search);start.setOnClickListener(this);end.setOnClickListener(this);search.setOnClickListener(this);//获取蓝牙适配器的实例adapter = BluetoothAdapter.getDefaultAdapter();//定义一个数据集,用来存储先有以有的蓝牙设备列表Set device = adapter.getBondedDevices();//如果有if (device.size() > 0){//遍历集合,添加到列表for (BluetoothDevice bluetoothDevice : device){tv.setText(bluetoothDevice.getName() + ","+ bluetoothDevice.getAddress());}}//注册正在搜索蓝牙时发送的广播IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);registerReceiver(receiver, filter);//注册搜索完成后发送的广播filter = new IntentFilter(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);registerReceiver(receiver, filter);}private BroadcastReceiver receiver = new BroadcastReceiver(){@Overridepublic void onReceive(Context context, Intent intent){String action = intent.getAction();// 如果找到了设备if (BluetoothDevice.ACTION_FOUND.equals(action)){BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);// 判断配对,如果没有配对,就添加到列表if (device.getBondState() != BluetoothDevice.BOND_BONDED){tv.append(device.getName() + ":" + device.getAddress());}//如果搜索完成} else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)){setTitle("扫描完成");}}};@Overridepublic void onClick(View v){switch (v.getId()){case R.id.start://静默开启蓝牙adapter.enable();break;case R.id.search://扫描蓝牙setTitle("正在扫描...");// 如果正在搜索(扫描只能执行一次,如果蓝牙正在扫描,又执行了一次扫描,会报错)if (adapter.isDiscovering()){// 就取消adapter.cancelDiscovery();}// 开启蓝牙搜索,此函数是运行在子线程中的adapter.startDiscovery();break;case R.id.end://静默关闭adapter.disable();break;default:break;}}}

更多相关文章

  1. ANDROID媒体文件扫描
  2. android启动蓝牙的过程 (高通方案)
  3. Android(安卓)优化开机速度
  4. android 蓝牙权限问题
  5. hciconfig - HCI device configuration utility
  6. Android(安卓)蓝牙通信
  7. android 蓝牙文件
  8. 蓝牙socket读取数据需读多次才读全
  9. android中按键的扫描码和键值

随机推荐

  1. 学习:Android常用控件
  2. Android Studio如何使用快捷键生成get,set
  3. android捕获Home键的方法
  4. Android分别使用HTTP协议和TCP协议实现上
  5. WebRTC Android(安卓)源码编译
  6. android开机自动唤醒屏幕、打开锁屏页并
  7. Android 选项卡实现
  8. 【Android】Android如何查看分区情况
  9. 下载、更新Android(安卓)SDK慢的解决方案
  10. android用户界面之SeekBar教程实例汇总