2011-04-07 16 views
22

का उपयोग कर फ़ाइल भेजना क्या ओबीएक्स का उपयोग कर एंड्रॉइड ब्लूटूथ एपीआई का उपयोग कर फ़ाइल भेजने का कोई तरीका है?ब्लूटूथ ओबीएक्स ऑब्जेक्ट पुश प्रोफाइल (ओपीपी)

मुझे एक प्रिंटर को एक फ़ाइल भेजने की आवश्यकता है जो केवल ओबीएक्स ओपीपी का समर्थन करता है।

मैं कोई समस्या नहीं के साथ प्रिंटर के लिए एंड्रॉयड आशय ACTION_SEND का उपयोग कर फ़ाइल भेज सकते हैं, लेकिन मैं इसे प्रोग्राम के रूप में भेजने की जरूरत होगी ..

मैं OBEX OPP UUID का उपयोग कर ब्लूटूथ प्रिंटर से कनेक्ट कर सकते हैं (1105) विधि बनाने के साथ rfcommSocketToServiceRecord(), लेकिन फिर मुझे ओबेक्स का उपयोग कर फ़ाइल भेजने के लिए ओबेक्स विनिर्देशों का पालन करना चाहिए .. यह आउटपुट सॉकेट में बाइट्स लिखने जितना आसान नहीं है ..

लेकिन यदि ACTION_SEND का इरादा इसे संभाला जा सकता है, डेवलपर्स के लिए फाइल भेजने के लिए कोई एपीआई क्यों नहीं है?

मैं भी BlueCove की तरह किसी तीसरे पक्ष libs की जाँच की, लेकिन मैं अभी भी नहीं किया यह काम करने के लिए .. (नेक्सस वन & Galaxy Tab एक अपवाद कह रही है कि देशी पुस्तकालय bluecove_armv71 उपलब्ध नहीं है फेंक मिल .. और एलजी ऑप्टिमस एक कहता है कि bluecove_armv61 उपलब्ध नहीं है ..)

मैं अटक गया हूं, कोई विचार?

श्रमजीवी समाधान

कोई भाग्य के साथ एक ब्लूटूथ डिवाइस के लिए एक फ़ाइल भेजने की कोशिश कर किसी को भी के लिए, मैं एक काम कर समाधान (KPBird करने के लिए धन्यवाद) सामग्री प्रदाताओं का उपयोग कर देते हैं:

ले लो जावा वर्ग BluetoothSharehere से

से, निम्नलिखित कोड एक फ़ाइल एसडी कार्ड पर एक ब्लूटूथ डिवाइस के लिए भेजता है:

BluetoothDevice device; 
String filePath = Environment.getExternalStorageDirectory().toString() + "/file.jpg"; 

ContentValues values = new ContentValues(); 
values.put(BluetoothShare.URI, Uri.fromFile(new File(filePath)).toString()); 
values.put(BluetoothShare.DESTINATION, device.getAddress()); 
values.put(BluetoothShare.DIRECTION, BluetoothShare.DIRECTION_OUTBOUND); 
Long ts = System.currentTimeMillis(); 
values.put(BluetoothShare.TIMESTAMP, ts); 
Uri contentUri = getContentResolver().insert(BluetoothShare.CONTENT_URI, values); 

अद्यतन

कुछ लोगों को ऊपर समाधान के साथ समस्याओं का सामना कर रहे हैं, यह निम्नलिखित उपकरणों पर परीक्षण किया गया है:

वर्क्स पर:

  • एलजी ऑप्टिमस वन (Android 2.1)
  • एचटीसी डिजायर (एंड्रॉइड 2.2)
  • Google नेक्सस वन (एंड्रॉइड 2.2 और 2.3)
  • सैमसंग गैलेक्सी एस 2 (एंड्रॉयड 4.0.3)
  • एचटीसी अमेज (एंड्रॉयड 2.3.4)

पर मुद्दों है:

  • एलजी P500 (एंड्रॉयड 2.3.3)
  • गैलेक्सी टैब पी 500 (एंड्रॉइड 2.2)
  • Google नेक्सस एस (एंड्रॉइड 4.1।2)

आप उपकरणों जो ऊपर सूचीबद्ध नहीं हैं पर इस स्निपेट का परीक्षण करने में सक्षम हैं, तो कृपया उपकरणों (ब्रांड, नाम, एंड्रॉयड संस्करण, आदि ..) है जिसके साथ आपने इसका परीक्षण का विवरण प्रदान , और परीक्षण परिणाम, नीचे एक टिप्पणी में, मैं आपके डेटा सहित प्रश्न अपडेट कर दूंगा।

+5

