NFC技术:使用Android Beam技术传输文本(一)

  1 //实现两部Android手机文本传输
  2 //4.0以上
  3 //方法:将两部安卓手机背对背,一部手机输入文本,点击屏幕发送,另一部接收显示
  4
  5 public class MainActivity extends Activity implements
  6         CreateNdefMessageCallback, OnNdefPushCompleteCallback {
  7
  8     private NfcAdapter mnfcAdapter;
  9     private EditText mBeamText;
 10     private PendingIntent mPendingIntent;
 11
 12     @Override
 13     protected void onCreate(Bundle savedInstanceState) {
 14         super.onCreate(savedInstanceState);
 15         setContentView(R.layout.fragment_main);
 16         mBeamText = (EditText) findViewById(R.id.editText1);
 17         mnfcAdapter = mnfcAdapter.getDefaultAdapter(this);
 18         mPendingIntent = PendingIntent.getActivity(this, 0, new Intent(this,
 19                 getClass()), 0);
 20
 21         // 指定要传输文本的回调
 22         mnfcAdapter.setNdefPushMessageCallback(this, this);
 23         // 传输完成调用
 24         mnfcAdapter.setOnNdefPushCompleteCallback(this, this);
 25     }
 26
 27     @Override
 28     protected void onResume() {
 29         // TODO Auto-generated method stub
 30         super.onResume();
 31         if (mnfcAdapter != null) {
 32             mnfcAdapter.enableForegroundDispatch(this, mPendingIntent, null,
 33                     null);
 34         }
 35     }
 36
 37     @Override
 38     protected void onPause() {
 39         // TODO Auto-generated method stub
 40         super.onPause();
 41         if (mnfcAdapter != null) {
 42             mnfcAdapter.disableForegroundDispatch(this);
 43         }
 44     }
 45
 46     // 显示接收到的数据
 47     void processIntent(Intent intent) {
 48
 49         Parcelable[] rawMsgs = intent
 50                 .getParcelableArrayExtra(NfcAdapter.EXTRA_NDEF_MESSAGES);
 51         NdefMessage message = (NdefMessage) rawMsgs[0];
 52         String text = TextRecord.parse(message.getRecords()[0]).getText();
 53         Toast.makeText(this, text, 0).show();
 54     }
 55
 56     @Override
 57     protected void onNewIntent(Intent intent) {
 58         // TODO Auto-generated method stub
 59         // super.onNewIntent(intent);
 60         processIntent(intent);
 61     }
 62
 63     @Override
 64     public void onNdefPushComplete(NfcEvent event) {
 65         // TODO Auto-generated method stub
 66         Log.i("----->>", "完成");
 67     }
 68
 69     @Override
 70     public NdefMessage createNdefMessage(NfcEvent event) {
 71         // TODO Auto-generated method stub
 72
 73         String text = mBeamText.getText().toString().trim();
 74         if ("".equals(text)) {
 75             text = "默认文本";
 76             // 当手机靠近另一部手机,使它自动打开计算器
 77             // NdefMessage ndefMessage = new NdefMessage(
 78             // new NdefRecord[] { NdefRecord
 79             // .createApplicationRecord("com.android.calculator2") });
 80             //
 81
 82             NdefMessage ndefMessage = new NdefMessage(
 83                     new NdefRecord[] { creatTextRecord(text) });
 84             return ndefMessage;
 85         }
 86
 87         return null;
 88     }
 89
 90     public NdefRecord creatTextRecord(String text) {
 91
 92         byte[] langBytes = Locale.CHINA.getLanguage().getBytes(
 93                 Charset.forName("US-ASCII"));
 94         Charset utfEncoding = Charset.forName("UTF-8");
 95         byte[] textBytes = text.getBytes(utfEncoding);
 96         int utfBit = 0;
 97         char status = (char) (utfBit + langBytes.length);
 98         byte[] data = new byte[1 + langBytes.length + textBytes.length];
 99         data[0] = (byte) status;
100         System.arraycopy(langBytes, 0, data, 1, langBytes.length);
101         System.arraycopy(textBytes, 0, data, 1 + langBytes.length,
102                 textBytes.length);
103
104         NdefRecord ndefRecord = new NdefRecord(NdefRecord.TNF_WELL_KNOWN,
105                 NdefRecord.RTD_TEXT, new byte[0], data);
106         return ndefRecord;
107
108     }
109
110 }
时间: 2024-11-05 22:56:39

