6 Star 1 Fork 3

yueshuxie / Memo Touch Startup

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README

#Memo Touch Startup ###Apexmic 大容量NFC SDK的基本使用范例,支持WiFi与手机NFC读写卡功能。 Screenshots

##一.卡片监听 ###1.获取Device实例,并且初始化

Device mDevice= DriverFactory.getDevice(Device.TYPE_NFC); //若是通过读卡器读写时获取TYPE_WIFI
mDevice.initContext(context);

###2.设置卡片监听器

mDevice.addCardListener(new CardListener {
        @Override
        public void onCardChanged(CardEvent cardChangedEvent) {}

        @Override
        public void onCardNotApplicable(CardEvent cardChangedEvent) {}

        @Override
        public void onCardTimeout(CardEvent cardChangedEvent) {}

        @Override
        public void onCardAttached(CardEvent cardEvent) {}

        @Override
        public void onCardUnattached(CardEvent cardEvent) {}

        @Override
        public void onCardException(CardEvent cardEvent) {});

CardListener监听卡片变更事件,包括卡片贴近、移开、卡片锁定后重新贴近,卡片移开超出设定的时间范围等。

##二.读卡

###1.设置模式

mDevice.setMode(Device.MODE_READ_ONLY);

###2.读卡 ####a.卡片贴近读卡设备时,通过卡片监听器CardEvent获取到卡片的基本信息,Card 对象可获取卡类型,名称,ID,文件列表等。

    @Override
        public void onCardChanged(CardEvent cardChangedEvent) {
            Card card = cardChangedEvent.getNewCard();
            List<CardFile> fileList = card.listFile();
        }

####b.获取读卡对象CardFileReader,设置文件读取监听器及读取顺序

CardFileReader reader = mDevice.getCardFileReader(card, "");
reader.setCardFileReadListener(new CardReadListenerImpl());
reader.read(fileList);

文件的读取进度可由CardFileReadListener回调事件获得:

private class CardReadListenerImpl implements CardFileReadListener {
    @Override
    public void onReadStart(CardFileReadEvent cardReadEvent) {}  //文件开始读

    @Override
    public void onReadProgress(CardFileReadEvent cardReadEvent) {} //文件进度更新

    @Override
    public void onReadFinish(CardFileReadEvent cardReadEvent) {}  //文件读取完成

    @Override
    public void onReadPause(CardFileReadEvent cardReadEvent) {}   //文件读取暂停

    @Override
    public void onReadResume(CardFileReadEvent cardReadEvent) {}  //文件继续读取

    @Override
    public void onReadCancel(CardFileReadEvent cardReadEvent) {}  //文件取消读取

}

##三.写卡 ###1.设置模式

mDevice.setMode(Device.MODE_WRITE_ONLY);

###2. 写卡 卡片贴近读卡设备时,通过CardEvent获取代表本次写卡的Card 对象,

    @Override
        public void onCardChanged(CardEvent cardChangedEvent) {
            Card card = cardChangedEvent.getNewCard();
        }

Card信息设置与写入文件:

CardFileWriter writer = mDevice.getCardFileWriter(card, "");
card.setName(cardName);
try {
    writer.write(getWriteFiles(), writeListener, false);
} catch (PackFormatException e) {
    e.printStackTrace();
} catch (ModeException e) {
    e.printStackTrace();
}

文件的写入状态可由CardFileWriteListener回调事件获得:

class CardFileWriteListenerImpl implements CardFileWriteListener {
        @Override
        public void onWriteStart(CardFileWriteEvent event) {} // 开始写卡

        @Override
        public void onWriteProgress(CardFileWriteEvent event) {}   // 进度更新

        @Override
        public void onWriteFinish(CardFileWriteEvent event) {} // 写卡完成

        @Override
        public void onWritePause(CardFileWriteEvent event) {}  // 写卡暂停(卡片拿开)

        @Override
        public void onWriteResume(CardFileWriteEvent event) {} // 继续写卡

        @Override
        public void onWriteCancel(CardFileWriteEvent event) {} // 取消写卡
    }

##四.使用配置

###1.加载驱动 使用SDK 前必需先加载驱动

Class.forName("com.apex.iot.card.driver.MainDriverLoader");

###2.NFC 事件拦载与中转 当NFC 贴近手机时,系统会调用onNewIntent() 方法,并将NFC 相关的信息封装于Intent 中,APP拦截到NFC事件后交由底层处理:


    @Override
    protected void onNewIntent(Intent intent) {
        super.onNewIntent(intent);
        setIntent(intent);
    }

    @Override
    protected void onResume() {
        if (NfcAdapter.ACTION_TECH_DISCOVERED.equals(getIntent().getAction())) {
            ((NFCDevice) mDevice).setIntent(getIntent());
        super.onResume();
    }

###3.读卡器设置 Device初始化之后我们就可以使用它来建立WiFi 连接了,WiFi 连接过程的代码如下:

        AdapterDevice adevice = (AdapterDevice) mDevice;
        adevice.setAdapterListener(adapterScanListener);
        try {
            adevice.scanAdapter();
        } catch (AdapterException e) {
            e.printStackTrace();
        }

WiFi 事件监听


    private AdapterListener adapterScanListener = new AdapterListener() {

        @Override
        public void onScanResult(List<Adapter> list) {} // 扫描到的读卡器list

        @Override
        public void onConnected(AdapterEvent adapterEvent) {}  //设置读卡器WiFi信号后连接成功

        @Override
        public void onDisconnect(AdapterEvent adapterEvent) {} //设置读卡器WiFi信号后连接成功后断开

        @Override
        public void onException(AdapterEvent adapterEvent) {} //设置读卡器WiFi信号后连接不成功
    };

onScanResult(List<Adapter> list) 回调的list中选择你的读卡器WiFi 信号设置给Device, 这样SDK就能帮你连接读卡器。


    try {
        device.setAdapter(adapter);
    } catch (AdapterException e) {
        e.printStackTrace();
    }

##五.其它配置 ###1.在AnroidManifest.xml文件中需要设置的部分有: ####a.设置权限:

<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.NFC" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

####b.设置Activity的Intent Filter:

<intent-filter>
    <action android:name="android.nfc.action.TECH_DISCOVERED" />
</intent-filter>

####c.限制Android版本, Android Studio 在build.gradle文件中配置 android:minSdkVersion="14"

Copyright ©2016 珠海艾派克科技股份有限公司

空文件

简介

APEXMIC大容量NFC卡SDK(Memo Touch)开发范例 展开 收起
Android
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Android
1
https://gitee.com/yueshuxie/Memo-Touch-Startup.git
git@gitee.com:yueshuxie/Memo-Touch-Startup.git
yueshuxie
Memo-Touch-Startup
Memo Touch Startup
master

搜索帮助

344bd9b3 5694891 D2dac590 5694891