2012-12-20 38 views
13

के लिए Google का उपयोग करके कोई भाग्य नहीं है इसलिए मैंने सोचा कि मैं पूछूंगा।विंडोज फोन 8 से एक एंड्रॉइड डिवाइस से एनएफसी का उपयोग करके स्ट्रिंग कैसे भेजें

क्या किसी के पास कोई अनुभव/पता है कि एक साधारण स्ट्रिंग i.e "हैलो" को विंडोज फोन 8 डिवाइस से एंड्रॉइड डिवाइस पर कैसे भेजा जाए?

अब तक हम एंड्रॉइड - एंड्रॉइड और एंड्रॉइड -> विंडोज फोन 8 करने में सक्षम हैं लेकिन हम विंडोज फोन 8 से एंड्रॉइड तक कैसे करना है, यह जानने में सक्षम नहीं हैं।

क्या किसी ने ऑनलाइन मार्गदर्शिका देखी है या जानती है कि ऐसी चीज कैसे करें?

पहला कदम मुझे लगता है कि विंडोज फोन 8 पर एप्लिकेशन को कैसे बनाना है, यह एंड्रॉइड एनएफसी डिवाइस के पास महसूस करता है .. और फिर यह पता लगाना होगा कि एंड्रॉइड फोन पर एप्लिकेशन कैसे बनाया जाए संदेश।

अग्रिम धन्यवाद!

* उत्तर *

ठीक है तो यहाँ कर रहे हैं कुछ जवाब/सुझावों

मैं क्योंकि आवेदन भेजने बाहरी प्रकार के रूप में एनएफसी संदेश भेजने समाप्त हो गया/my.mimetype मुझे एक "खेद अपने फोन को दे रखा इस प्रकार की फाइल को पुन: व्यवस्थित नहीं कर सकता "विंडोज फोन पर भी संदेश संदेश के माध्यम से हो रहा था।

@Override 
public NdefMessage createNdefMessage(NfcEvent event) { 

    NdefMessage ndefMessage = new NdefMessage(( 
      new NdefRecord[] {createMimeRecord("packageName:externalType",docId.getBytes())})); 

    return ndefMessage; 
} 

public NdefRecord createMimeRecord(String mimeType, byte[] payload) { 
    byte[] mimeBytes = mimeType.getBytes(Charset.forName("US-ASCII")); 
    NdefRecord mimeRecord = new NdefRecord(NdefRecord.TNF_EXTERNAL_TYPE, mimeBytes, new byte[0], payload); 
    return mimeRecord; 
} 

सब आप एंड्रॉयड में क्या करना है एसडीके नमूने से एंड्रॉयड उदाहरण का अनुसरण करने के लिए है (एंड्रॉयड -16/17 - AndroidBeamDemo) जो बहुत अच्छी तरह से समझाया गया है यहाँ - http://www.tappednfc.com/wp-content/uploads/TAPPED-NFCDeveloperGuide-Part1.pdf

बजाय आवेदन का उपयोग करने का लेकिन माइम प्रकार ऊपर बाहरी प्रकार का उपयोग करें और अपने मेनिफ़ेस्ट में लक्ष्य फ़िल्टर में माइम प्रकार के बजाय निम्नलिखित डाल: पढ़ने के बारे में

   <data 
       android:host="ext" 
       android:pathPrefix="/cco.drugformulary:externalType" 
       android:scheme="vnd.android.nfc" /> 

और विंडोज फोन का उपयोग कर सकते से संदेश भेजने क्या स्वीकार किए जाते हैं जवाब लड़के ने ऐसा करने के लिए कहा और इसे काम करना चाहिए, लेकिन टाइप के लिए cco.drugformulary डालें: बाहरी टाइप टाइप से ऊपर (हालांकि आपका प्रोजेक्ट नाम निश्चित रूप से)। विंडोज़-विशिष्ट संदेश और NDEF संदेशों:

आप किसी भी समस्या में चल रहे हैं, तो मुझे

उत्तर

19

पूछने के लिए स्वतंत्र WP8 एनएफसी का उपयोग करते समय वहाँ मौलिक है आप के साथ काम कर सकते हैं संदेशों के दो प्रकार के लग रहा है। विंडोज विशिष्ट संदेश स्पॉट करना आसान है क्योंकि आप उन्हें "विंडोज़ * *" संदेश प्रकार के रूप में प्रकाशित करेंगे। एनडीईएफ संदेश हालांकि "एनडीईएफ" संदेश प्रकार का उपयोग करके प्रकाशित हो जाते हैं। उदाहरण के लिए, यहाँ एक Windows ऐप्स-विशिष्ट संदेश है:

private void WriteAppSpecificStringToTag(object sender, RoutedEventArgs e) 
    { 
     ProximityDevice device = ProximityDevice.GetDefault(); 

     if (device != null) 
     { 
      device.PublishBinaryMessage("Windows:WriteTag.myApp", 
       GetBufferFromString("Hello World!"), 
       UnregisterOnSend); 

      MessageBox.Show("Tap to write 'Hello World' on tag."); 
     } 
    } 

