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目录下
NFC-SDK-1.png
  • 在工程中找到.jar文件,然后右键加载
NFC-SDK-2.png NFC-SDK-3.png NFC-SDK-4.png
  • 加载成功后,会在build.gradle中自动添加如下的语句:
NFC-SDK-5.png

使用说明

整个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();//开启线程
        }
    }
}