मैं पता लगाने के लिए कि क्या एक ब्लूटूथ डिवाइस वर्तमान में एपीआई 14 या बेहतर उपयोग करते हुए एक Android डिवाइस से जुड़ा है कोशिश कर रहा हूँ देता है। ऐसा लगता है कि मुझे BluetoothSocket.is कनेक्टेड() विधि का उपयोग करने में सक्षम होना चाहिए, लेकिन इससे कोई फर्क नहीं पड़ता कि मैंने क्या किया है, अब तक मुझे कुछ भी जुड़ा हुआ है, जुड़ा हुआ है या नहीं। ,एंड्रॉयड BluetoothSocket.isConnected हमेशा गलत
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Set<BluetoothDevice> pairedDevices = mBluetoothAdapter.getBondedDevices();
for (BluetoothDevice device : pairedDevices) {
Log.i(Constants.LOG_TAG, String.format(Locale.US, "Device: %s connected: %b", device.getName(), isConnected(device))); //$NON-NLS-1$z
}
}
private boolean isConnected(BluetoothDevice device) {
BluetoothSocket socket = null;
// Get a BluetoothSocket for a connection with the given BluetoothDevice
UUID SPP_UUID = UUID.fromString("00001101-0000-1000-8000-00805F9B34FB");
try {
socket = device.createRfcommSocketToServiceRecord(SPP_UUID);
} catch (IOException e) {
Log.e(Constants.LOG_TAG, e.getMessage()); //$NON-NLS-1$z
return false;
}
Log.i(Constants.LOG_TAG, socket.toString()); //$NON-NLS-1$z
return socket.isConnected();
}
कोई त्रुटि नहीं फेंक दिया जाता है यह बस रिटर्न "गलत" समय की 100%:
<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
<!-- Locale 4.x supports API 14 or greater. -->
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="17" />
<uses-feature android:name="android.hardware.bluetooth" />
और प्रश्न में कोड:
AndroidManifest इन पंक्तियों के भी शामिल है। क्या ऐसा कुछ है जो मैं सही नहीं कर रहा हूं?
प्रतिबिंब भाग इस प्रश्न के स्वीकृत उत्तर से आया: http://stackoverflow.com/questions/3397071/service-discovery-failed-exception-using-bluetooth-on-android।मैं प्रतिबिंब के विचार से रोमांचित नहीं था, लेकिन मुझे लगता है कि मुझे कहीं और पढ़ना याद है कि आपको मूल प्रश्न से यूयूआईडी पर भरोसा नहीं करना चाहिए। यह कहकर, मेरे लिए महत्वपूर्ण मुद्दा आपके उत्तर का दूसरा हिस्सा है - मैं किसी भी बीटी डिवाइस को खोजने की कोशिश कर रहा हूं, जो किसी भी कनेक्ट करने की कोशिश नहीं कर रहा है। क्या यह संभव नहीं है? मैं बीटी राज्य परिवर्तनों की निगरानी के लिए एक सेवा बनाने से बचने की कोशिश कर रहा हूं। – jkane001
एसओ उत्तर और एंड्रॉइड दस्तावेज़ों के बारे में अधिक सावधानीपूर्वक पढ़ने के बाद अमीन सही थे, मुझे एहसास हुआ कि यहां प्रतिबिंब आवश्यक नहीं था। मैंने अपने मूल प्रश्न को एक बेहतर "कनेक्ट कनेक्ट" विधि के साथ अपडेट किया है, लेकिन मेरा प्रश्न बनी हुई है: क्या यह पता लगाने का कोई तरीका है कि कोई बीटी डिवाइस कनेक्ट होने के बिना कनेक्ट किया गया है या नहीं? – jkane001