Android SDK for NFC-Powered e-Paper
来自Waveshare Wiki
针对NFC-Powered e-Paper安卓开发,我们提供了SDK,将发送函数部分封装好,用户在开发的时候,只需要准备好图像数据, 通过调用函数即可实现图像传输到NFC-Powered e-Paper上进行刷新。
导入.jar文件
- 下载SDK
- 下载SDK,并解压出.jar文件
- NFC SDK
- 将Jar文件添加到工程的libs目录下
- 在工程中找到.jar文件,然后右键加载
- 加载成功后,会在build.gradle中自动添加如下的语句:
使用说明
整个SDK中提供了两个函数,分别是发送函数和进度函数
发送函数
- int a(NfcA var1, int var2, Bitmap var3) ;
- var1: NFC标签实例
- var2:墨水屏型号 (请参考下面的墨水屏型号对应表格)
- var3: 需要显示的BMP图片数据 (请参考下面的图片要求表格)
- 返回值说明
- 1:发送成功
- 0:发送失败
| 编号 | 对应型号 |
|---|---|
| 1 | 2.13inch |
| 2 | 2.9inch |
| 3 | 4.2inch |
| 4 | 7.5inch |
| 5 | 7.5inch HD |
| 6 | 2.7inch |
| 7 | 2.9inch B |
| 编号 | 尺寸 | 宽 | 高 |
|---|---|---|---|
| 1 | 2.13inch | 250 | 122 |
| 2 | 2.9inch | 296 | 128 |
| 3 | 4.2inch | 400 | 300 |
| 4 | 7.5inch | 800 | 480 |
| 5 | 7.5inch HD | 880 | 528 |
| 6 | 2.7inch | 264 | 176 |
| 7 | 2.9inch B | 296 | 128 |
- Bitmap
黑白:需要显示的BMP图片,图片要求全彩,但是图中只能有黑白,不透明,其他颜色可能不会显示,不同的屏幕像素要求不同。
黑白红: BMP图片只能存在3中颜色 黑白红,其他颜色可能会认为是黑色或者白色,红色要求为0xffff0000。
进度函数
- int b()
- 返回值:
- 0-100:当前进度
- -1:失败
参考示例
protected void onNewIntent(Intent intent) {//识别到NFC
if (mWriteMode && NfcAdapter.ACTION_TAG_DISCOVERED.equals(intent.getAction())) {
detectedTag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG);
String[] tech = detectedTag.getTechList();//得到描述符
if(tech[0].equals("android.nfc.tech.NfcA")) {//如果描述符正确
Thread t = new Thread() {//创建进程 保证主程序不阻塞
@Override
public void run() {
Boolean success = false;
NfcA tntag;//NFC接口
final a a = new a();//创建发送的实例。
a.a();//初始化发送函数
Thread thread = new Thread(new Runnable() {//创建线程
@Override
public void run() {
EPD_total_progress = 0;
while(EPD_total_progress != -1){
EPD_total_progress = a.b();//读取进度
if(EPD_total_progress == -1){
break;
}
setStatusBody(getString(R.string.txing) + EPD_total_progress +"%");
if(EPD_total_progress == 100 ){
break;
}
SystemClock.sleep(10);//防止过度占用CPU
}
}
});
thread.start();//开启线程
tntag = NfcA.get(detectedTag);//获取给定标签的实例
try {
int whether_succeed = a.a(tntag,Size_Flag, bmp_send);//发送函数
if(whether_succeed == 1){
success = true;
runOnUiThread(new Runnable() {
@Override
public void run() {
checkNFCpopwindow.dismiss(); //窗口提示
}
});
Success_Sound_Effects();
}else{
setStatusBody(getString(R.string.txfail));
}
} finally {
try {
if (success == false) {
setStatusBody(getString(R.string.txfail));
runOnUiThread(new Runnable() {
@Override
public void run() {
checkNFCpopwindow.dismiss();
}
});
}
tntag.close();
} catch (IOException e) {//发送异常处理 NFC I/O异常
e.printStackTrace();
}
}
}
};
t.start();//开启线程
}
}
}


