0

USB NFC リーダー (ネイティブ NFC を持たないデバイス用) と対話するアプリを構築しています。受信機は USB で、広告どおりに動作するように見える素敵な SDK が付属しています (リーダーを通過したタグを正常に読み取ることができるという点で)。

私の課題は非常に簡単であると信じていますが、実装方法がはっきりしていないのは、USB 接続の NFC リーダーが NFC タグの近接によってトリガーされたときに通知されるようにアプリを登録する方法です。

次のようなものを呼び出すブロードキャストレシーバーを登録するだけですか:

UsbDevice device = (UsbDevice) intent
                            .getParcelableExtra(UsbManager.EXTRA_DEVICE);

アプリを自分で起動しますか?どういうわけか、それは正しくありません。

ティア

4

1 に答える 1

1

マニフェストに登録された BroadcastReceiver を作成することをお勧めします。これにより、アプリケーションが実行されていなくても通知を受けることができます。

public class NfcReceiver extends BroadcastReceiver {
    /* ... */

    @Override
    public void onReceive(Context context, Intent intent) {
        if (NfcAdapter.ACTION_NDEF_DISCOVERED.equals(getIntent().getAction())) {
            Parcelable[] rawMsgs =_
              intent.getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
            if (rawMsgs != null) {
                msgs = new NdefMessage[rawMsgs.length];
                for (int i = 0; i < rawMsgs.length; i++) {
                    msgs[i] = (NdefMessage) rawMsgs[i];
                }
            }
        } /* end handle NDEF_DISCOVERED */
    } /* end onReceive */
} /* end BroadcastReceiver*/

マニフェストには、必ず適切なインテント フィルターを追加してください (私は NFC を行ったことはありませんが、始めるにはこれが正しいと思います :)

<uses-feature android:name="android.hardware.nfc" android:required="true" />
<uses-sdk android:minSdkVersion="10"/>
<uses-permission android:name="android.permission.NFC" />

<receiver android:name=".NfcReceiver">
    <intent-filter>
        <action android:name="android.nfc.action.NDEF_DISCOVERED"/>
        <category android:name="android.intent.category.DEFAULT"/>
        <data android:mimeType="text/plain" />
    </intent-filter>
</receiver>

http://developer.android.com/guide/topics/connectivity/nfc/nfc.html

http://developer.android.com/guide/topics/connectivity/nfc/advanced-nfc.html

そのルートに進むことができる/希望する場合は、解決策もあります。たとえば、次のようになります。

http://mobisocial.github.com/EasyNFC/apidocs/reference/mobisocial/nfc/Nfc-source.html

于 2012-12-21T08:45:06.987 に答える