15、NFC技术:使用Android Beam技术传输文件

传输文件的API

从Android4.1开始,NfcAdapter类增加了如下两个推送数据的方法。

NfcAdapter.setBeamPushUris
NfcAdapter.setBeamPushUrisCallback

这两个方法的原型如下:

public void setBeamPushUris(Uri[] uris, Activity activity);

public void setBeamPushUrisCallback(CreateBeamUrisCallback callback, Activity activity);

Demo
 
 1 import java.io.FileOutputStream;
 2 import java.io.InputStream;
 3 
 4 import android.app.Activity;
 5 import android.app.PendingIntent; 
 6 import android.content.Intent;
 7 import android.net.Uri;
 8 import android.nfc.NfcAdapter;
 9 import android.nfc.NfcAdapter.CreateBeamUrisCallback;
10 import android.nfc.NfcEvent;
11 import android.os.Bundle;
12 
13  
14 public class NFCFileActivity extends Activity implements CreateBeamUrisCallback {
15     private NfcAdapter mNfcAdapter;
16     private PendingIntent mPendingIntent;
17     private final String targetFilename = "/sdcard/temp_icon.png";
18 
19     @Override
20     protected void onCreate(Bundle savedInstanceState) {
21         super.onCreate(savedInstanceState);
22         setContentView(R.layout.activity_nfcfile);
23         
24         mNfcAdapter = mNfcAdapter.getDefaultAdapter(this);
25         mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
26                 getClass()), 0);
27 
28         try {
29             InputStream is = getResources().getAssets().open("icon.png");
30             FileOutputStream fos = new FileOutputStream(targetFilename);
31             byte[] buffer = new byte[10000];
32             int n = is.read(buffer);
33             fos.write(buffer, 0, n);
34             fos.close();
35             is.close();
36         } catch (Exception e) {
37 
38         }
39         mNfcAdapter.setBeamPushUrisCallback(this, this);
40     }
41 
42     @Override
43     public Uri[] createBeamUris(NfcEvent event) {
44         Uri[] uris = new Uri[1];
45         Uri uri = Uri.parse("file://" + targetFilename);
46         uris[0] = uri;
47         return uris;
48     }
49 
50 }
1 <uses-permission android:name="android.permission.NFC" />
2     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

   

       其实内部是蓝牙在传输,NFC已经不起作用了,可以相隔一定距离,即使NFC中断也没关系,因为是蓝牙在传输。

 

转载于:https://www.cnblogs.com/androidsj/p/3856443.html

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值