Android - Подключение Samsung Galaxy Ace VIA Bluetooth к NXT - PullRequest
0 голосов
/ 25 июля 2011

Хорошо, поэтому я добавил разрешение в файл манифеста и связал мои устройства, но я получаю сбой прямо здесь: 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 (); private void connectToNXT () {

        BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter();

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

        BluetoothDevice nxtDevice = null;   

}

Кто-нибудь знает, почему это может вызвать сбой?

Кроме того, так как я довольно новичок в Android и Bluetooth (2 дня: D), кто-нибудь может быть настолько любезен, чтобы сообщить мне о хорошем учебнике по Android Bluetooth?

Спасибо

Rich.

Ответы [ 3 ]

1 голос
/ 08 сентября 2011

MAC-адрес NXT можно найти в меню настроек / версии NXT.в этом случае идентификатором является MAC-адрес. Нет необходимости в USB!

0 голосов
/ 26 июля 2011

Что ж, после опробования различных кусков кода (ни один из которых не работал ...) мне удалось взять биты у каждого из них и заставить его работать на моем NXT.

Я используюсмартфон Samsung Galaxy Ace (android OS) на прошивке 2.2.1

Вот метод подключения, который работает.Не стесняйтесь использовать его, если хотите.

Объявления:

    // 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;
    }

Emailмне на richardcloete@googlemail.com, если хотите.

Rich.

0 голосов
/ 25 июля 2011

Мое предположение: исключение NullPointerException. Ваша переменная btadapter имеет значение null, и вы пытаетесь вызвать из нее метод, который вызывает исключение NullPointerException.

Но вы не можете предоставить трассировку стека или что-то еще? Без бревна трудно понять, что произошло. Если вы используете eclipse, перейдите в Window / Show / Android / Logcat.

Вы также можете запустить свое приложение в режиме отладки и поставить точку останова непосредственно перед строкой, в которой происходит сбой приложения, и посмотреть, имеет ли значение btadapter.

...