通过蓝牙将字符串从android传输到pc

通过蓝牙将字符串从android传输到pc,android,windows,bluetooth,Android,Windows,Bluetooth,因为很多天以来,我都会遇到很多与我的问题相关的例子和问题,但没有任何帮助 目标 pc(windows)和android之间的双向通信(如向pc传递消息和pc确认) 我到目前为止所做的事 我能够使用蓝牙从android设备向pc(windows)发送字符串 这是我使用的代码 private String sendFile(String mac_address, String device_name) { // TODO Auto-generated method stub Stri

因为很多天以来,我都会遇到很多与我的问题相关的例子和问题,但没有任何帮助

目标

pc(windows)和android之间的双向通信(如向pc传递消息和pc确认)

我到目前为止所做的事

我能够使用蓝牙从android设备向pc(windows)发送字符串

这是我使用的代码

private String sendFile(String mac_address, String device_name) {
    // TODO Auto-generated method stub
    String result="";
    btAdapter = BluetoothAdapter.getDefaultAdapter();
    BluetoothDevice device = btAdapter.getRemoteDevice(mac_address);
    Log.d("BT_SENDING_FILE",device_name+" "+mac_address);


    try {


        Method m = device.getClass().getMethod("createRfcommSocket", new Class[] {int.class});
        btSocket = (BluetoothSocket) m.invoke(device, 1);
         if(!btSocket.isConnected()){
                Log.d(" is connected Status",""+btSocket.isConnected());
           //   device.createInsecureRfcommSocketToServiceRecord(UUID);

            }
         btAdapter.cancelDiscovery();
         try{
                btSocket.connect();
                }catch(IOException e){
                     btSocket =(BluetoothSocket) device.getClass().getMethod("createRfcommSocket", new Class[] {int.class}).invoke(device,1);
                     btSocket.connect();
                     Log.d("fall back","in catch clause");
                }

         byte[] msgBuffer = stringToSend.getBytes();
            outStream = btSocket.getOutputStream();
                outStream.write(msgBuffer);
                if (outStream != null) {
                    outStream.flush();

                }
                result = "sent";
             outStream.close();
             btSocket.close();
             Log.d("BLUETOOTH","Closing Socket");   
          } catch (Exception e) {
              System.out.println(e);
              Log.d("BLUETOOTH","exception while sending through bluetooth");
              result = "failed";
           e.getLocalizedMessage();
          } finally{}            
        return result;
}
这是运行良好,没有任何问题

问题

但我无法从pc到android设备接收任何字符串。我试过很多东西

我试过这个

            BluetoothSocket socket = null;
            BluetoothAdapter mAdapter = BluetoothAdapter.getDefaultAdapter();

            while (true) {

                try {

                    // Creating a new listening server socket
                    Log.d("BT", ".....Initializing RFCOMM SERVER....");


                    mmServerSocket = mAdapter.listenUsingInsecureRfcommWithServiceRecord("Bluetooth", MY_UUID);  





                    // This is a blocking call and will only return on a
                    // successful connection or an exception    
                    Log.d("Socket","listening...");
                    socket = mmServerSocket.accept(120000);                   

                } catch (Exception e) {

                }
                try {
                    Log.d("Socket", "Closing Server Socket.....");
                    mmServerSocket.close();

                    InputStream tmpIn = null;
                    OutputStream tmpOut = null;

                    // Get the BluetoothSocket input and output streams

                    tmpIn = socket.getInputStream();
                    tmpOut = socket.getOutputStream();
                    Log.d("BT","IO stream init");
                    DataInputStream mmInStream = new DataInputStream(tmpIn);
                    DataOutputStream mmOutStream = new DataOutputStream(tmpOut);

                    // use the Input Stream to take the string from the client whoever is connecting
                    //similarly use the output stream to send the data to the client




                    StringBuilder sb = new StringBuilder();
                    while((ch = mmInStream.read())!= -1)
                        sb.append((char)ch);

                    String res = sb.toString();

                    Log.d("BT",res);
                    tv_response.setText(res));
                } catch (Exception e) {
                    //catch your exception here
                    e.printStackTrace();
                    Log.d("Exception","some thing went wrong");
                    e.getLocalizedMessage();

                }
            }
        }
我在windows中使用Blue Cove我已经完成了蓝牙聊天示例项目,但什么都不懂

谢谢你的帮助


谢谢

我尝试了以下代码,结果成功了。这可能对你有帮助

BluetoothSocket socket = null;
    while (true) {
        try {
            Log.i(ACCEPT_TAG, "Listening for a connection...");

            socket = mServerSocket.accept();
            Log.i(ACCEPT_TAG, "Connected to " + socket.getRemoteDevice().getName());

        } catch (IOException e) {
            break;
        }
        // If a connection was accepted
        if (socket != null) {
            // Do work to manage the connection (in a separate thread)
            try {
                // Read the incoming string.
                String buffer;

                DataInputStream in = new DataInputStream(socket.getInputStream());

                buffer = in.readUTF();  

                Intent i = new Intent(MESSAGE_RECEIVED_INTENT);
                i.putExtra("Message", String.format("%s", buffer));
                Log.d("BT response is",buffer);

                c.sendBroadcast(i);
            } catch (IOException e) {
                Log.e(ACCEPT_TAG, "Error obtaining InputStream from socket");
                e.printStackTrace();
            }
            try {
                mServerSocket.close();
            } catch (IOException e) { }
            break;
        }
    }
确保您的设备对所有人都可见,即扫描模式为
BluetoothAdapter。扫描模式为可连接、可发现
否则请使用此代码

public void requestBTDiscoverable() {
    Intent i = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE);
    i.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300);

    startActivityForResult(i, REQ);

    int result = 0;

    this.onActivityResult(REQ, result, i);
    Log.i(TAG, "Bluetooth discoverability enabled");
}