存儲結(jié)束;
[0048]6.6)關(guān)閉卡片對內(nèi)存操作的指令連接;
[0049]7)讀取存儲的16進制數(shù)據(jù)內(nèi)容:對寫入存儲的數(shù)據(jù)利用ASCII碼擴展表進行轉(zhuǎn)換,還原存儲數(shù)據(jù)的內(nèi)容,如圖3所示。
[0050]進一步,步驟3)中發(fā)現(xiàn)卡片和卡片的分發(fā)系統(tǒng)包括以下步驟:
[0051]3.1)如果目標 NFC 卡片包含了系統(tǒng)支持的 NDEF (NFC Data Exchange Formate)消息,即NFC數(shù)據(jù)轉(zhuǎn)換格式消息,則NFC系統(tǒng)模塊將直接把此NDEF消息分發(fā)給感興趣的Activity活動類,如果有目標Activity,則直接分發(fā)給此活動類,否則繼續(xù)下一步;
[0052]3.2)如果目標NFC卡片包含了系統(tǒng)不支持的NDEF消息,或者3.1)中沒有目標Activity,則NFC系統(tǒng)模塊將嘗試分發(fā)一個ACT1N_TECH_DISCOVERED發(fā)現(xiàn)支持類型的通知;NFC系統(tǒng)模塊在分發(fā)此通知時,將首先分析目標卡片所支持的使用技術(shù),然后尋找注冊了支持這些卡片技術(shù)的目標活動Activity,并將意圖1ntent分發(fā)給Activity ;如果沒有合適的目標Activity,則轉(zhuǎn)入下一步;
[0053]3.3)NFC系統(tǒng)模塊將分發(fā)ACT1N_TAG_DISCOVERED通知給注冊了該通知的感興趣目標活動Activity。
[0054]再進一步,步驟4)中的獲取卡片信息的讀取方法為:先獲得卡片對內(nèi)存的操作指令,然后再獲取每個內(nèi)存扇區(qū)的密碼,找到要讀取數(shù)據(jù)的塊,再將內(nèi)存中的16進制數(shù)據(jù)每2位或者4位進行美國標準交換信息碼擴展碼轉(zhuǎn)換,從而識別中文內(nèi)容,最后關(guān)閉對內(nèi)存的操作指令,完成整個讀取過程。
[0055]本實施例以常見的Ml (Mifare Classic 1K)卡片為實施例,一種基于Android平臺的NFC讀寫方法,其中包括以下步驟:
[0056]I)打開本應(yīng)用程序,判斷設(shè)備狀態(tài):
[0057]1.1)先檢測設(shè)備支持NFC功能與否,若不支持則彈出提示框,退出應(yīng)用程序;
[0058]1.2)若設(shè)備支持該功能但未開啟NFC功能,則出現(xiàn)提示框,提醒開啟設(shè)備的NFC功能,開啟后進行下一步;
[0059]2)將標簽靠近設(shè)備背面,等待程序讀??;
[0060]3) NFC卡片的讀操作:當(dāng)有標簽靠近時,應(yīng)用程序會提示發(fā)現(xiàn)一個NFC卡片信息,則啟動Android標準配置文件中過濾器找到定義好的應(yīng)用程序主活動Activity,用戶可以在活動中執(zhí)行需要的操作;
[0061]4)NFC數(shù)據(jù)格式信息的獲得:通過從主活動Activity中的意圖過濾器獲取卡片信息,并將其保存在數(shù)據(jù)格式信息類中;
[0062]5)NFC數(shù)據(jù)格式信息的解析:通過獲得的信息進行數(shù)據(jù)格式轉(zhuǎn)化解析,從而得到卡片中寫入的真實內(nèi)容,即之前寫入的數(shù)據(jù);
[0063]6)NFC卡片的寫操作:當(dāng)NFC應(yīng)用程序發(fā)現(xiàn)一個NFC卡片時,會啟動Android標準配置文件中定義好的對應(yīng)主活動Activity,執(zhí)行Activity中的寫操作:
[0064]6.1)獲取卡片的對內(nèi)存操作指令,并連接;
[0065]6.2)在寫入數(shù)據(jù)的過程中,設(shè)定好寫入的塊,防止寫入扇區(qū)的尾塊中而導(dǎo)致扇區(qū)出現(xiàn)死區(qū)現(xiàn)象;
[0066]6.3)將寫入的數(shù)據(jù)轉(zhuǎn)為byte型,并判斷寫入數(shù)據(jù)的大小,如果超出范圍,提示寫入數(shù)據(jù)超過內(nèi)存,并返回,否則繼續(xù)下一步;
[0067]6.4)獲取寫入扇區(qū)的獨立密碼;
[0068]6.5)判斷寫入數(shù)據(jù)的byte型的長度,小于16byte的補0,大于16byte但小于48byte的自動轉(zhuǎn)為存儲與本扇區(qū)的其他塊,大于48byte的,轉(zhuǎn)到步驟6.3)獲取下一個扇區(qū)的密碼,再重復(fù)步驟6.4),直至存儲結(jié)束;
[0069]6.6)關(guān)閉卡片對內(nèi)存操作的指令連接;
[0070]7)讀取存儲的16進制數(shù)據(jù)內(nèi)容:對寫入存儲的數(shù)據(jù)利用ASCII碼擴展表進行轉(zhuǎn)換,還原存儲數(shù)據(jù)的內(nèi)容,結(jié)果如圖3所示。
[0071]以常見的Ml (Mifare Classic 1K)卡片為例,運用以上方法,完成了 NFC的讀寫過程,其中寫入數(shù)據(jù)前如圖1所示,寫入數(shù)據(jù)后讀取存儲界面如圖2所示。
[0072]以上闡述的是本發(fā)明給出的一個實施例表現(xiàn)出來的優(yōu)良效果,顯然本發(fā)明不僅適合上述實施例,在不偏離本發(fā)明基本精神及不超出本發(fā)明實質(zhì)內(nèi)容所涉及內(nèi)容的前提下可對其做種種變化加以實施。
【主權(quán)項】
1.一種基于Android平臺的NFC讀寫方法,所述方法包括以下步驟: 1)打開本應(yīng)用程序,判斷設(shè)備狀態(tài),過程如下: 1.D先檢測設(shè)備支持NFC功能與否,若不支持則彈出提示框,退出應(yīng)用程序; 1.2)若設(shè)備支持該功能但未開啟NFC功能,則出現(xiàn)提示框,提醒開啟設(shè)備的NFC功能,開啟后進行下一步; 2)將標簽靠近設(shè)備背面,等待程序讀取; 3)NFC卡片的讀操作:當(dāng)有標簽靠近時,應(yīng)用程序發(fā)現(xiàn)一個NFC卡片信息,它會啟動Android標準配置文件中過濾器找到定義好的應(yīng)用程序主活動Activity,用戶可以在活動中執(zhí)行事務(wù)操作; 4)NFC數(shù)據(jù)格式信息的獲得:通過從主活動Activity中的意圖過濾器獲取卡片信息,并將其保存在數(shù)據(jù)格式信息類中; 5)NFC數(shù)據(jù)格式信息的解析:通過獲得的信息進行數(shù)據(jù)格式轉(zhuǎn)化解析從而得到卡片中寫入的真實內(nèi)容,即先前寫入的數(shù)據(jù); 6)NFC卡片的寫操作:當(dāng)NFC應(yīng)用程序發(fā)現(xiàn)一個NFC卡片時,會啟動Android標準配置文件中定義好的對應(yīng)主活動Activity,執(zhí)行Activity中的寫操作: 6.1)獲取卡片的對內(nèi)存操作指令,并連接; 6.2)在寫入數(shù)據(jù)的過程中,設(shè)定好寫入的塊,防止寫入扇區(qū)的尾塊中而導(dǎo)致扇區(qū)出現(xiàn)死區(qū)現(xiàn)象; 6.3)將寫入的數(shù)據(jù)轉(zhuǎn)為byte型,并判斷寫入數(shù)據(jù)的大小,如果超出范圍,提示寫入數(shù)據(jù)超過內(nèi)存,并返回,否則繼續(xù)下一步; 6.4)獲取寫入扇區(qū)的獨立密碼; 6.5)判斷寫入數(shù)據(jù)的byte型的總長度,小于16byte的補0,大于16byte但小于48byte的自動轉(zhuǎn)為存儲與本扇區(qū)的其他塊,大于48byte的,轉(zhuǎn)到步驟6.3)獲取下一個扇區(qū)的密碼,再重復(fù)步驟6.4),直至存儲結(jié)束; 6.6)關(guān)閉卡片的對內(nèi)存操作指令的連接; 7)讀取存儲的16進制數(shù)據(jù)內(nèi)容,對寫入存儲的數(shù)據(jù)進行ASCII碼擴展碼轉(zhuǎn)換,還原存儲數(shù)據(jù)的內(nèi)容。2.如權(quán)利要求1所述一種基于Android平臺的NFC讀寫方法,所述方法特征在于:步驟3)中發(fā)現(xiàn)卡片和卡片的分發(fā)系統(tǒng)包括以下步驟: 3.1)如果目標NFC卡片包含了系統(tǒng)支持的NDEF(NFC Data Exchange Formate)消息,即NFC數(shù)據(jù)轉(zhuǎn)換格式消息,則NFC系統(tǒng)模塊將直接把此NDEF消息分發(fā)給感興趣的Activity活動類,如果有目標Activity,則直接分發(fā)給此活動類,否則繼續(xù)下一步; 3.2)如果目標NFC卡片包含了系統(tǒng)不支持的NDEF消息,或者3.1)中沒有目標Activity,則NFC系統(tǒng)模塊將嘗試分發(fā)一個ACT1N_TECH_DISCOVERED發(fā)現(xiàn)支持類型的通知;NFC系統(tǒng)模塊在分發(fā)此通知時,將首先分析目標卡片所支持的使用技術(shù),然后尋找注冊了支持這些卡片技術(shù)的目標活動Activity,并將意圖1ntent分發(fā)給Activity ;如果沒有合適的目標Activity,則轉(zhuǎn)入下一步; 3.3) NFC系統(tǒng)模塊將分發(fā)ACT1N_TAG_DISCOVERED通知給注冊了該通知的感興趣目標活動 Activity。3.如權(quán)利要求1或2所述一種基于Android平臺的NFC讀寫方法,所述方法特征在于:步驟4)中的獲取卡片信息的讀取方法為:先獲得卡片對內(nèi)存的操作指令,然后再獲取每個內(nèi)存扇區(qū)的密碼,找到要讀取數(shù)據(jù)的塊,再將內(nèi)存中的16進制數(shù)據(jù)每2位或者4位進行美國標準交換信息碼擴展碼轉(zhuǎn)換,從而識別中文內(nèi)容,最后關(guān)閉對內(nèi)存的操作指令,完成整個讀取過程。
【專利摘要】一種基于Android平臺的NFC讀寫方法,首先利用美國標準信息交換代碼表,將寫入的16進制數(shù)據(jù)轉(zhuǎn)為可識別的數(shù)據(jù),方便對寫入數(shù)據(jù)的讀取,以便查看;在寫入數(shù)據(jù)方面,加入了對中文的支持,并消除了對寫入數(shù)據(jù)長度的限制,利用數(shù)組元素復(fù)制方法對數(shù)據(jù)的byte型進行處理,對長度不足16位的補0,長度超過16位了的自動轉(zhuǎn)行并寫入到下一個塊,同時跳過扇區(qū)的尾塊,且可以自動轉(zhuǎn)到下一個扇區(qū),因此可以寫入小于NFC卡片內(nèi)存的任意長度的數(shù)據(jù)。本發(fā)明提供了一種讀取方便,寫入自由度高,對卡片內(nèi)存零破壞的NFC卡片讀取方法。
【IPC分類】G06K17/00
【公開號】CN104915696
【申請?zhí)枴緾N201510390416
【發(fā)明人】張貴軍, 龔偉奇, 陳銘, 王宇凱, 姚俊, 賀智遠, 周曉根
【申請人】浙江工業(yè)大學(xué)
【公開日】2015年9月16日
【申請日】2015年7月1日...