gpt4 book ai didi

安卓蓝牙无法发现附近的设备

转载 作者:行者123 更新时间:2023-11-30 01:19:26 25 4
gpt4 key购买 nike

我正在制作一个需要与蓝牙设备连接的 Android 应用程序。我遵循了 android 开发人员的文档,但似乎永远不会调用 bluetoothReceiver 中的 onReceive() 函数。就像没有找到任何设备。

权限

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

主 Activity 的onCreate()

bluetoothConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
enableBluetooth();
}
});

enableBluetooth() - 用于启动蓝牙

private void enableBluetooth() {
bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
//Bluetooth not supported on device
if(bluetoothAdapter == null){
Toast.makeText(getApplicationContext(), "Device Not Supporting Bluetooth", Toast.LENGTH_SHORT).show();
}

//Bluetooth not enabled
if(!bluetoothAdapter.isEnabled()){
//Open setting to enable bluetooth
Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, REQUEST_ENABLE_BT);
}
}

discoverBluetooth() - 添加到发现的蓝牙设备列表并打印到 logcat

  private void discoverBluetooth() {
bluetoothReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
Log.d("Device action: ", action);
if(BluetoothDevice.ACTION_FOUND.equals(action)){
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String discoveredDeviceName = device.getName() + " " + device.getAddress();
bluetoothList.add(discoveredDeviceName);

Log.d("Device: ", discoveredDeviceName);
}
}
};

}

onActivityResult() - 如果用户启动蓝牙调用 startDiscovery() 并调用上面的函数 discoverBluetooth()

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);

if(requestCode == REQUEST_ENABLE_BT){
if(resultCode == RESULT_OK){
Toast.makeText(getApplicationContext(), "Bluetooth Connected" , Toast.LENGTH_SHORT).show();
// Register the BroadcastReceiver

discoverBluetooth();
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(bluetoothReceiver, filter); // Don't forget to unregister during onDestroy
boolean isStarted = bluetoothAdapter.startDiscovery();
Toast.makeText(getApplicationContext(), "Bluetooth Discovery status:" + (isStarted? " Started" : " Not Started"), Toast.LENGTH_SHORT).show();


}else{
Toast.makeText(getApplicationContext(), "Bluetooth Not Connected" , Toast.LENGTH_SHORT).show();
}
}
}

onStop()

@Override
protected void onDestroy() {
unregisterReceiver(bluetoothReceiver);
super.onDestroy();

}

最佳答案

我认为你应该在AndroidManifest.xml中添加蓝牙相关的权限

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

关于安卓蓝牙无法发现附近的设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37352220/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com