package com.example.bluetoothdemo;
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.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import java.util.Iterator;
import java.util.Set;
public class MainActivity extends AppCompatActivity {
private String Tag = MainActivity.class.getSimpleName();
private TextView tvMain;
private Button btnSetBluetoothVisible;
private Button btnSetScanMode;
private BluetoothAdapter bluetoothAdapter;
private BluetoothReceiver bluetoothReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvMain = findViewById(R.id.tv_main);
btnSetBluetoothVisible = findViewById(R.id.btn_set_bluetooth_visible);
btnSetScanMode = findViewById(R.id.btn_set_scan_mode);
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
bluetoothReceiver = new BluetoothReceiver();
tvMain.setOnClickListener(v -> {
if (bluetoothAdapter == null) {
Log.e(Tag, "本机器没有蓝牙设备");
return;
}
Log.e(Tag, "本机器有蓝牙设备");
if (!bluetoothAdapter.isEnabled()) {
Log.e(Tag, "本机器蓝牙设备不可用");
startActivity(new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE));
return;
}
Log.e(Tag, "本机器蓝牙设备可用");
Set<BluetoothDevice> devices = bluetoothAdapter.getBondedDevices();
if (devices == null) {
Log.e(Tag, "获取本机绑定的设备错误");
return;
}
if (devices.size() < 1) {
Log.e(Tag, "本机未绑定过其它蓝牙设备");
return;
}
for (Iterator iterator = devices.iterator(); iterator.hasNext(); ) {
BluetoothDevice item = (BluetoothDevice) iterator.next();
Log.e(Tag, "已经绑定的蓝牙地址:" + item.getAddress() + " 名称:" + item.getName());
}
});
btnSetBluetoothVisible.setOnClickListener(v -> {
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);//设置蓝牙多少秒可见
intent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);
startActivity(intent);
});
btnSetScanMode.setOnClickListener(v -> {
if (bluetoothAdapter == null)
return;
bluetoothAdapter.startDiscovery();
});
IntentFilter intentFilter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(bluetoothReceiver, intentFilter);
}
private class BluetoothReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.contains(action)) {
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Log.e(Tag, "扫描设备地址:" + device.getAddress() + " 名称:" + device.getName());
}
}
}
}