Java Android-通过蓝牙将三星Galaxy Ace连接到NXT

Java Android-通过蓝牙将三星Galaxy Ace连接到NXT,java,android,eclipse,bluetooth,nxt,Java,Android,Eclipse,Bluetooth,Nxt,好的,我已经将权限添加到清单文件并配对了我的设备,但是我在这里遇到了一个崩溃:Set pairedDevices=btAdapter.getBondedDevices() 我尝试通过单击按钮进行连接: private OnClickListener myListener = new OnClickListener() { public void onClick(View v) { switch (v.getId()) { case R.id.main_bt

好的,我已经将权限添加到清单文件并配对了我的设备,但是我在这里遇到了一个崩溃:Set pairedDevices=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-bondedDevices=btAdapter.getBondedDevices() 私有void connectToNXT(){

BluetoothAdapter btAdapter=BluetoothAdapter.getDefaultAdapter();
**Set bondedDevices=btAdapter.getBondedDevices()**
蓝牙设备nxtDevice=null;
}
有人知道为什么会发生车祸吗

另外,由于我对android和蓝牙(2天:D)还很陌生,有人能告诉我一个关于android蓝牙的好教程吗

谢谢


Rich.

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

但是你不能提供一个stacktrace之类的东西吗? 没有日志,很难知道发生了什么。 如果您使用eclipse,请转到Window/Show/Android/Logcat


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

好的,在尝试了各种代码段(没有一段有效…)之后,我设法从每一段代码中提取位,并使其在我的NXT上工作

我在固件2.2.1上使用三星Galaxy Ace(安卓操作系统)智能手机

下面是有效的连接方法。如果你愿意,可以随意使用它

声明:

    // 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如果你愿意的话


丰富。

可以在设置菜单/NXT版本下找到NXT的MAC地址。在此选项下,ID号是MAC地址。无需USB

正如你所看到的,我是对的,这是一个NullPointerException。我不知道是什么导致了这个问题,我不是安卓系统的蓝牙专家,但是你把权限放在清单上了吗?手机上的BT激活了吗?你在使用模拟器吗?你试过Android团队制作的蓝牙聊天吗?它在你的设备上工作吗?是的,它是一个NPE,我会在7小时后发布日志。。。我无法将其全部添加到评论中,也无法将答案发布到我自己的帖子中:/I我已将权限添加到清单中,蓝牙在两个dvice上都已激活,并且两个设备都已配对。我还没有尝试过聊天应用程序-很好的建议,我会尝试一下。谢谢。我对我的第一条评论做了修改。您不需要发布所有stacktrace,它不会有帮助。好的,谢谢-问题仍然对任何可能看到解决方案的人开放。从android文档:getDefaultAdapter()返回默认的本地适配器,如果此硬件平台不支持蓝牙,则返回null。
    //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;
    }