Код: Выделить всё
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_ENABLE_BT) {
if (resultCode == RESULT_OK) {
// Bluetooth has been enabled, start device discovery
startDeviceDiscovery();
} else {
// Bluetooth was not enabled, handle accordingly
Toast.makeText(this, "Bluetooth needs to be enabled to use this feature", Toast.LENGTH_SHORT).show();
}
}
}
Код: Выделить всё
private void startDeviceDiscovery() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_SCAN) != PackageManager.PERMISSION_GRANTED ||
ContextCompat.checkSelfPermission(this, Manifest.permission.BLUETOOTH_ADMIN) != PackageManager.PERMISSION_GRANTED) {
// Request the necessary permissions
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.BLUETOOTH_SCAN, Manifest.permission.BLUETOOTH_ADMIN},
REQUEST_BLUETOOTH_PERMISSIONS);
} else {
// Permissions are already granted, start discovery
BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (bluetoothAdapter.isDiscovering()) {
bluetoothAdapter.cancelDiscovery();
}
bluetoothAdapter.startDiscovery();
Toast.makeText(this, "Starting Bluetooth device discovery", Toast.LENGTH_SHORT).show();
}
}
Я уже добавил разрешения, здесь
Код: Выделить всё
Код: Выделить всё
public boolean openBT() throws IOException {
try {
// Standard SerialPortService ID
UUID uuid = UUID.fromString("00001101-0000-1000-8000-00805f9b34fb");
mmSocket = mmDevice.createRfcommSocketToServiceRecord(uuid);
Method createMethod = mmDevice.getClass().getMethod("createInsecureRfcommSocket", new Class[] { int.class });
mmSocket = (BluetoothSocket)createMethod.invoke(mmDevice, 1);
System.out.println(mmSocket);
Log.d("PrinterSDK", "Socket created successfully. mmSocket: " + mmSocket);
mBluetoothAdapter.cancelDiscovery();
mmSocket.connect();
mmOutputStream = mmSocket.getOutputStream();
mmInputStream = mmSocket.getInputStream();
beginListenForData();
} catch (Exception e) {
Log.e("PrinterSDK", "Error in openBT: " + e.getMessage(), e);
e.printStackTrace();
}
return mmSocket.isConnected();
}
21 января 2025 г. 16 :25:04.290 16950-16950 PrinterSDK sales.smtk.com.mmc D Сокет успешно создан. mmSocket: android.bluetooth.BluetoothSocket@fa34793
2025-01-21 16:25:09.515 16950-16950 PrinterSDK sales.smtk.com.mmc E Ошибка в openBT: сбой чтения, возможно, сокет закрыт или истекло время ожидания, чтение ret : -1
java.io.IOException: чтение не выполнено, сокет может быть закрыт или истекло время ожидания, прочитайте ret: -1
в android.bluetooth.BluetoothSocket.readAll(BluetoothSocket.java:758)
в android.bluetooth.BluetoothSocket.waitSocketSignal(BluetoothSocket.java:711)в android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:409)
на сайте sales.smtk.com.mmc.PrinterSDK.openBT(PrinterSDK.java:130)
на сайте sales.smtk.com.mmc. Квитанция $10.onClick(Receipt.java:480)
at androidx.appcompat.app.AlertController$ButtonHandler.handleMessage(AlertController.java:167)
в android.os.Handler.dispatchMessage(Handler.java:106)
в android.os.Looper.loop( Looper.java:233)
at android.app.ActivityThread.main(ActivityThread.java:8063)
в java.lang.reflect.Method.invoke(собственный метод)
в com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:631)
в com.android.internal.os.ZygoteInit.main(ZygoteInit.java:978)
2025-01-21 16:25:09.515 16950-16950 System.err sales.smtk.com.mmc W at sales.smtk.com.mmc.PrinterSDK.openBT(PrinterSDK.java:130)

Кто-нибудь может мне помочь это исправить, я понятия не имею, в чем заключалась ошибка
Подробнее здесь: https://stackoverflow.com/questions/793 ... droid-code
Мобильная версия