2012-03-19 15 views
5

मैं आईओएस 5.0 में ब्लूटूथमैनेजर निजी ढांचे का उपयोग करके पास के ब्लूटूथ उपकरणों का पता लगाने के लिए एक न्यूनतम उदाहरण बना रहा हूं।न्यूनतम आईओएस ब्लूटूथ प्रबंधक उदाहरण

एक जवाब इस सवाल में पाया का उपयोग करना: Finding generic Bluetooth devices within reach

यहाँ BluetoothAvailabilityChangedNotification के लिए रजिस्टर करने के लिए मेरी viewDidLoad विधि है। मैं ब्लूटूथडिवाइस डिस्कवर नॉटिफिकेशन के लिए भी पंजीकरण करता हूं।

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(bluetoothAvailabilityChanged:) 
    name:@"BluetoothAvailabilityChangedNotification" 
    object:nil]; 

btCont = [BluetoothManager sharedInstance]; 

[[NSNotificationCenter defaultCenter] 
    addObserver:self 
    selector:@selector(deviceDiscovered:) 
    name:@"BluetoothDeviceDiscoveredNotification" 
    object:nil]; 

जब मैं ब्लूटूथ उपलब्धता अधिसूचना बदला मिलता है, मैं उपकरण की स्कैनिंग, सक्षम के रूप में ऊपर उल्लिखित कड़ी में जवाब में से एक में उल्लिखित निर्धारित किया है।

- (void)bluetoothAvailabilityChanged:(NSNotification *)notification 
{ 
    NSLog(@"BT State: %d", [btCont enabled]); 
    [btCont setDeviceScanningEnabled:YES]; 
} 

पूर्णता के लिए, यहां डिवाइस डिस्काउंट अधिसूचना विधि है।

- (void)deviceDiscovered:(NSNotification *) notification 
{ 
    NSLog(@"Discovered one!"); 
} 

लॉग परीक्षण आवेदन चल द्वारा उत्पादित इस प्रकार हैं:

BTM: attaching to BTServer 
BTM: posting notification BluetoothAvailabilityChangedNotification 
BT State: 1 
BTM: setting device scanning enabled 

दुर्भाग्य से, फोन सब पर किसी भी ब्लूटूथ डिवाइस उठा नहीं है, भले ही मैं जानता हूँ कि आसन्न खोज योग्य उपकरणों देखते हैं (एक एंड्रॉइड डिवाइस का उपयोग कर सत्यापित)।

कुछ बातें मैं पहले से ही की कोशिश की है:

  • Calling [btCont setPowered: हाँ]; और संबद्ध पावर स्थिति परिवर्तन सूचना के लिए पंजीकरण, setDeviceScanningEnabled पृष्ठ पर: हाँ कॉलबैक
  • कॉलिंग में [btCont resetDeviceScanning] पहले setDeviceScanningEnabled कॉल
  • scanForConnectableDevices कॉलिंग के लिए: (अहस्ताक्षरित int) ARG1; विधि, अनुमान है कि arg1 कुछ प्रकार का टाइमआउट मान हो सकता है। मैंने बिना किसी सफलता के विभिन्न मूल्यों की कोशिश की है।

किसी भी विचार की बहुत सराहना की जाएगी। धन्यवाद!

+0

अपडेट? क्या आप समस्या को हल करने में सक्षम थे? क्या आपके पास scanForConnectableDevicesmethod के बारे में कोई जानकारी है? – Mahes

उत्तर

0

यहाँ यह करने के लिए एक तरीका है: http://www.pocketmagic.net/?p=2827

की खोज उपकरण सूचना एक BluetoothDevice वस्तु के लिए सूचक है।

2

जहां तक ​​मुझे पता है, ब्लूटूथ प्रबंधक को ओएस ने परिणामों को फ़िल्टर करने के बाद सूची प्राप्त की है। आपको केवल पास के हेडसेट डिवाइस मिलेगा, न कि सभी जेनेरिक डिवाइस।

आप scanForServices उपयोग करने के लिए:

// start scan 
    [btManager setDeviceScanningEnabled:YES]; 
    [btManager scanForServices:0xFFFFFFFF]; 
संबंधित मुद्दे