android 经典蓝牙开发输出封装类
经典蓝牙开发中,可以封装一个BluetoothManager类来实现蓝牙功能的管理和操作。下面是一个简单的BluetoothManager类的封装示例:
import android.bluetooth.BluetoothAdapter;
import android.bluetooth.BluetoothDevice;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
public class BluetoothManager {
private Context mContext;
private BluetoothAdapter mBluetoothAdapter;
private BluetoothListener mListener;
public BluetoothManager(Context context) {
mContext = context;
mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
}
public void setBluetoothListener(BluetoothListener listener) {
mListener = listener;
}
public boolean isBluetoothSupported() {
return mBluetoothAdapter != null;
}
public boolean isBluetoothEnabled() {
return mBluetoothAdapter.isEnabled();
}
public void enableBluetooth() {
if (!isBluetoothEnabled()) {
Intent enableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
mContext.startActivity(enableIntent);
}
}
public void disableBluetooth() {
if (isBluetoothEnabled()) {
mBluetoothAdapter.disable();
}
}
public void startDiscovery() {
if (mBluetoothAdapter.isDiscovering()) {
mBluetoothAdapter.cancelDiscovery();
}
mBluetoothAdapter.startDiscovery();
}
public void stopDiscovery() {
if (mBluetoothAdapter.isDiscovering()) {
mBluetoothAdapter.cancelDiscovery();
}
}
public void registerBluetoothReceiver() {
IntentFilter filter = new IntentFilter();
filter.addAction(BluetoothAdapter.ACTION_STATE_CHANGED);
filter.addAction(BluetoothDevice.ACTION_FOUND);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_STARTED);
filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
mContext.registerReceiver(mBluetoothReceiver, filter);
}
public void unregisterBluetoothReceiver() {
mContext.unregisterReceiver(mBluetoothReceiver);
}
private BroadcastReceiver mBluetoothReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
if (state == BluetoothAdapter.STATE_ON) {
if (mListener != null) {
mListener.onBluetoothEnabled();
}
} else if (state == BluetoothAdapter.STATE_OFF) {
if (mListener != null) {
mListener.onBluetoothDisabled();
}
}
} else if (action.equals(BluetoothDevice.ACTION_FOUND)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
if (mListener != null) {
mListener.onDeviceFound(device);
}
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_STARTED)) {
if (mListener != null) {
mListener.onDiscoveryStarted();
}
} else if (action.equals(BluetoothAdapter.ACTION_DISCOVERY_FINISHED)) {
if (mListener != null) {
mListener.onDiscoveryFinished();
}
}
}
};
public interface BluetoothListener {
void onBluetoothEnabled();
void onBluetoothDisabled();
void onDeviceFound(BluetoothDevice device);
void onDiscoveryStarted();
void onDiscoveryFinished();
}
}
上述代码中的BluetoothManager类封装了一些常用的蓝牙功能,包括检测蓝牙是否支持、蓝牙是否已启用、启用和禁用蓝牙、开始和停止设备的发现、注册和注销蓝牙广播接收器等。通过setBluetoothListener方法可以设置一个BluetoothListener监听器,用于接收蓝牙状态和设备发现的回调。
实际使用时,可以在Activity或Fragment中创建一个BluetoothManager对象,并在需要的地方调用其相应方法,如下所示:
BluetoothManager bluetoothManager = new BluetoothManager(this);
bluetoothManager.setBluetoothListener(new BluetoothManager.BluetoothListener() {
@Override
public void onBluetoothEnabled() {
// 蓝牙已启用
}
@Override
public void onBluetoothDisabled() {
// 蓝牙已禁用
}
@Override
public void onDeviceFound(BluetoothDevice device) {
// 发现蓝牙设备
}
@Override
public void onDiscoveryStarted() {
// 开始设备发现
}
@Override
public void onDiscoveryFinished() {
// 停止设备发现
}
});
if (bluetoothManager.isBluetoothSupported()) {
if (!bluetoothManager.isBluetoothEnabled()) {
bluetoothManager.enableBluetooth();
} else {
bluetoothManager.startDiscovery();
}
}
上述代码中创建了一个BluetoothManager对象,并设置了BluetoothListener监听器。然后判断设备是否支持蓝牙,如果支持,则判断蓝牙是否已启用,如果未启用,则调用enableBluetooth方法启用蓝牙;如果已启用,则调用startDiscovery方法开始设备发现。当蓝牙状态发生变化或发现蓝牙设备时,会通过BluetoothListener接口中的回调方法进行相应的处理。
这只是一个简单的蓝牙开发封装示例,具体的功能和实现方式可以根据实际需求进行调整和拓展

原文地址: http://www.cveoy.top/t/topic/iuNe 著作权归作者所有。请勿转载和采集!