Android-чат приложение чата (устройство теряет связь сразу) - PullRequest
1 голос
/ 02 февраля 2011

Я проходил здесь несколько потоков и не нашел ответа на вопрос, с которым сталкиваюсь.

Моя настройка: у меня есть компьютер Mac, который я использую в качестве виртуального последовательного порта.порт для связи с моим телефоном Android Nexus S.Запустив приложение чата bluetooth на телефоне и используя его в качестве клиента для связи с виртуальной связью, которую я настроил.

Изначально я попробовал приложение для чата bluetooth с двумя телефонами Android, чтобы убедиться, что оно работает, что и делает.Я могу отправлять тексты туда и обратно.

Мой вариант использования: у меня есть устройство, которое считывает метки RFid и отправляет данные на телефон Android для сбора информации.

Я использую свой компьютерпредставлять мое устройство на данный момент.

++++++++++++++++++ Хорошо, проблема

Я пытаюсь подключиться к ПК с моего телефона, и сначала я получаюОбновление строки состояния «Соединение ....» и после примерно 15 секунд я получаю тостовое сообщение «Я подключен к ПК», но сразу после того, как я получаю тост «Устройство потеряло соединение».Затем строка состояния переходит в состояние «не подключено»

Когда я перехожу через отладчик, кажется, что он не работает в следующей части приложения чата Bluetooth.В частности, эта строка (bytes = mmInStream.read(buffer);)

    public void run() {
        Log.i(TAG, "BEGIN mConnectedThread");
        byte[] buffer = new byte[1024];
        int bytes;

        // Keep listening to the InputStream while connected
        while (true) {
            try {
                // Read from the InputStream
                bytes = mmInStream.read(buffer);

                // Send the obtained bytes to the UI Activity
                mHandler.obtainMessage(BluetoothChat.MESSAGE_READ, bytes, -1, buffer)
                        .sendToTarget();
            } catch (IOException e) {
                Log.e(TAG, "disconnected", e);
                connectionLost();
                break;
            }
        }
    }

Когда я смотрю в logcat, для ввода-вывода исключение "software caused connection abort" для read () на inputtream.

Вопросы:Это связано с тем, что мой виртуальный порт не настроен правильно?У меня есть терминал и я жду получения ввода в /dev/tty.Nexus .... с помощью экранной команды @ 9600 бод

В противном случае, я подумал, что, возможно, сокет, к которому подключается входной поток, недоступен.Я напечатал это, чтобы войти, и кажется, что это не было НЕДЕЙСТВИТЕЛЬНО.Каждый раз, когда я прохожу, он умирает в ConnectThread , а не в ConnectedThread .

Следующая часть кода: конкретно эта строка (mmSocket.connect();)

        public void run() {
        Log.i(TAG, "BEGIN mConnectThread");
        setName("ConnectThread");

        // Always cancel discovery because it will slow down a connection
        mAdapter.cancelDiscovery();

        // Make a connection to the BluetoothSocket
        try {
            // This is a blocking call and will only return on a
            // successful connection or an exception
            mmSocket.connect();
        } catch (IOException e) {
            connectionFailed();
            // Close the socket
            try {
                mmSocket.close();
            } catch (IOException e2) {
                Log.e(TAG, "unable to close() socket during connection failure", e2);
            }
            // Start the service over to restart listening mode
            BluetoothChatService.this.start();
            return;
        }

        // Reset the ConnectThread because we're done
        synchronized (BluetoothChatService.this) {
            mConnectThread = null;
        }

        // Start the connected thread
        connected(mmSocket, mmDevice);
    }

Интересно, теряет ли переменная сокета область видимости из-за многопоточности и передается ли сокет?

Спасибо

1 Ответ

0 голосов
/ 28 февраля 2011

Как вы настраиваете виртуальный последовательный пост на вашем Mac PC. Поскольку вы пытались запустить приложение на 2 телефонах, и оно работает, я думаю, что проблема на ПК.

Я разместил запись об Android и Java Bluetooth здесь . Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...