2011-03-04 13 views
7

में अशक्त मैं ForegroundDispatch (http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/nfc/ForegroundDispatch परीक्षण करने के लिए कोशिश कर रहा हूँ देता है। एचटीएमएल) एम्यूलेटर एपीआई 10 (एंड्रॉइड 2.3.3) में।NfcAdapter.getDefaultAdapter (यह) एमुलेटर

जब मैं NfcAdapter.getDefaultAdapter (यह) को कॉल करता हूं, तो मुझे शून्य मिलता है। ऐसा क्यों है?

कोड:

public class ForegroundDispatch extends Activity { 
private NfcAdapter mAdapter; 
private PendingIntent mPendingIntent; 
private IntentFilter[] mFilters; 
private String[][] mTechLists; 
private TextView mText; 
private int mCount = 0; 

@Override 
public void onCreate(Bundle savedState) { 
    super.onCreate(savedState); 

    setContentView(R.layout.foreground_dispatch); 
    mText = (TextView) findViewById(R.id.text); 
    mText.setText("Scan a tag"); 

    mAdapter = NfcAdapter.getDefaultAdapter(this); 

    // Create a generic PendingIntent that will be deliver to this activity. The NFC stack 
    // will fill in the intent with the details of the discovered tag before delivering to 
    // this activity. 
    mPendingIntent = PendingIntent.getActivity(this, 0, 
      new Intent(this, getClass()).addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP), 0); 

    // Setup an intent filter for all MIME based dispatches 
    IntentFilter ndef = new IntentFilter(NfcAdapter.ACTION_NDEF_DISCOVERED); 
    try { 
     ndef.addDataType("*/*"); 
    } catch (MalformedMimeTypeException e) { 
     throw new RuntimeException("fail", e); 
    } 
    mFilters = new IntentFilter[] { 
      ndef, 
    }; 

    // Setup a tech list for all NfcF tags 
    mTechLists = new String[][] { new String[] { NfcF.class.getName() } }; 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mAdapter.enableForegroundDispatch(this, mPendingIntent, mFilters, mTechLists); //CRASHES HERE BECAUSE mAdapter IS NULL 
} 

@Override 
public void onNewIntent(Intent intent) { 
    Log.i("Foreground dispatch", "Discovered tag with intent: " + intent); 
    mText.setText("Discovered tag " + ++mCount + " with intent: " + intent); 
} 

@Override 
public void onPause() { 
    super.onPause(); 
    mAdapter.disableForegroundDispatch(this); 
} 
    } 

मेरे प्रकट:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.neka.znacka" 
    android:versionCode="1" 
    android:versionName="1.0"> 
<uses-sdk android:minSdkVersion="10" /> 
<uses-permission android:name="android.permission.NFC"></uses-permission> 
<uses-feature android:name="android.hardware.nfc" android:required="true" /> 

<application android:icon="@drawable/icon" android:label="@string/app_name"> 
    <activity android:name=".Uvodna" 
       android:label="@string/app_name"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

    <activity android:name="Simulator"> 
    </activity> 

</application> 

कोई भी विचार?

उत्तर

0

मैं अनुमान लगाता हूं कि एमुलेटर में कोई एनएफसी एडाप्टर या एनएफसी क्षमता नहीं है।

सार्वजनिक स्थिर NfcAdapter getDefaultAdapter (संदर्भ संदर्भ) के बाद से: एपीआई स्तर 10

हेल्पर डिफ़ॉल्ट एनएफसी एडाप्टर प्राप्त करने के लिए।

अधिकांश एंड्रॉइड डिवाइसों में केवल एक एनएफसी एडाप्टर (एनएफसी नियंत्रक) होगा।

इस सहायक के बराबर है:

NfcManager प्रबंधक = (NfcManager) context.getSystemService (Context.NFC_SERVICE); एनएफसी एडाप्टर एडाप्टर = प्रबंधक.getDefaultAdapter();

पैरामीटर संदर्भ बुला आवेदन के संदर्भ रिटर्न

* the default NFC adapter, or null if no NFC adapter exists 

संपादित करें:

ऐसा लगता है कि कुछ चीजें हैं इसके साथ खेलने के लिए कर सकते हैं। NFCDemo देखें, ऐसा लगता है कि आप टैग के नकली स्कैन उत्पन्न कर सकते हैं।

+0

तो वहाँ एंड्रॉयड एमुलेटर में एनएफसी के साथ खेलने के लिए कोई रास्ता नहीं है जैसे आप यह नकली कर सकते हैं – DixieFlatline

+0

@DixieFlatline लग रहा है जवाब अपडेट किया गया पर –

+0

मैं alredy fakeTagsActivity उपयोग कर रहा हूँ?।। टैग अनुकरण करने के लिए, लेकिन मुझे एनएफसी एडाप्टर प्राप्त करने में समस्याएं हैं (= टैग पढ़ने वाले चिप का अबास्ट्रक्शन) – DixieFlatline

2

आप वास्तव में एमुलेटर और एनएफसी के साथ कुछ भी दिलचस्प नहीं कर सकते हैं। आप TAG_DISCOVERED कार्रवाई का उपयोग नहीं करना चाहते हैं क्योंकि यह अंतिम उपाय की क्रिया है। वास्तविक डिवाइस पर उत्पन्न होने वाले इरादे को एनएफसीडीमो डेमो में फिक्र नहीं किया जा सकता है। 2.3.3 में एनएफसी के बेहतर समर्थन से पहले एनएफसीडीमो को 2.3 के साथ रिलीज़ किया गया था। यह बहुत बुरा है। हो सकता है कि भविष्य में कुछ विकल्प हों लेकिन अभी के लिए हम सभी एनएफसी-सक्षम डिवाइस को एनएफसी के साथ कुछ भी करने के लिए अटक गए हैं।

0

आप एनएफसीडीईओ कोड को संशोधित कर सकते हैं (इसे मैनिफेस्ट और एक्लिप्स परियोजना में एपीआई लेवल 10 पर टक्कर दें) और उसके बाद एनडीईएफ डिस्क्वार्डेड इराद भी उत्पन्न कर सकते हैं, एनडीईएफ संदेशों को अतिरिक्त के माध्यम से इरादे से जुड़े हुए हैं।

इससे आपको वास्तविक एचडब्ल्यू के बिना एनएफसी (विशेष रूप से एनडीईएफ आदि) के लिए कुछ और विकसित करने की अनुमति मिल सकती है।

2

मुझे लगता है कि आप इस NFC Emulator for android के लिए देख रहे हैं। आपको लक्ष्य के रूप में इसके साथ एक नया एवीडी बनाना होगा। यह आशाजनक प्रतीत होता है, इसे देखो।

संपादित करें: सबसे अच्छा काम करता है/केवल खिड़कियों पर्यावरण :(

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