📜  安卓 Beam(1)

📅  最后修改于: 2023-12-03 15:25:04.891000             🧑  作者: Mango

安卓 Beam

简介

安卓 Beam 是一种数据传输技术,通过 NFC 硬件实现。使用 Beam,您可以快速、简便地在两个安卓设备之间共享数据。

在 NFC Beam 技术中,有两个角色:传输起点(发起传输的设备)和接收端(接收到传输数据的设备)。安卓 Beam 可以用于传输包括网址、联系人、地理位置、照片、音视频等多媒体文件。

原理

安卓 Beam 通过让两个 NFC 设备靠近来开始数据传输,传输过程通过 NFC 硬件中的一个区域“模拟磁场”来进行。

这里要提一下 NDEF(NFC Data Exchange Format),是一种标准格式,用于描述如何在 NFC 通讯中传输数据。安卓支持NDEF格式,因此NDEF各种类型的记录可以使用安卓 Beam 进行传输。

在传输起点设备,用户将需要传送的数据通过 Beam API 接口(Android Beam API)在设备上准备好传输。NFC 硬件将检测到该设备临近,然后启动 Beam 进行数传么。当两个 NFC 设备靠近, NFC 硬件会自动建立连接并将数据进行传输。一旦传输完成,接收端才可以对数据进行操作。

使用步骤

使用安卓 Beam 进行数据传输的步骤如下:

  1. 在传输起点设备上启动数据传输功能,例如对于一个图片,调用如下代码:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("image/jpg");
Uri uri = Uri.parse("file://" + "/sdcard/example.jpg");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(intent);
  1. 监听接收端设备的 NFC 识别硬件状态。在接受端设备临近时,TransferUIModule 将被显示。

  2. 将传输起点硬件放置在接受端硬件上,以建立传输连接。

  3. 当成功建立连接后,传输起点硬件将开始发送数据。

  4. 一旦数据传输完成,接收端设备将至于状态下,允许用户进行操作。

注意事项
  • 安卓 Beam 是一种 NFC 技术,需要 NFC 硬件支持

  • 安卓 Beam 需要在两台设备上都开启,才能进行数据传输

  • 安卓 Beam 传输距离较短

  • 显示内置动画时不要依赖intent机制,而是要使用BeamStatusObserver监挂器

  • 对于大的文件,比如视频文件,互传是应该使用WLAN的而不是使用Beam

  • 在没有处理消费完成后,无法百分百保证Beam成功的传输,所以在调用过程中最好带上适当的错误处理机制

总结

安卓 Beam 是一种非常方便的数据传输技术,在不同设备之间进行数据传输十分便捷。同时,安卓 Beam 还可以结合 Android Beam API 进行更灵活的应用开发。

参考文献