日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯網營銷解決方案
創(chuàng)新互聯鴻蒙OS教程:鴻蒙OS卡模擬功能

場景介紹

你所需要的網站建設服務,我們均能行業(yè)靠前的水平為你提供.標準是產品質量的保證,主要從事成都網站設計、做網站、企業(yè)網站建設、手機網站制作設計、網頁設計、成都品牌網站建設、網頁制作、做網站、建網站。創(chuàng)新互聯擁有實力堅強的技術研發(fā)團隊及素養(yǎng)的視覺設計專才。

應用或者其他模塊可以通過接口完成以下功能:

  1. 查詢是否支持指定安全單元的卡模擬功能,安全單元包括 HCE(Host Card Emulation)、ESE(Embedded Secure Element)和SIM(Subscriber Identity Module)卡。
  2. 開關卡模擬以及查詢卡模擬狀態(tài),可以打開或關閉指定技術類型的卡模擬。
  3. 獲取 NFC 信息,信息包括當前激活的安全單元、 Hisee 上電狀態(tài)、是否支持 RSSI 查詢等信息。
  4. 根據 NFC 服務的類型獲取刷卡時選擇服務的方式,應用或者其它模塊可以查詢支付(Payment)類型和非支付(Other)類型業(yè)務選擇服務的方式。
  5. 動態(tài)設置和注銷前臺優(yōu)先應用。
  6. NFC 應用的 AID 相關操作,包括注冊和刪除應用的 AID、查詢應用是否是指定 AID 的默認應用、獲取應用的 AID 等。
  7. 定義 Host 和 OffHost 服務的抽象類,三方應用通過繼承抽象類來實現 NFC 卡模擬功能。

接口說明

類名 接口名 功能描述
CardEmulation getInstance(NfcController controller) 創(chuàng)建一個卡模擬類的實例。
isSupported(int feature) 查詢是否支持卡模擬功能。
setListenMode(int mode) 設置卡模擬模式。
isListenModeEnabled() 查詢卡模擬功能是否打開。
getNfcInfo(String key) 獲取 NFC 的信息。
getSelectionType(String category) 根據 NFC 服務的類型獲取刷卡時選擇服務的方式。
registerForegroundPreferred(Ability appAbility, ElementName appName) 動態(tài)設置前臺優(yōu)先應用。
unregisterForegroundPreferred(Ability appAbility) 取消設置前臺優(yōu)先應用。
isDefaultForAid(ElementName appName, String aid) 判斷應用是否是指定 AID 的默認處理應用。
registerAids(ElementName appName, String type, List aids) 給應用注冊指定類型的AID。
removeAids(ElementName appName, String type) 刪除應用的指定類型的 AID。
getAids(ElementName appName, String type) 獲取應用中指定類型的 AID 列表。
HostService sendResponse(byte[] response) 發(fā)送響應的數據到對端設備。
handleRemoteCommand(byte[] cmd, IntentParams params) 處理對端設備發(fā)送的命令。
disabledCallback(int errCode) 連接異常的回調。
OffHostService onConnect(Intent intent) 連接服務并獲取遠程服務對象。

查詢是否支持卡模擬功能

  1. 調用 NfcController 類的 getInstance(Context context) 接口,獲取 NfcController 實例。
  1. 調用 CardEmulation 類的 getInstance(NfcController controller) 接口,獲取 CardEmulation 實例,去管理本機卡模擬模塊操作。
  1. 調用 isSupported(int feature) 接口去查詢是否 HCE、UICC、ESE 卡模擬。
   // 獲取NFC控制對象
   NfcController nfcController = NfcController.getInstance(context);
   // 獲取卡模擬控制對象
   CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
   // 查詢是否支持HCE、UICC、ESE卡模擬,返回值表示是否支持對應安全單元的卡模擬
   boolean isSupportedHce = cardEmulation.isSupported(CardEmulation.FEATURE_HCE);
   boolean isSupportedUicc = cardEmulation.isSupported(CardEmulation.FEATURE_UICC);
   boolean isSupportedEse = cardEmulation.isSupported(CardEmulation.FEATURE_ESE);

開關卡模擬及查詢卡模擬狀態(tài)

  1. 調用 NfcController 類的 getInstance(Context context) 接口,獲取 NfcController 實例。
  1. 調用 CardEmulation 類的 getInstance(NfcController controller) 接口,獲取 CardEmulation 實例,去管理本機卡模擬模塊操作。
  1. 調用 setListenMode(int mode) 接口去打開或者關閉卡模擬。
  1. 調用 isListenModeEnabled() 接口去查詢卡模擬是否打開。
   // 獲取 NFC 控制對象
   NfcController nfcController = NfcController.getInstance(context);
   // 獲取卡模擬控制對象
   CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
   // 打開卡模擬
   cardEmulation.setListenMode(CardEmulation.ENABLE_MODE_ALL);
   // 調用查詢卡模擬開關狀態(tài)的接口,返回值為卡模擬是否是打開的狀態(tài)
   boolean isEnabled = cardEmulation.isListenModeEnabled(); // true
   // 關閉卡模擬
   cardEmulation.setListenMode(CardEmulation.DISABLE_MODE_A_B);
   // 調用查詢卡模擬開關狀態(tài)的接口,返回值為卡模擬是否是打開的狀態(tài)
   isEnabled = cardEmulation.isListenModeEnabled(); // false