NDEF एक बड़ी मात्रा में प्रयोग पार मंच NFC टैग (अक्सर के तहत 100 बाइट्स) की अत्यंत अंतरिक्ष विवश वातावरण के लिए अनुकूलित करने के लिए होती स्वरूप है। जबकि WP8 निकटता ढांचा & एनडीईएफ संदेशों को प्राप्त करने की अनुमति देता है, लेकिन यह एनडीईएफ प्रारूप के बारे में कुछ भी नहीं जानता है। मतलब, WP8 निकटता ढांचा बाइट्स की एक धारा भेजता है और प्राप्त करता है। बाइट्स की धारा को पार्स करना और इसे सही रूप से स्वरूपित करना ऐप डेवलपर के रूप में आपकी ज़िम्मेदारी है।

& पैरामीटर एनडीईएफ संदेशों को प्रारूपित करने के लिए आपको या तो तृतीय पक्ष ढांचे का उपयोग करने या स्वयं का निर्माण करने की आवश्यकता होगी। तृतीय पक्ष ढांचे के संदर्भ में NDEF Library for Proximity APIs एक महान काम करता है।है आपके ऐप्लिकेशन में NDEF संदेश प्राप्त और पार्स करने के लिए

private void WriteNDEFRecordToTag(object sender, RoutedEventArgs e) 
    { 
     ProximityDevice device = ProximityDevice.GetDefault(); 

     if (device != null) 
     { 
      device.PublishBinaryMessage("NDEF:WriteTag", 
       new NdefMessage() 
       { 
        new NdefRecord 
        { 
         TypeNameFormat = NdefRecord.TypeNameFormatType.ExternalRtd, 
         Type = "myApp".Select(c => (byte) c).ToArray(), 
         Payload = "Hello World!".Select(c => (byte) c).ToArray() 
        } 
       }.ToByteArray().AsBuffer(), 
       UnregisterOnSend); 

      MessageBox.Show("Tap to write 'Hello World' on tag."); 
     } 
    } 

और यहाँ:

उदाहरण के लिए, यहाँ से प्रारूप और NDEF Library का उपयोग करके ऐप्लिकेशन-विशिष्ट NDEF संदेश लिखने के लिए तरीका बताया गया है

private void ReadNDEFRecordFromTag(object sender, RoutedEventArgs e) 
    { 
     ProximityDevice device = ProximityDevice.GetDefault(); 

     if (device != null) 
     { 
      device.SubscribeForMessage("NDEF", ndefMessageRecieved); 

      MessageBox.Show("Registered to NFC tag. Tap with NFC tag."); 
     } 
    } 

    private void ndefMessageRecieved(ProximityDevice sender, ProximityMessage message) 
    { 
     var ndefMessage = NdefMessage.FromByteArray(message.Data.ToArray()); 

     StringBuilder sb = new StringBuilder(); 
     foreach (NdefRecord record in ndefMessage) 
     { 
      sb.AppendLine(Encoding.UTF8.GetString(record.Payload, 0, record.Payload.Length)); 
     } 
     Dispatcher.BeginInvoke(() => MessageBox.Show(sb.ToString())); 
    } 

जब हम WP8 पर इस कोड स्निपेट को चलाते हैं और पहले लिखित एनडीईएफ टैग को टैप करते हैं तो हम निम्न संदेश देख सकते हैं:

MessageBox saying Hello World

और यदि हम एक ही NFC टैग लेने के लिए और Android के NFC TagInfo एप्लिकेशन का उपयोग हम एक ही डेटा देख सकते हैं:

NfcTag Info data on Android

मामले में आप सोच रहे हैं कि क्या वास्तव में प्रेषित हो जाता है/trasnfered जब आप NDEF उपयोग करते हैं, यहाँ टैग पर GoToTags विंडोज अनुप्रयोग है हम सिर्फ का उपयोग करें:

GoToTags showing the binary data stored in the NDEF tag

NDEF लाइब्रेरी आप के लिए एक सा भारी लगता है, आप हमेशा अपने पर देसी NDEF फ़ॉर्मेटर और बराबर बाहर क्रैंक कर सकते हैं सेवा। इस नोकिया ओएसएस प्रोजेक्ट @NFC Tag Reader

एनएफसी फोन-टू-फोन बनाम एनएफसी फोन-टू-टैग के संबंध में, ऊपर दिए गए कोड स्निपेट या तो परिदृश्य के लिए काम करेंगे। यदि आप किसी टैग को लिखना चाहते हैं, तो सिमप्पी संदेश प्रकार में ": WriteTag" ऑपरेशन रखें। यदि आप सीधे पास के फोन से संवाद करना चाहते हैं तो बस ": WriteTag" ऑपरेशन को हटा दें। दोनों WP8 < => एंड्रॉइड के साथ ठीक काम करते हैं।

ध्यान दें कि एंड्रॉइड & WP8 पता एनडीईएफ में अंतर है। WP8 केवल एक संदेश में पहला एनडीईएफ रिकॉर्ड पढ़ सकता है, जबकि एंड्रॉइड सभी एनडीईएफ रिकॉर्ड पढ़ सकता है। एंड्रॉइड गैर एनडीईएफ-स्वरूपित टैग के साथ काम कर सकता है और उनको प्रारूपित कर सकता है; WP8 को एनडीईएफ प्रारूपित टैग का उपयोग करना है।