代码之家  ›  专栏  ›  技术社区  ›  Fakebear

如何使用对象推送协议连接蓝牙适配器?

  •  0
  • Fakebear  · 技术社区  · 14 年前

    我在android2.1中看到它强调了新的平台支持:“蓝牙2.1,新的BT模式:对象推送模式(OPP)和电话簿访问模式(PBAP)”。现在我有了支持OPP的蓝牙适配器。我可以搜索和配对。但是我怎样才能得到它发给我的txt文件呢。此函数没有API。我使用的是BluetoothChat示例代码,结构如下。但是代码被阻塞了 “字节=mmInStream.read读取(缓冲区);”。 什么也没发生。为什么?什么都没收到?

    private class ConnectedThread extends Thread {
        private final BluetoothSocket mmSocket;
        private final InputStream mmInStream;
        private final OutputStream mmOutStream;
    
        public ConnectedThread(BluetoothSocket socket) {
            Log.d(TAG, "create ConnectedThread");
            mmSocket = socket;
            InputStream tmpIn = null;
            OutputStream tmpOut = null;
    
            // Get the BluetoothSocket input and output streams
            try {
                tmpIn = socket.getInputStream();
                tmpOut = socket.getOutputStream();
            } catch (IOException e) {
                Log.e(TAG, "temp sockets not created", e);
            }
    
            mmInStream = tmpIn;
            mmOutStream = tmpOut;
        }
    
        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;
                }
            }
        }
    
        /**
         * Write to the connected OutStream.
         * @param buffer  The bytes to write
         */
        public void write(byte[] buffer) {
            try {
                mmOutStream.write(buffer);
    
                // Share the sent message back to the UI Activity
                mHandler.obtainMessage(BluetoothChat.MESSAGE_WRITE, -1, -1, buffer)
                        .sendToTarget();
            } catch (IOException e) {
                Log.e(TAG, "Exception during write", e);
            }
        }
    
        public void cancel() {
            try {
                mmSocket.close();
            } catch (IOException e) {
                Log.e(TAG, "close() of connect socket failed", e);
            }
        }
    }
    
    1 回复  |  直到 14 年前
        1
  •  1
  •   Vadim Kotov First Zero    7 年前

    他们所做的是将这些概要文件作为应用程序实现,并将其与平台一起发布。你可以在你的设备中看到OPP和PBAP服务正在运行,所以它们将接受并处理外部连接,而不是你的应用程序。

    我提到的这些应用程序的源代码可以在这里找到:
    https://android.googlesource.com/platform/packages/apps/Bluetooth