0

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

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

现在我可以使用“扫描按钮”列出我已配对的设备。但是当我想使用“发现”按钮通过我的应用程序扫描设备时,当我输入代码时它总是崩溃btn_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;
}

} `

4

1 回答 1

0

我解决它。

我添加了一个新的 xml 文件名device_name

并修改以下代码:

newDevicelistArrayAdapter = new ArrayAdapter<String>(this, R.layout.device_name);

它可以通过 ListView 显示蓝牙设备。

于 2013-09-29T12:06:24.163 回答