NFC技术:使用Android Beam技术传输文本(一)的相关文章

14、NFC技术:使用Android Beam技术传输文本

Android Beam的基本理念 Android Beam的基本理念就是两部(只能是两部)NFC设备靠近时(一般是背靠背),通过触摸一部NFC设备的屏幕,将数据推向另外一部NFC设备.在传递数据的过程中,两部NFC设备不能离得太远,否则NFC连接将中断. Android Beam API Android SDK提供了如下两个用于传递消息的方法. NfcAdapter.setNdefPushMessage NfcAdapter.setNdefPushMessageCallback public

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

传输文件的API 从Android4.1开始,NfcAdapter类增加了如下两个推送数据的方法. NfcAdapter.setBeamPushUris NfcAdapter.setBeamPushUrisCallback 这两个方法的原型如下: public void setBeamPushUris(Uri[] uris, Activity activity); public void setBeamPushUrisCallback(CreateBeamUrisCallback callbac

NFC技术:使用Android Beam技术传输文件(二)

1 public class MainActivity extends ActionBarActivity implements 2 CreateBeamUrisCallback { 3 private NfcAdapter mNfcAdapter; 4 private PendingIntent mPendingIntent; 5 private final String targetFilename = "/sdcard/temp_icon.png"; 6 7 @Override

【腾讯Bugly干货分享】Android 插件技术实战总结

本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/1p5Y0f5XdVXN2EZYT0AM_A 前言 安卓应用开发的大量难题,其实最后都需要插件技术去解决. 现今插件技术的使用非常普遍,比如微信.QQ.淘宝.天猫.空间.携程.大众点评.手机管家等等这些大家在熟悉不过的应用都在使用. 插件技术可以给项目开发带来巨大的好处,比如:并行高效开发.模块解耦.解除单个dex函数不能超过65535的限制.动态更新

Android官方技术文档翻译——Gradle 插件用户指南(6)

没想到翻译这篇<Gradle 插件用户指南>拖了差不多一个月,还跨年了.不好还好,在2号时终于一口气把剩下的给翻译完了(其实那天剩下的也就不到一章). 今天先发一下第六章,明天再发第七章. 本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide. 翻译不易,转载请注明CSDN博客上的出处: http://blog.c

[转载] Android逃逸技术汇编

本文转载自: http://blogs.360.cn/360mobile/2016/10/24/android_escape/ 摘    要 传统逃逸技术涉及网络攻防和病毒分析两大领域,网络攻防领域涉及的逃逸技术主要为网络入侵逃逸技术,病毒分析领域涉及到的逃逸技术主要包括针对静态分析.动态分析的木马逃逸技术. 本文介绍的Android木马逃逸技术研究了针对用户感知.杀软查杀.沙箱动态养殖和人工分析的各种逃逸技术. 大多数Android木马的作恶途径是长期留存用户终端,通过持续性作恶获取收益. 为

Android高斯模糊技术,实现毛玻璃效果(转)

本博客转自郭霖公众号:http://mp.weixin.qq.com/s?__biz=MzA5MzI3NjE2MA==&mid=2650235930&idx=1&sn=e328709c41ae208a9e41ef79d38cbeed&scene=24&srcid=09104fpQDG98JcRcUB9Ec7BN#wechat_redirect http://blog.csdn.net/grp0916/article/details/50494712 Android高

Android官方技术文档翻译——Gradle 插件用户指南(4)

近期赶项目,白天基本没时间,仅仅有晚上在家的时候才干看一看.昨天晚上仅仅翻译完了第四章,今天就仅仅发第四章吧. 本文译自Android官方技术文档<Gradle Plugin User Guide>,原文地址:http://tools.android.com/tech-docs/new-build-system/user-guide. 翻译不易.转载请注明CSDN博客上的出处: http://blog.csdn.net/maosidiaoxian/article/details/4195580

Android开发技术周报 Issue#69

新闻 Android N或取消应用抽屉 设计更趋近iOS 设计也在进化 对升级速度忍无可忍 谷歌或将收回安卓控制权 坑否 Google为手表App开发者推出了Google Play Services中国特别版 看起来很美好 Google发布J2ObjC 1.0:将Java转换为Objective-C 黑科技 2020年的Android系统会是什么样? 可能是非常酷的 教程 Android开发:最详细的 Toolbar 开发实践总结 详解有图有代码 Facebook如何采集其Android应用性能