यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।
किसी Bluetooth डिवाइस (BLE) को कैसे स्कैन करें और उससे कनेक्ट करें
उद्देश्य। आस-पास के Bluetooth डिवाइस खोजना, उनमें से किसी एक से कनेक्ट करना और डेटा का आदान-प्रदान करना — stream (Classic/SPP) के माध्यम से या GATT विशेषताओं (BLE: पढ़ना, लिखना, सूचनाएँ प्राप्त करना) के माध्यम से।
⚠️ ईमानदारी का नोट (उपयोग करने से पहले पढ़ें)
coreमॉड्यूल में, BLE परत इन-मेमोरी कैश के ऊपर एक कंकाल है, असली रेडियो नहीं:
GattCharacteristic.read()कैश में मौजूद मान (CompletableFuture.completedFuture(value)) लौटाता है, हार्डवेयर से पढ़ा गया मान नहीं।GattCharacteristic.write(byte[])केवल मान को स्थानीय रूप से संग्रहीत करता है।enableNotifications(...)listener को पंजीकृत करता है, लेकिन डेटा को ट्रिगर करने वालाnotifyValueChanged(...)है।BluetoothDevice.discoverServices(...)core में खाली सूची लौटाता है।असली रेडियो (वास्तविक scan/कनेक्शन/GATT) प्लेटफ़ॉर्म launchers (Android/iOS) द्वारा प्रदान किया जाता है। नीचे दिए गए कोड को सार्वजनिक API के रूप में लें; वास्तविक व्यवहार उस launcher पर निर्भर करता है जिसमें एप्लिकेशन चलता है।
उपयोग की गई APIs
BluetoothManager.getInstance() throws IOException— singleton।scanForDevices(long duration, TimeUnit unit, ScanCallback cb)— अतुल्यकालिक खोज;ScanCallback.onSuccess(List<BluetoothDevice>)/onError(String)।connect(BluetoothDevice device, ConnectionCallback cb)— अतुल्यकालिक कनेक्शन;ConnectionCallback.onSuccess(BluetoothConnection)/onError(String)।BluetoothConnection(AutoCloseable) —read()/read(int max)→byte[];write(byte[])/write(String)→int।- GATT:
GattCharacteristic.read()→CompletableFuture<byte[]>;write(byte[])→CompletableFuture<Void>;enableNotifications(Consumer<byte[]>)→CompletableFuture<Void>। BluetoothManager.isBluetoothEnabled(),getPairedDevices(...),getLocalDevice()।
पूर्ण उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)
ऊपर दिए गए ईमानदारी के नोट को याद रखें:
coreमॉड्यूल में BLE परत इन-मेमोरी कैश के ऊपर एक कंकाल है — असली रेडियो प्लेटफ़ॉर्म launchers (Android/iOS) से आता है। नीचे दिया गया उदाहरण सार्वजनिक API है; वास्तविक व्यवहार उस launcher पर निर्भर करता है जिसमें एप्लिकेशन चलता है।
package com.exemplo;
import java.util.concurrent.*; // TimeUnit
import dev.crossfly.ui.*; // Window, Component, Button, Label
import dev.crossfly.ui.layout.*; // VerticalLayout
import dev.crossfly.device.bluetooth.*; // BluetoothManager, BluetoothDevice
/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
@Override
public void onShow() throws Exception
{
super.onShow();
setLayout(new VerticalLayout());
Label resultado = new Label("");
add(LAY_AUTO, resultado);
Button acao = new Button("Escanear Bluetooth");
acao.onAction(c ->
{
try
{
BluetoothManager bt = BluetoothManager.getInstance();
// स्कैन करें (callbacks paint thread के बाहर → UI को छूने पर onUI)
bt.scanForDevices(10, TimeUnit.SECONDS, new BluetoothManager.ScanCallback()
{
public void onSuccess(java.util.List<BluetoothDevice> devices)
{
Component.onUI(() -> resultado.setText("Encontrados: " + devices.size()));
}
public void onError(String error)
{
Component.onUI(() -> resultado.setText("Erro: " + error));
}
});
}
catch (java.io.IOException e)
{
resultado.setText("Bluetooth indisponível"); // Bluetooth सिस्टम अनुपलब्ध
}
});
add(LAY_AUTO, acao);
}
}
नीचे का अंश केवल मुख्य भाग दिखाता है। चलाने के लिए, इसे ऊपर दिए गए
MainWindowढाँचे में रखें।
न्यूनतम अंश
// स्रोत में सत्यापित: BluetoothManager.java (getInstance, scanForDevices, connect); BluetoothConnection.java (read/write); GattCharacteristic.java (read/write/enableNotifications)
import java.util.concurrent.*; // TimeUnit
import dev.crossfly.device.bluetooth.*; // BluetoothManager, BluetoothDevice, BluetoothConnection, GattCharacteristic
import dev.crossfly.ui.*; // Component (onUI)
try {
BluetoothManager bt = BluetoothManager.getInstance();
// 1) स्कैन करें (callbacks paint thread के बाहर → UI को छूने पर onUI)
bt.scanForDevices(10, TimeUnit.SECONDS, new BluetoothManager.ScanCallback() {
public void onSuccess(java.util.List<BluetoothDevice> devices) {
Component.onUI(() -> listarDispositivos(devices));
}
public void onError(String error) {
Component.onUI(() -> mostrarErro(error));
}
});
// 2) कनेक्ट करें और stream के ज़रिए डेटा का आदान-प्रदान करें (Classic/SPP)
BluetoothDevice alvo = /* उपयोगकर्ता द्वारा चुना गया */;
bt.connect(alvo, new BluetoothManager.ConnectionCallback() {
public void onSuccess(BluetoothConnection conn) {
try (conn) { // AutoCloseable
conn.write("PING".getBytes());
byte[] resposta = conn.read(); // 4096 bytes तक
} catch (java.io.IOException e) { /* संभालें */ }
}
public void onError(String error) {
Component.onUI(() -> mostrarErro(error));
}
});
// 3) BLE / GATT — किसी characteristic की सूचनाओं को पढ़ें और subscribe करें
GattCharacteristic ch = /* device की service से प्राप्त */;
ch.enableNotifications(data ->
Component.onUI(() -> atualizarValor(data))); // Consumer<byte[]>
ch.read().thenAccept(valor ->
Component.onUI(() -> mostrarValor(valor))); // CompletableFuture<byte[]>
} catch (java.io.IOException e) {
// Bluetooth सिस्टम अनुपलब्ध
}
और गहराई में जाएँ
- Bluetooth/BLE गाइड: Bluetooth & BLE