Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Android中发现蓝牙设备?_Android_Bluetooth_Bluetooth Lowenergy - Fatal编程技术网

如何在Android中发现蓝牙设备?

如何在Android中发现蓝牙设备?,android,bluetooth,bluetooth-lowenergy,Android,Bluetooth,Bluetooth Lowenergy,我正在开发一个应用程序,我必须连接到蓝牙设备。 我使用“adb推送”将我的apk推送到android x86。 Android-x86的蓝牙正常,可以扫描蓝牙设备 我这里用两个按钮。 其中一个按钮叫“扫描”,它列出了我配对的设备。 另一个呼叫发现,它的工作是扫描蓝牙设备 现在我可以使用“扫描按钮”列出我配对的设备。 但是,当我想使用“发现”按钮通过我的应用程序扫描设备时,当我在btn\u discover.setOnClickListener: 我该怎么办 这是我的密码 公共类主要扩展活动{ p

我正在开发一个应用程序,我必须连接到蓝牙设备。 我使用“adb推送”将我的apk推送到android x86。 Android-x86的蓝牙正常,可以扫描蓝牙设备

我这里用两个按钮。 其中一个按钮叫“扫描”,它列出了我配对的设备。 另一个呼叫发现,它的工作是扫描蓝牙设备

现在我可以使用“扫描按钮”列出我配对的设备。 但是,当我想使用“发现”按钮通过我的应用程序扫描设备时,当我在
btn\u discover.setOnClickListener:

我该怎么办

这是我的密码

公共类主要扩展活动{

private BluetoothAdapter mBluetoothAdapter;
private static final int REQUEST_SELECT_DEVICE = 1;
private Button btn_scan;
private Button btn_discover;
private TextView pair_list;
private TextView scan_list;


private Set<BluetoothDevice> pairedDevices;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    btn_scan = (Button)findViewById(R.id.btn_scan);
    pair_list = (TextView)findViewById(R.id.pair_list);



    mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if (mBluetoothAdapter == null)
    {
        Toast.makeText(this, "No support bluetooth", Toast.LENGTH_SHORT).show();
        return;
    }else if(mBluetoothAdapter != null)     {
        Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
        startActivityForResult(enableBtIntent, REQUEST_SELECT_DEVICE);
    }


    //******************scan按鈕動作-將已配對過的藍芽裝置列出來
    btn_scan.setOnClickListener(new OnClickListener() {     
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            pairedDevices = mBluetoothAdapter.getBondedDevices();
            if(pairedDevices.size()>0)  {
                for(BluetoothDevice bDevice : pairedDevices)  {
                    pair_list.append(bDevice.getName() + "\n" + bDevice.getAddress() + "\n" + bDevice.getBondState() + "\n" );
                }
            }
        }
    });
    //******************scan按鈕動作結束


    btn_discover.setOnClickListener(new OnClickListener() {     
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
            registerReceiver(mReceiver, filter);
        }
    });


}


protected void onDestroy() {

super.onDestroy();
if (mBluetoothAdapter != null) {
    mBluetoothAdapter.cancelDiscovery();
    }
unregisterReceiver(mReceiver);
}


private final BroadcastReceiver mReceiver = new BroadcastReceiver() {

    @Override
    public void onReceive(Context context, Intent intent) {
        // TODO Auto-generated method stub
        String action = intent.getAction();
        if (BluetoothDevice.ACTION_FOUND.equals(action)) {
            BluetoothDevice device = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            scan_list.append(device.getName() + "\n" + device.getAddress() + "\n");
        }
    }
};






@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
专用蓝牙适配器mBluetoothAdapter;
专用静态最终整数请求\u选择\u设备=1;
私人按钮btn_扫描;
私人按钮btn_discover;
私有文本视图对列表;
私有文本视图扫描列表;
专用配对设备;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btn_扫描=(按钮)findViewById(R.id.btn_扫描);
pair_list=(TextView)findViewById(R.id.pair_list);
mBluetoothAdapter=BluetoothAdapter.getDefaultAdapter();
if(mBluetoothAdapter==null)
{
Toast.makeText(这是“不支持蓝牙”,Toast.LENGTH_SHORT).show();
返回;
}else if(mBluetoothAdapter!=null){
Intent enablebintent=新意图(BluetoothAdapter.ACTION\u REQUEST\u ENABLE);
startActivityForResult(启用BTINTENT、请求和选择设备);
}
//******************扫描按鈕動作-將已配對過的藍芽裝置列出來
btn_scan.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
pairedDevices=mBluetoothAdapter.getBondedDevices();
如果(pairedDevices.size()>0){
用于(蓝牙设备b设备:pairedDevices){
pair_list.append(bDevice.getName()+“\n”+bDevice.getAddress()+“\n”+bDevice.getBondState()+”\n”);
}
}
}
});
//******************扫描按鈕動作結束
btn_discover.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
IntentFilter筛选器=新的IntentFilter(BluetoothDevice.ACTION\u已找到);
registerReceiver(mrReceiver,过滤器);
}
});
}
受保护的空onDestroy(){
super.ondestory();
if(mBluetoothAdapter!=null){
mBluetoothAdapter.cancelDiscovery();
}
未注册接收人(mReceiver);
}
专用最终广播接收器mReceiver=新广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
//TODO自动生成的方法存根
String action=intent.getAction();
if(BluetoothDevice.ACTION_FOUND.equals(ACTION)){
BluetoothDevice=intent.getParcelableExtra(BluetoothDevice.EXTRA\u设备);
扫描列表.append(device.getName()+“\n”+device.getAddress()+”\n”);
}
}
};
@凌驾
公共布尔onCreateOptions菜单(菜单){
//为菜单充气;这会将项目添加到操作栏(如果存在)。
getMenuInflater().充气(R.menu.main,menu);
返回true;
}
} `我解决了它

我添加了一个新的xml文件名
device\u name

并修改以下代码:

newDevicelistArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);
newDeviceListarayAdapter=newArrayAdapter(这个,R.layout.device\u名称);
它可以通过ListView显示蓝牙设备