博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NFC技术:使用Android Beam技术传输文本(一)
阅读量:5022 次
发布时间:2019-06-12

本文共 3873 字,大约阅读时间需要 12 分钟。

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 }

 

转载于:https://www.cnblogs.com/my334420/p/6915718.html

你可能感兴趣的文章
Python中sys模块sys.argv取值并判断
查看>>
【详记MySql问题大全集】四、设置MySql大小写敏感(踩坑血泪史)
查看>>
并查集
查看>>
ubuntu 11.04下android开发环境的搭建!
查看>>
Bzoj 3343: 教主的魔法
查看>>
括号序列(栈)
查看>>
一件趣事
查看>>
DevExpress控件TExtLookupComboBox实现多列模糊匹配输入的方法
查看>>
atom 调用g++编译cpp文件
查看>>
H3C HDLC协议特点
查看>>
iptables 网址转译 (Network address translation,NAT)
查看>>
ios __block typeof 编译错误解决
查看>>
android 插件形式运行未安装apk
查看>>
ios开发之 manage the concurrency with NSOperation
查看>>
Android权限 uses-permission
查看>>
NSEnumerator用法小结
查看>>
vim如何配置go语言环境
查看>>
机器学习好网站
查看>>
python 中的 sys , os 模块用法总结
查看>>
解题:国家集训队 Middle
查看>>