要在Android Studio中使用Kotlin连接到蓝牙设备,可以按照以下步骤进行操作:
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothDevice
import android.bluetooth.BluetoothSocket
import java.io.IOException
import java.util.*
class BluetoothConnection(private val device: BluetoothDevice) {
private val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
private var bluetoothSocket: BluetoothSocket? = null
fun connect(): Boolean {
val uuid: UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB") // 需要匹配蓝牙设备的UUID
return try {
bluetoothSocket = device.createRfcommSocketToServiceRecord(uuid)
bluetoothSocket?.connect()
true
} catch (e: IOException) {
false
}
}
fun disconnect() {
try {
bluetoothSocket?.close()
} catch (e: IOException) {
e.printStackTrace()
}
}
}
import android.Manifest
import android.bluetooth.BluetoothAdapter
import android.bluetooth.BluetoothDevice
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
class MainActivity : AppCompatActivity() {
private val bluetoothAdapter: BluetoothAdapter? = BluetoothAdapter.getDefaultAdapter()
private val REQUEST_ENABLE_BLUETOOTH = 1
private val REQUEST_PERMISSION_ACCESS_COARSE_LOCATION = 2
private lateinit var bluetoothConnection: BluetoothConnection
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
// 检查设备是否支持蓝牙
if (bluetoothAdapter == null) {
Toast.makeText(this, "设备不支持蓝牙", Toast.LENGTH_SHORT).show()
return
}
// 请求打开蓝牙
if (!bluetoothAdapter.isEnabled) {
val enableBluetoothIntent = Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE)
startActivityForResult(enableBluetoothIntent, REQUEST_ENABLE_BLUETOOTH)
} else {
setupBluetoothConnection()
connectToBluetoothDevice()
}
// 检查定位权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(
this,
arrayOf(Manifest.permission.ACCESS_COARSE_LOCATION),
REQUEST_PERMISSION_ACCESS_COARSE_LOCATION
)
}
}
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_ENABLE_BLUETOOTH && resultCode == RESULT_OK) {
setupBluetoothConnection()
connectToBluetoothDevice()
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_PERMISSION_ACCESS_COARSE_LOCATION) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
setupBluetoothConnection()
connectToBluetoothDevice()
}
}
}
private fun setupBluetoothConnection() {
val pairedDevices: Set? = bluetoothAdapter?.bondedDevices
val device: BluetoothDevice? = pairedDevices?.find { it.name == "Your Bluetooth Device Name" } // 替换为你的蓝牙设备名称
device?.let {
bluetoothConnection = BluetoothConnection(device)
}
}
private fun connectToBluetoothDevice() {
if (bluetoothConnection.connect()) {
Toast.makeText(this, "蓝牙连接成功", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "蓝牙连接失败", Toast.LENGTH_SHORT).show()
}
}
override fun onDestroy() {
super.onDestroy()
bluetoothConnection.disconnect()
}
}
请注意,上述代码中的“Your Bluetooth