2010-07-06 19 views
7

मैं एक शोध परियोजना पर काम कर रहा हूं जिसमें ब्लूटूथ और एंड्रॉइड ओएस शामिल है। प्रोजेक्ट जारी रखने के लिए मुझे ब्लूटूथ को अनिश्चित काल तक खोजने की ज़रूरत है।एंड्रॉइड 2.1 पर ब्लूटूथ बनाएं अनिश्चित काल के लिए

समस्या: 300 सेकंड के लिए

  • एंड्रॉयड सीमा खोजे जाने।
  • मैं उपयोगकर्ता को परेशान करने के लिए हर 300 सेकंड में उपयोगकर्ता से नहीं पूछ सकता क्योंकि मेरा एप्लिकेशन उपयोगकर्ता को परेशान किए बिना पृष्ठभूमि में चलाने के लिए डिज़ाइन किया गया है।
  • जहां तक ​​मुझे पता है, एंड्रॉइड के जीयूआई के समय को बढ़ाने का कोई तरीका नहीं है। कुछ स्रोतों ने इसे एक सुरक्षा सुविधा कहा है, अन्य ने इसे एक बग कहा है। दोनों में सच्चाई का एक सा हो सकता है ...

मैं क्या कोशिश कर रहा हूँ/प्रयास किया है:

  • मैं खोज-बारी करने के cyanogenmod की एक स्थिर रिलीज संपादित करने के लिए कोशिश कर रहा हूँ टाइमर बंद (यह संभव है; एक विन्यास फाइल है जिसके लिए एक नंबर बदलना आवश्यक है)। यह काम नहीं कर रहा है क्योंकि मुझे परिणामी पैकेज के साथ सत्यापन समस्याएं आ रही हैं।
  • पिछले सप्ताह के दौरान, मैंने cyanogenmod source code डाउनलोड किया, उम्मीद में एक प्रासंगिक वर्ग को बदल दिया कि यह ब्लूटूथ को अनिश्चित काल तक खोजेगा, और recompile. करने की कोशिश की गई यह काम नहीं किया क्योंकि (ए) रेपो अक्सर बदल जाता है, जिससे अस्थिर हो जाता है कोड बेस जो संकलित करने में विफल रहता है (या, यह हो सकता है कि मैं इसे गलत तरीके से उपयोग कर रहा हूं; सिर्फ इसलिए कि ऐसा लगता है कि कई मामलों में कोड की गलती यह नहीं है कि मुझे उन सभी समस्याओं के लिए दोष देना चाहिए!) और

    घातक: दूरस्थ अंत लटका (ख) रेपो समय-समय पर मुझे (! लेकिन नहीं हमेशा की तरह, के रूप में मैं कोड बेस से पहले मिल गया है) को "अनदेखा" करने के लिए, के साथ मेरी तुल्यकालन/कनेक्शन प्रयास का जवाब दे रहे फैसला करता है अपरिपक्व ectedly

जैसा कि आप कल्पना कर सकते हैं, इसके बाद के संस्करण दो मुद्दों समस्याग्रस्त और बहुत से निपटने के लिए निराशा होती है।
अधिक जानकारी:

  • मैं चल रहा हूँ Android 2.1 CyanogenMod के माध्यम से (v5 मेरा मानना ​​है कि)। इसका मतलब है कि फोन भी जड़ है।
  • मेरे पास एक डेवलपर फोन है, जिसका अर्थ है कि बूटलोडर अनलॉक है।
  • मेरा फोन एक एचटीसी जादू (32 बी) है।

बिग प्रश्न:

  • मैं कैसे ब्लूटूथ अनिश्चित काल के लिए Android पर देखा जा सकता है?
+1

आप स्रोत है, तो आप ब्लूटूथ खोज योग्य सीधे हर 300 सेकंड चालू करने के लिए कुछ निजी एपीआई इस्तेमाल कर सकते हैं। हालांकि मुझे वास्तव में पता नहीं है कि यह संभव है और यह कैसे करें। –

+0

