Android之蓝牙操作

1、什么是蓝牙

Bluetooth是目前是使用的最广泛的无线通讯协议之一;
主要针对短距离设置通讯;5到10米
常用语连接耳机、鼠标和移动通讯设备等;


与蓝牙相关的api:
BluetoothAdapter:该类的对象代表了本地的蓝牙适配器;

BluetoothAdapter的常用方法:

 isEnabled()判断蓝牙是否打开,已打开返回true,否则,返回false

getAddress()获取本地蓝牙地址

 getName()获取本地蓝牙名称

startDiscovery()开始搜索,这是搜索的第一步

isDiscovering()判断当前是否正在查找设备,是返回true

getState()获取本地蓝牙适配器当前状态(感觉可能调试的时候更需要)

getDefaultAdapter()获取默认BluetoothAdapter,实际上,也只有这一种方法获取BluetoothAdapter

getRemoteDevice(String address)根据蓝牙地址获取远程蓝牙设备

getBondedDevices()得到所有已经配对的蓝牙适配器对象

disable()关闭蓝牙
enable()打开蓝牙,这个方法打开蓝牙不会弹出提示;

更多的时候我们需要问下用户是否打开,这两行代码同样是打开蓝牙,不过会提示用户:

//创建一个intent对象,该对象用于启动一个Activity,提示用户开户蓝牙设备
Intent intent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivity(intent);
BluetoothDevice:代表了一个远程的Bluetooth设备;

常用方法:getAddress(),getName(),同BluetoothAdapter


要蓝牙设备必须在AndroidManifest.xml声明蓝牙权限:
<uses-permission android:name="android.permission.BLUETOOTH"/>

2、修改本机蓝牙设备的可见性

在AndroidManifest.xml声明蓝牙权限:

<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

下面是一个小案例,可以:打开蓝牙,修改蓝牙设备可见性,扫描可配对的蓝牙设备;main.xml文件就三个按扭在此不再给出,直接看BluetoothActivity.java文件

public class BluetoothActivity extends Activity {
	private Button button1,button2,button3;
	BluetoothAdapter bluetoothAdapter;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        button1=(Button) findViewById(R.id.button1);
        button2=(Button)findViewById(R.id.button2);
        button3=(Button)findViewById(R.id.button3);
        //创建一个IntentFilter对象,将其action指定的BlueToothDevice.ACTION_FOUD
        IntentFilter intentFilter=new IntentFilter(BluetoothDevice.ACTION_FOUND);
        BluetoothReceiver bluetoothReceiver=new BluetoothReceiver();
        //注册广播接收器
        registerReceiver(bluetoothReceiver,intentFilter);
        bluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
        
        //打开蓝牙
        button1.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				//得到BluuetoothAdapter对象
				BluetoothAdapter adapter=BluetoothAdapter.getDefaultAdapter();
				//判断BluetoothAdapter对象是否为空,如果为空,则表明本机没有蓝牙设备
				if(adapter!=null){
					System.out.println("本机拥有蓝牙设备");
					//调用isEnabled()方法,判断当前蓝牙设备是否可用
					if(!adapter.isEnabled()){
						//创建一个intent对象,该对象用于启动一个Activity,提示用户开户蓝牙设备
						Intent intent=new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
						startActivity(intent);	
					}
					//得到所有已经配对的蓝牙适配器对象
					Set<BluetoothDevice> devices=adapter.getBondedDevices();
					if(devices.size()>0){
						for(Iterator iterator=devices.iterator();iterator.hasNext();){
							BluetoothDevice bluetoothDevice=(BluetoothDevice) iterator.next();
							//得到远程蓝牙设备的地址
							System.out.println(bluetoothDevice.getAddress());
						}
					}
				}else{
					System.out.println("没有蓝牙设备");
				}
			}
		});
        //该监听器用于修改蓝牙设备可见性
        button2.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				 // 创建一个Intent对象,并将其action的值设置为BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE
				Intent discoverableIntent=new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
				//将一个键值对存放到Intent对象当中,主要用于指定可见状态的持续时间
				discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 500);
				startActivity(discoverableIntent);
			}
		});
        //扫描可配对的蓝牙设备
        button3.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				bluetoothAdapter.startDiscovery();
			}
		});
    }
	private class BluetoothReceiver extends BroadcastReceiver{
    	
		@Override
		public void onReceive(Context context, Intent intent) {
			String action=intent.getAction();
			if(BluetoothDevice.ACTION_FOUND.equals(action)){
				//可以从收到的Intent对象当中,将代表远程蓝牙适配器的对象取出
				BluetoothDevice device=intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
				System.out.println(device.getAddress());
			}
		}
    }
}
在做之前必须要一个android手机有蓝牙的,还有一台电脑有蓝牙的,否则不成功,
还有别忘了在 AndroidManifest.xml声明蓝牙权限:

<uses-permission android:name="android.permission.BLUETOOTH"/>
 <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值