2015-04-04 20 views
10

मैं एक एंड्रॉइड ऐप विकसित कर रहा हूं। शुरुआत में यह ऐप उपयोगकर्ता को ब्लूटूथ उपकरणों की एक सूची दिखाता है और जब वह इनमें से किसी एक को चुनता है तो वह दूसरी गतिविधि खोलता है।मैं उसी एप्लिकेशन को उसी ब्लूटूथ कम ऊर्जा डिवाइस पर कैसे खोल सकता हूं?

मेरा लक्ष्य है: कुछ दिन बाद जब उपयोगकर्ता ऐप को फिर से खोल देगा तो ऐप को ब्लड डिवाइस को याद रखना होगा और इसे फिर से कनेक्ट करने का प्रयास करना होगा।

अभी के लिए मैं इस तरह से अपने लक्ष्य को प्राप्त किया है:

  • मैं वरीयता में याद चुना गया डिवाइस
  • के मैक पते उपयोगकर्ता एप्लिकेशन को एप्लिकेशन एक छिपा हुआ स्कैन करते हैं और करने की कोशिश फिर से खोलना जब एक ही मैक पते वाले डिवाइस से दोबारा जुड़ें।
  • पुनः प्राप्त मैक पते मैं समारोह getAddress का उपयोग() के लिए
  • (जब मैं एंड्रॉयड परिधीय इस समारोह कनेक्ट करने का प्रयास मुझे देता है कुछ समस्या है, क्योंकि उपकरण प्रत्येक शुरू होता है में अपने मैक पता परिवर्तन: /)

एक ही चीज़ प्राप्त करने का सबसे अच्छा तरीका है?

विषय बंद करें: ScanResult में ScanResult पर फ़ंक्शन कुछ समय मुझे शून्य डिवाइस पर वापस लौटाता है, क्या यह सामान्य है? मैंने startLeScan (UUID [] serviceUuids, BluetoothAdapter.LeScanCallback कॉलबैक का उपयोग किया है) और लॉलीपॉप के बाद मैं स्कैनफिल्टर के साथ startLeScan के नए संस्करण का उपयोग करता हूं। क्या यह समस्या हो सकती है?

उत्तर

4

गोपनीयता के लिए reasongs मैक पते पर रहता है नीचे बदलते-उल्लेख ble चश्मा से स्निपेट:

5.4.5 गोपनीयता फ़ीचर

ब्लूटूथ LE एक विशेषता यह है कि एक ले ट्रैक करने की क्षमता कम कर देता है का समर्थन करता है ब्लूटूथ डिवाइस पता को लगातार आधार पर बदलकर समय की अवधि में डिवाइस। गोपनीयता सुविधा जीएपी खोज मोड और प्रक्रियाओं में उपयोग नहीं की जाती है, लेकिन इसका उपयोग तब किया जाता है जब कनेक्शन मोड और कनेक्शन प्रक्रियाओं के दौरान समर्थित होता है। ज्ञात डिवाइसों से पुन: कनेक्ट करने के लिए गोपनीयता सुविधा का उपयोग कर डिवाइस के लिए डिवाइस पता, जिसे निजी पता कहा जाता है, अन्य डिवाइस द्वारा हल करने योग्य होना चाहिए।

निजी पता का उपयोग करके डिवाइस की हल करने वाली पहचान कुंजी (आईआरके) का बंधन प्रक्रिया के दौरान आदान-प्रदान किया जाता है।

तो आदर्श तरीका आईआरके का उपयोग डिवाइस के वास्तविक पते को गेटेट करने के लिए करना है। हालांकि मुझे ऐसा करने के लिए कोई एपीआई नहीं मिला।

वर्तमान में, काम जो around- मैं mny app- में उपयोग कर रहा हूँ डिवाइस के लिए सभी उपलब्ध डिवाइस के माध्यम से फिर से कनेक्ट करने के लिए,

  1. पाश।
  2. सीरियल नंबर प्राप्त करें- यदि सीरियल कोई पहले से संग्रहीत नंबर से मेल नहीं खाता है तो कनेक्शन को डिस्कनेक्ट रखें।
  3. सभी उपकरणों के लिए चरण 2 दोहराएं।

    यह कार्य केवल तभी काम करेगा जब डिवाइस कुछ सेवा के माध्यम से सीरियल नंबर का खुलासा करता है।

आप भी सच करने के लिए AutoConnect ध्वज स्थापित करने के लिए जब आप connectGatt (Context context, boolean autoConnect, BluetoothGattCallback callback)

डॉक्स से फोन करने की कोशिश कर सकते हैं:

सार्वजनिक BluetoothGatt connectGatt (संदर्भ संदर्भ, बूलियन AutoConnect, BluetoothGattCallback कॉलबैक) एपीआई स्तर 18

द्वारा होस्ट किए गए जीएटीटी सर्वर से कनेक्ट करें डिवाइस। कॉलर GATT क्लाइंट के रूप में कार्य करता है। कॉलबैक का उपयोग कॉलर को परिणाम देने के लिए किया जाता है, जैसे कि कनेक्शन स्थिति के साथ-साथ कोई और GATT क्लाइंट ऑपरेशंस। विधि ब्लूटूथगैट उदाहरण देता है। आप ब्लूटूथगैट का उपयोग पर जीएटीटी क्लाइंट ऑपरेशंस का संचालन कर सकते हैं। पैरामीटर

ऑटोकनेक्ट सीधे रिमोट डिवाइस (झूठी) से कनेक्ट हो या स्वचालित रूप से कनेक्ट हो जाए, जैसे ही दूरस्थ डिवाइस उपलब्ध हो (सत्य)।

कॉलबैक जीएटीटी कॉलबैक हैंडलर जो असीमित कॉलबैक प्राप्त करेगा। अवैध कॉलिंग अपवाद अगर कॉलबैक शून्य है

संबंधित मुद्दे