gpt4 book ai didi

java - Android 蓝牙 : java. io.IOException:未连接传输端点

转载 作者:行者123 更新时间:2023-11-30 09:12:33 25 4
gpt4 key购买 nike

我在 Android 中遇到蓝牙串行连接问题。有两种情况:

  1. 一个 Activity(带 fragment )、一个 EditTex 和一个 Button(在 fragment 中)。该按钮与串行设备建立连接并从 EditText 发送数据。可以,但是...我不想每次都建立连接。

  2. 一个 Activity(带 fragment )、一个 EditTex 和两个 Button(在 fragment 中)。一个按钮建立连接,另一个按钮发送数据,好的,当我按下连接按钮时它似乎工作正常(无一异常(exception))但是当我按下发送数据按钮时,logcat 显示:

java.io.IOException:传输端点未连接”

当然,数据不会到达接收器。抛出异常

out.write(txtData.getText().toString().getBytes());

我的代码是(我想要的第二个场景):

public class MainFragment extends Fragment implements View.OnClickListener {
private EditText txtData;
private Button btnSend;
private Button btnConnect;
private InputStream in = null;
private byte[] buffer = null;
BluetoothSocket socket = null;
OutputStream out = null;

public MainFragment(){}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
txtData = (EditText) rootView.findViewById(R.id.txtData);
btnSend = (Button) rootView.findViewById(R.id.btnSend);
btnConnect = (Button) rootView.findViewById(R.id.btnConnect);
btnConnect.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
connectBluetooth();
}
});
btnSend.setOnClickListener(this);
return rootView;
}

public void connectBluetooth(){
BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
if (adapter == null) {
// Device does not support Bluetooth
getActivity().finish(); //exit
}

if (!adapter.isEnabled()) {
//make sure the device's bluetooth is enabled
Intent enableBluetooth = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBluetooth, 0);
}

final UUID SERIAL_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB"); //UUID for serial connection
String mac = "00:1B:35:0B:75:BE"; //my device's mac adress
BluetoothDevice device = adapter.getRemoteDevice(mac); //get remote device by mac, we assume these two devices are already paired


// Get a BluetoothSocket to connect with the given BluetoothDevice

try {
socket = device.createRfcommSocketToServiceRecord(SERIAL_UUID);
} catch (IOException e) {
Log.d("socket","Error al crear el socket");
}

try {

socket.connect();
out = socket.getOutputStream();
in = socket.getInputStream();
out.write(txtData.getText().toString().getBytes());
} catch (IOException e) {
}
}

@Override
public void onClick(View view) {
try {
out.write(txtData.getText().toString().getBytes());
} catch (IOException e) {
e.printStackTrace();
}

}

编辑:这不是其他蓝牙设备的问题,因为我用 google play 中的一个应用程序对其进行了测试,它可以正常工作。

最佳答案

在发送数据之前,您确定两台设备已连接吗?

此外,您应该在单独的线程中而不是在主线程中进行所有蓝牙连接。

关于java - Android 蓝牙 : java. io.IOException:未连接传输端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21480273/

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