2011-10-10 102 views
1

我創建了一個簡單的應用程序,其中有一個圖像。現在我想要做的是。如何在我的應用程序中添加NFC支持

  1. 起初我想在我的應用程序中添加NFC支持。

  2. 一旦我在我的應用程序中添加nfc支持,接下來我想要的是如何將我的應用程序中存在的圖像傳輸到具有NFC支持的其他設備。

如果有人知道請幫我解決這個問題,如果可能的話,舉一個例子。我已經閱讀了developer.android.com中爲NFC提供的文檔,但在這種情況下,它只能使用NFC將文本從一臺設備傳輸到另一臺設備,但在我的情況下,我想傳輸圖像而不是文本。

規範文本傳輸

public class NFCTestApp extends Activity 

{

private NfcAdapter mAdapter; 
    private TextView mText; 
    private NdefMessage mMessage; 

public static NdefRecord newTextRecord(byte[] text, Locale locale, boolean enco deInUtf8) 
{ 
    byte[] langBytes = locale.getLanguage().getBytes(Charset.forName("US-ASCII")); 

    Charset utfEncoding = encodeInUtf8 ? Charset.forName("UTF-8") : Charset.forName("UTF-16"); 
    byte[] textBytes = text; 

    int utfBit = encodeInUtf8 ? 0 : (1 << 7); 
    char status = (char) (utfBit + langBytes.length); 

    byte[] data = new byte[1 + langBytes.length + textBytes.length]; 
    data[0] = (byte) status; 
    System.arraycopy(langBytes, 0, data, 1, langBytes.length); 
    System.arraycopy(textBytes, 0, data, 1 + langBytes.length, textBytes.length); 

    return new NdefRecord(NdefRecord.TNF_WELL_KNOWN, NdefRecord.RTD_TEXT, new byte[0], data); 
} 

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    mAdapter = NfcAdapter.getDefaultAdapter(this); 

    setContentView(R.layout.main); 


    Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.icon); 
    ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
    bm.compress(Bitmap.Compress.JPEG, 100, baos); 
    byte[] b = baos.toByteArray(); 

    // Create an NDEF message 
    mMessage = new NdefMessage(
     new NdefRecord[] { newTextRecord(b, Locale.ENGLISH, true)}); 
} 

@Override 
public void onResume() 
{ 
    super.onResume(); 
    if (mAdapter != null) mAdapter.enableForegroundNdefPush(this, mMessage); 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    if (mAdapter != null) mAdapter.disableForegroundNdefPush(this); 
} 

}

回答

2

首先,你需要包括這在你的清單文件,以使NFC支持:

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

然後你可能會有看看Google的官方NFC演示應用NFCDemo,以供參考。

+0

Yeh我已經通過該文檔了。我也正在處理傳輸文本的例子。現在我想傳輸圖像而不是傳輸Text.So是否存在使用點對點數據交換傳輸圖像的任何示例 – AndroidDev

+0

I don我不這麼認爲。但是如果您能夠發送/接收文本,發送圖像應該不是問題,因爲我相信實際的傳輸代碼不會有太大的偏差。 –

+0

實際上,對於發送文本,我只是簡單地創建一個NDEF消息,其中包含一些示例文本,如mMessage = new NdefMessage( new NdefRecord [] {newTextRecord(「NDEF Push Sample」,Locale.ENGLISH,true)});現在的圖像我應該傳遞給NdefRecord – AndroidDev

相關問題