獲取 NFC 信息

  1. 調用 NfcController 類的 getInstance(Context context) 接口,獲取 NfcController 實例。
  1. 調用 CardEmulation 類的getInstance(NfcController controller)接口,獲取 CardEmulation 實例,去管理本機卡模擬模塊操作。
  1. 調用 getNfcInfo(String key)接口去獲取 NFC 信息。
   // 獲取NFC控制對象
   NfcController nfcController = NfcController.getInstance(context);
   // 獲取卡模擬控制對象
   CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
   // 查詢本機當前使能的安全單元類型
   String seType = cardEmulation.getNfcInfo(CardEmulation.KEY_ENABLED_SE_TYPE); // ENABLED_SE_TYPE_ESE
   // 查詢Hisee上電狀態(tài)
   String hiseeState = cardEmulation.getNfcInfo(CardEmulation.KEY_HISEE_READY);
   // 查詢是否支持rssi的查詢
   String rssiAbility = cardEmulation.getNfcInfo(CardEmulation.KEY_RSSI_SUPPORTED);

根據NFC服務的類型獲取刷卡時選擇服務的方式

  1. 調用 NfcController 類的 getInstance(Context context) 接口,獲取 NfcController 實例。
  1. 調用 CardEmulation 類的 getInstance(NfcController controller) 接口,獲取 CardEmulation 實例,去管理本機卡模擬模塊操作。
  1. 調用 getSelectionType(Sring category) 接口去獲取選擇服務的方式。
   // 獲取NFC控制對象
   NfcController nfcController = NfcController.getInstance(context);
   // 獲取卡模擬控制對象
   CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
   // 獲取選擇服務的方式
   int result = cardEmulation.getSelectionType(CardEmulation.CATEGORY_PAYMENT); // SELECTION_TYPE_PREFER_DEFAULT
   result = cardEmulation.getSelectionType(CardEmulation.CATEGORY_OTHER); // SELECTION_TYPE_ASK_IF_CONFLICT

動態(tài)設置和注銷前臺優(yōu)先應用

  1. 調用 NfcController 類的 getInstance(Context context)接口,獲取 NfcController 實例。
  1. 調用 CardEmulation 類的 getInstance(NfcController controller) 接口,獲取 CardEmulation 實例,去管理本機卡模擬模塊操作。
  1. 調用 registerForegroundPreferred(Ability appAbility, ElementName appName)接口去動態(tài)設置前臺優(yōu)先應用。
  1. 調用 unregisterForegroundPreferred(Ability appAbility)接口去取消設置前臺優(yōu)先應用。
   // 獲取NFC控制對象
   NfcController nfcController = NfcController.getInstance(context);
   // 獲取卡模擬控制對象
   CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
   // 動態(tài)設置前臺優(yōu)先應用
   cardEmulation.registerForegroundPreferred(new Ability(), new ElementName());
   // 注銷前臺優(yōu)先應用
   cardEmulation.unregisterForegroundPreferred(new Ability());

NFC 應用的 AID 相關操作

  1. 調用 NfcController 類的 getInstance(Context context) 接口,獲取 NfcController 實例。
  1. 調用 CardEmulation 類的 getInstance(NfcController controller)接口,獲取 CardEmulation 實例,去管理本機卡模擬模塊操作。
  1. 調用 registerAids(ElementName appName, String type, List aids) 接口去給應用注冊指定類型的 AID。
  1. 調用 removeAids(ElementName appName, String type) 接口去刪除應用的指定類型的 AID。
  1. 調用 isDefaultForAid(ElementName appName, String aid) 接口去判斷應用是否是指定 AID 的默認處理應用。
  1. 調用 getAids(ElementName appName, String type) 接口去獲取應用中指定類型的 AID 列表。
   // 獲取NFC控制對象
   NfcController nfcController = NfcController.getInstance(context);
   // 獲取卡模擬控制對象
   CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
   // 給應用注冊指定類型的AID
   List aids = new ArrayList();
   aids.add(0, "A0028321901280");
   aids.add(1, "A0028321901281");
   try {    cardEmulation.registerAids(new ElementName(), CardEmulation.CATEGORY_PAYMENT, aids);
   } catch (IllegalArgumentException e) {
       HiLog.error(LABEL, "IllegalArgumentException when registerAids");
   }
   // 刪除應用的指定類型的AID
   cardEmulation.removeAids(new ElementName(), CardEmulation.CATEGORY_PAYMENT);
   cardEmulation.removeAids(new ElementName(), CardEmulation.CATEGORY_OTHER);
   // 判斷應用是否是指定AID的默認處理應用
   String aid = "A0028321901280";
   cardEmulation.isDefaultForAid(new ElementName(), aid);
   // 獲取應用中指定類型的AID列表
   try {
       cardEmulation.getAids(new ElementName(), CardEmulation.CATEGORY_PAYMENT);
   } catch (NullPointerException e) {
       HiLog.error(LABEL, "NullPointerException when getAids");
   } catch (IllegalArgumentException e) {
       HiLog.error(LABEL, "IllegalArgumentException when getAids");
   }

Host服務的抽象類

  1. 三方應用的服務繼承 HostService,實現 HCE 卡模擬功能。
  1. 三方應用自定義實現抽象方法handleRemoteCommand(byte[] cmd, IntentParams params)和disabledCallback()。
  1. 三方應用自定義功能。
   // 三方HCE應用的服務繼承HostService,實現HCE卡模擬功能
   public class AppService extends HostService {
       @Override
       public byte[] handleRemoteCommand(byte[] cmd, IntentParams params) {
       // 三方應用自定義接口實現。
       }

       
       @Override
       public void disabledCallback(int errCode) {
       // 三方應用自定義接口實現。
       }

    
       // 三方應用自定義功能
   }

新聞標題:創(chuàng)新互聯鴻蒙OS教程:鴻蒙OS卡模擬功能
網頁URL:http://www.dlmjj.cn/article/dpedcgo.html