Java 可用蓝牙设备列表
首先,我是android编程新手 现在我的问题是,我想创建一个应用程序,列出附近可用的蓝牙设备,我阅读了android概述,并试图按照它,但我的代码不起作用,会有什么问题 我已经读了一些文章,但我无法让它发挥作用Java 可用蓝牙设备列表,java,android,Java,Android,首先,我是android编程新手 现在我的问题是,我想创建一个应用程序,列出附近可用的蓝牙设备,我阅读了android概述,并试图按照它,但我的代码不起作用,会有什么问题 我已经读了一些文章,但我无法让它发挥作用 package com.example.arduinobluetoothinterface; import android.bluetooth.BluetoothAdapter; import android.bluetooth.BluetoothDevice; import andr
package com.example.arduinobluetoothinterface;
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.ListView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.Set;
public class Main2Activity extends AppCompatActivity {
//set an ArrayList for the bluetooth Devices Names
ArrayList<BtDevicesClass> listOfDevices = new ArrayList<>();
final BluetoothAdapter BluetoothDevices = BluetoothAdapter.getDefaultAdapter();
// Create a BroadcastReceiver for ACTION_FOUND.
private final BroadcastReceiver receiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
// Discovery has found a device. Get the BluetoothDevice
// object and its info from the Intent.
BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
listOfDevices.add(new BtDevicesClass(deviceHardwareAddress,deviceName));
}
}
};
@Override
protected void onDestroy() {
super.onDestroy();
// Don't forget to unregister the ACTION_FOUND receiver.
unregisterReceiver(receiver);
BluetoothDevices.disable();
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(receiver, filter);
setContentView(R.layout.activity_main2);
//set the bluetooth adapter
//set a List view for the bluetooth Devices
ListView listofItems = (ListView) findViewById(R.id.root_view);
//set Adapter
ArrayAdapterBt itemAdapter = new ArrayAdapterBt(this, listOfDevices);
//append list item to ArrayAdapter
listofItems.setAdapter(itemAdapter);
//check if the bluetooth service is avaliable on the device
if (BluetoothDevices != null) { //check if the device supports bluetooth
/*
** if the bluetooth module is not enabled this block of code pops-up a message to
* enable it via an Intent , this is done by performing an Intent as shown below
*/
if (!BluetoothDevices.isEnabled()) {
Intent bluetoothenableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(bluetoothenableIntent, 0);
}
Toast.makeText(getApplicationContext(),"Searching for nearby Devices",Toast.LENGTH_SHORT).show();
Intent makeDeviceDiscouvrable = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
startActivityForResult(makeDeviceDiscouvrable,0);
BluetoothDevices.startDiscovery();
Set<BluetoothDevice> pairedDevices = BluetoothDevices.getBondedDevices();
if (pairedDevices.size() > 0) {
// There are paired devices. Get the name and address of each paired device.
for (BluetoothDevice device : pairedDevices) {
String deviceName = device.getName();
String deviceHardwareAddress = device.getAddress(); // MAC address
listOfDevices.add(new BtDevicesClass(deviceHardwareAddress,deviceName));
}
}
}
}
}
package com.example.arduinobluetoothinterface;
导入android.bluetooth.BluetoothAdapter;
导入android.bluetooth.bluetooth设备;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.support.v7.app.AppActivity;
导入android.os.Bundle;
导入android.util.Log;
导入android.widget.ListView;
导入android.widget.Toast;
导入java.util.ArrayList;
导入java.util.Set;
公共类Main2活动扩展了AppCompative活动{
//为蓝牙设备名称设置ArrayList
ArrayList listOfDevices=新的ArrayList();
最终BluetoothAdapter BluetoothDevices=BluetoothAdapter.getDefaultAdapter();
//为找到的操作创建广播接收器。
专用最终BroadcastReceiver=新的BroadcastReceiver(){
公共void onReceive(上下文、意图){
String action=intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(ACTION)){
//Discovery已找到设备。获取Bluetooth设备
//对象及其来自意图的信息。
BluetoothDevice=intent.getParcelableExtra(BluetoothDevice.EXTRA\u设备);
字符串deviceName=device.getName();
String deviceHardwareAddress=device.getAddress();//MAC地址
添加(新的BTDeviceClass(deviceHardwareAddress,deviceName));
}
}
};
@凌驾
受保护的空onDestroy(){
super.ondestory();
//别忘了注销您找到的操作接收器。
未注册接收人(接收人);
BluetoothDevices.disable();
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
IntentFilter筛选器=新的IntentFilter(BluetoothDevice.ACTION\u已找到);
寄存器接收器(接收器、过滤器);
setContentView(R.layout.activity_main2);
//设置蓝牙适配器
//设置蓝牙设备的列表视图
ListView listofItems=(ListView)findViewById(R.id.root\u视图);
//设置适配器
ArrayAdapterBt itemAdapter=新的ArrayAdapterBt(此为listOfDevices);
//将列表项附加到ArrayAdapter
setAdapter(itemAdapter);
//检查设备上是否提供蓝牙服务
如果(BluetoothDevices!=null){//检查设备是否支持蓝牙
/*
**如果未启用蓝牙模块,则此代码块会弹出一条消息,提示:
*通过意图启用它,这是通过执行如下所示的意图来实现的
*/
如果(!BluetoothDevices.isEnabled()){
意图bluetoothenableIntent=新意图(BluetoothAdapter.ACTION\u REQUEST\u ENABLE);
startActivityForResult(bluetoothenableIntent,0);
}
Toast.makeText(getApplicationContext(),“搜索附近的设备”,Toast.LENGTH_SHORT.show();
Intent makeDeviceDiscouvrable=新的Intent(BluetoothAdapter.ACTION\u REQUEST\u DISCOVERABLE);
startActivityForResult(使设备可切换,0);
BluetoothDevices.startDiscovery();
Set pairedDevices=BluetoothDevices.getBondedDevices();
如果(pairedDevices.size()>0){
//存在已配对的设备。获取每个已配对设备的名称和地址。
用于(蓝牙设备:pairedDevices){
字符串deviceName=device.getName();
String deviceHardwareAddress=device.getAddress();//MAC地址
添加(新的BTDeviceClass(deviceHardwareAddress,deviceName));
}
}
}
}
}
尝试以下代码:
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
List<String> bluetoothList = new ArrayList<String>();
for(BluetoothDevice bluetooth : pairedDevices)
bluetoothList.add(bluetooth.getName());
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, bluetoothList));
BluetoothAdapter mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
设置pairedDevices=mBluetoothAdapter.getBondedDevices();
List bluetoothList=新的ArrayList();
用于(蓝牙设备蓝牙:pairedDevices)
添加(bluetooth.getName());
setListAdapter(新的ArrayAdapter(this,R.layout.list_项,bluetoothList));
您好,先生,谢谢您的回复,我设法让它工作了,我尝试了另一种方法,而不是您的方法,但是当我尝试单击设备连接到它时,应用程序崩溃,无论我做什么,它仍然崩溃,您知道为什么吗,这是代码