gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 10:22:03 27 4
gpt4 key购买 nike

很多天以来,我一直在研究与我的问题相关的许多示例和问题,但没有任何帮助!

瞄准

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.SCAN_MODE_CONNECTABLE_DISCOVERABLE否则使用此代码

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");
}

关于android - 通过蓝牙将字符串从android传输到pc,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26056698/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com