हाय ShadowCloud, उपरोक्त कोड में, एक बार contentUri से भर जाता है, जहां ब्लूटूथ डिवाइस धक्का होता है ?? मुझे इसके लिए कोई कोड नहीं दिख रहा है ... –

+1

यह कोड ओएस पर 4.1 से – Harish

उत्तर

2

ओबीएक्स तक पहुंचने के लिए कोई सार्वजनिक एपीआई नहीं है। क्यों कोई एपीआई नहीं है - Google सबसे अच्छा जानता है :)

+0

से काम नहीं कर रहा है एप्लिकेशन ब्लूटूथ फ़ाइल ट्रांसफर और एंड्रॉबिक्स कैसे काम करता है इस पर कोई संकेत है? वे ओबीएक्स ओपीपी/एफ़टीपी का उपयोग करते हैं, लेकिन हो सकता है कि वे केवल इसलिए काम करें क्योंकि दोनों डिवाइस (प्रेषक और रिसीवर) में ऐप इंस्टॉल है .. (यह करने योग्य है, लेकिन प्रिंटर जैसे उपकरणों के लिए मुझे नहीं पता कि यह काम करता है) – BFil

+1

क्या आप इसका उपयोग कर सकते हैं ऐप और प्रिंटर को एक वीकार्ड भेजें? क्या यह काम करता है ? ऐप के विवरण से - ऐसा लगता है कि यह आरएफसीओएमएम/एसपीपी सॉकेट पर ओबीएक्स कार्यान्वयन है। ऐसे अन्य ऐप्स हैं जिन्हें दोनों पक्षों को भेजने/प्राप्त करने के लिए एक ही ऐप की आवश्यकता होती है - वे एसपीपी सॉकेट का उपयोग करने की अधिक संभावना रखते हैं। –

+1

हाँ मुझे लगता है कि यह इस तरह से काम करता है, दोनों उपकरणों पर एक ही ऐप, और एक मानक सॉकेट संचार। चूंकि सार्वजनिक एपीआई के साथ मैं प्रिंटर से ओबीएक्स प्रोटोकॉल का उपयोग कर कनेक्ट कर सकता हूं, लेकिन फिर मैं सिर्फ आईओ धाराओं से लिख सकता हूं और पढ़ सकता हूं, एसपीपी के माध्यम से संचार के समान ... इसलिए प्रिंटर को फ़ाइल भेजने का एकमात्र समाधान है मानक ACTION_SEND इरादा का उपयोग करें, क्या शर्म की बात है .. – BFil

3

मैंने दिए गए उत्तर का परीक्षण करने के लिए sample application लिखा है। दुर्भाग्यवश यह मेरे लिए काम नहीं करता है, इसलिए मुझे लगता है कि इस सवाल का पूरी तरह उत्तर नहीं दिया गया है।

+0

आपके दृष्टिकोण को पसंद आया मैं इसे परिवर्तनों के साथ परीक्षण करूंगा और अगर आपको यह पता चलेगा तो आपको ठीक करने के बारे में सूचित किया जाएगा। – IamStalker

+0

@ डिएगो, मैंने भी उपरोक्त लिंक से अपने स्निपेट की कोशिश की। यह काम नहीं करता है। क्या आप मुझे इसके लिए समाधान प्रदान कर सकते हैं। –

0

किसी ने कहा कि यह कुछ सैमसंग फोन में ठीक काम करता है, लेकिन अन्य सैमसंग फोन में काम नहीं करता है। तब मैं एक साधारण परीक्षण प्रोग्राम लिखने के लिए, और मुझे फोन का परीक्षण करने के उधार लेने के लिए अपने दोस्तों से पूछना ...

  1. यह एचटीसी अतुल्य में काम नहीं कर सकता
  2. यह SonyEricsson एक्सपीरिया आर्क एस में काम कर सकते हैं "को BluetoothShare" का इस्तेमाल किया

इसलिए, मुझे लगता है कि कुछ फोन इन BluetoothShare कोड के साथ संगत नहीं हैं ...

3

मुझे लगता है कि OPP.There के लिए Android में समर्थन नहीं किया जाता है में एक पथ एंड्रॉयड/संकुल/apps/ब्लूटूथ/...../opp/*। जावा

यदि आपके संस्करण में यह नहीं है, तो मुझे एक उपयोगी लिंक मिला जो एंड्रॉइड में ओबीएक्स ओपीपी का उपयोग करने में मदद करेगा। यहां एंड्रॉइड फ्रेमवर्क संशोधन की आवश्यकता है।

http://i-miss-erin.blogspot.in/2009/10/how-to-have-obex-function-in-android.html