zoukankan      html  css  js  c++  java
  • 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中断也没关系,因为是蓝牙在传输。

     
  • 相关阅读:
    Redis string
    java 是 传值还是传址 Pass-by-value or Pass-by-reference
    IDEA 适用技巧
    测试 MD
    pyqt5 学习总结
    win10 安装anaconda 无法使用pip 报错缺少SSL模块
    Hadoop datanode无法启动
    Ansible 安装jdk
    java 安装后 不能 java javac 说找不到命令 -bash: javac: command not found
    如何去掉MapReduce输出的默认分隔符
  • 原文地址:https://www.cnblogs.com/androidsj/p/3856443.html
Copyright © 2011-2022 走看看