0

好的,所以我已将权限添加到清单文件并配对了我的设备,但我在这里遇到了崩溃: SetpairedDevices = btAdapter.getBondedDevices();

我尝试通过单击按钮进行连接:

private OnClickListener myListener = new OnClickListener() {
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.main_btnYes:
            connectToNXT(); // connect to NXT
                myIntent = new Intent(v.getContext(), SelectSession.class);
                startActivityForResult(myIntent, 0);
            break;
        case R.id.main_btnNo:
            myIntent = new Intent(v.getContext(), ExitScreen.class);
            startActivityForResult(myIntent, 0);
            break;
        }
    }
};

这里是 connectToNXT() 方法: 崩溃发生在这里:Set bondingDevices = btAdapter.getBondedDevices(); 私人无效connectToNXT(){

        BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();

        **Set<BluetoothDevice> bondedDevices = btAdapter.getBondedDevices();**

        BluetoothDevice nxtDevice = null;   

}

任何人都知道为什么这会导致崩溃?

另外,由于我对 android 和蓝牙很陌生(2 天:D),有人可以让我知道一个很好的 android 蓝牙教程吗?

谢谢,

富有的。

4

3 回答 3

1

NXT的MAC地址可以在设置菜单/NXT版本下找到。在这个选项下,ID号是MAC地址。不需要USB!

于 2011-09-08T09:09:34.023 回答
0

我的猜测:NullPointerException。您的 btadapter 变量为 null,并且您尝试从中调用方法,这会导致 NullPointerException。

但是您不能提供堆栈跟踪或其他东西吗?没有日志很难知道发生了什么。如果您使用 Eclipse,请转到 Window/Show/Android/Logcat。

您还可以在调试模式下运行您的应用程序,并在您的应用程序崩溃的行之前放置一个断点,并查看 btaadapter 是否有值。

于 2011-07-25T14:44:22.733 回答
0

好吧,在尝试了各种代码之后(没有一个有效......),我设法从它们中提取了一些信息并让它在我的 NXT 上工作。

我在固件 2.2.1 上使用三星 Galaxy Ace(android OS) 智能手机

这是有效的连接方法。如果您愿意,请随意使用它。

声明:

    // This is the NXT Mac Address. Each device has a specific Mac. Find it in the Build output when uploading
    // your NXT app to the brick using a USB cable. MUST USE USB CABLE TO SEE MAC ADDRESS!
    final String nxtMac = "00:16:53:05:3C:F5";
    //Important: This is the data stream used to communicate with the NXT.
    private DataOutputStream nxtDos = null;
    BluetoothAdapter localAdapter;
    BluetoothSocket nxtSocket;
    boolean success = false;

连接方法

    //Connect to NXT
    public boolean connectToNXT() {         
        // get the BluetoothDevice of the NXT
        BluetoothDevice nxt = localAdapter.getRemoteDevice(nxtMac);
        //Try to connect to the nxt
        try {
            nxtSocket = nxt.createRfcommSocketToServiceRecord(UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"));
            nxtSocket.connect();
            //Get the Data stream
            nxtDos = new DataOutputStream(nxtSocket.getOutputStream());
            success = true;
        } catch (IOException e) {
            Log.d("Bluetooth", "Err: Device not found or cannot connect");
            success = false;
        }
        return success;
    }

如果需要,请发送电子邮件至 richardcloete@googlemail.com。

富有的。

于 2011-07-26T15:29:48.493 回答