मैं वास्तव में स्रोत कोड में कुछ मानों को बदल सकता हूं और (सैद्धांतिक रूप से) 300 सेकंड टाइमर को पूरी तरह से बंद कर सकता हूं। दुर्भाग्यवश, मुझे संकलन की कई समस्याएं आ रही हैं, यही कारण है कि मैं यहां एक विकल्प की तलाश में हूं। हालांकि, अगर मैं इसे संकलित करने के लिए प्राप्त कर सकता हूं और मेरा पहला विचार विफल रहता है, तो यह एक बहुत ही उचित समाधान है। मैं इसे ध्यान में रखूंगा, धन्यवाद! –

+0

लेकिन 300 सेकंड टाइमर को बंद करके क्या आपका मतलब है कि उपयोगकर्ताओं को आपके कस्टम रोम की आवश्यकता होगी? –

उत्तर

0

आप the BluetoothAdapter class

की जाँच यदि आप छिपा विधि मिलेगा:

public void setDiscoverableTimeout(int timeout) 

अब आप केवल यह कैसे उपयोग करने के लिए पता लगाने के लिए किया है। ऐसा करने के लिए आपको एक विधि आमंत्रण करना होगा। नीचे पैरा में http://developer.android.com/guide/topics/wireless/bluetooth.html#ConnectingDevices

विशेष रूप से, अंतिम वाक्य:

+1

बीटीडब्ल्यू आप कैसे उपयोग कर सकते हैं, यह पहचानने योग्य नहीं है प्रिय –

+0

एंड्रॉइड के कई संस्करणों में यह विधि कुछ मिनटों तक खोज को प्रतिबंधित करती है। –

+0

"बीटीडब्ल्यू आप कैसे उपयोग कर सकते हैं, यह पहचानने योग्य प्रिय नहीं है" "पहचानने योग्य" द्वारा आपका क्या मतलब है ?? यह विधि निश्चित रूप से इस कक्षा द्वारा आयोजित की जाती है। इसे @hide के रूप में चिह्नित किया गया है। आप छुपे हुए तरीकों का आह्वान कर सकते हैं ... यहां एक उदाहरण है http://stackoverflow.com/questions/3462968/how-to-unpair-bluetooth-device-using-android-2-1-sdk/6181809# 618180 9 – Guntram

8

नीचे दिए गए लिंक देखें

को सक्षम करने से खोजे जाने
आप स्थानीय डिवाइस अन्य उपकरणों के लिए खोजने योग्य करना चाहते हैं कार्रवाई मंशा के साथ startActivityForResult(Intent, int) पर कॉल करें। यह सिस्टम सेटिंग्स के माध्यम से खोजने योग्य मोड को सक्षम करने का अनुरोध जारी करेगा (आपके आवेदन को रोक दिए बिना)। डिफ़ॉल्ट रूप से, डिवाइस 120 सेकंड के लिए खोजने योग्य हो जाएगा। आप EXTRA_DISCOVERABLE_DURATION अतिरिक्त अतिरिक्त जोड़कर एक अलग अवधि निर्धारित कर सकते हैं। ऐप सेट की अधिकतम अवधि 3600 सेकेंड है, और 0 का मान यह है कि डिवाइस हमेशा खोजने योग्य होता है।

तो, यह काम करना चाहिए:

Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 0); 
startActivity(discoverableIntent); 
+0

यह एंड्रॉइड 2.1 में उपलब्ध नहीं था। यह कम से कम एंड्रॉइड 4 के बाद उपलब्ध था, इसलिए नए उपकरणों पर, हाँ, यह एक समाधान है। –

+0

दस्तावेज़ कहते हैं कि इसे 'एंड्रॉइड -5' में जोड़ा गया था, इसलिए यह 2.0 और ऊपर होना चाहिए: http://developer.android.com/reference/android/bluetooth/BluetoothAdapter।एचटीएमएल # EXTRA_DISCOVERABLE_DURATION –

+0

यह अभी भी उपयोगकर्ता संवाद पुष्टि देगा, @gymshoe .... मुझे लगता है कि समाधान नहीं – gumuruh

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