W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
應用或者其他模塊可以通過接口完成以下功能:
類名 | 接口名 | 功能描述 |
---|---|---|
CardEmulation | getInstance(NfcController controller) | 創(chuàng)建一個卡模擬類的實例。 |
isSupported(int feature) | 查詢是否支持卡模擬功能。 | |
setListenMode(int mode) | 設置卡模擬模式。 | |
isListenModeEnabled() | 查詢卡模擬功能是否打開。 | |
getNfcInfo(String key) | 獲取 NFC 的信息。 | |
getSelectionType(String category) | 根據(jù) 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<String> aids) | 給應用注冊指定類型的AID。 | |
removeAids(ElementName appName, String type) | 刪除應用的指定類型的 AID。 | |
getAids(ElementName appName, String type) | 獲取應用中指定類型的 AID 列表。 | |
HostService | sendResponse(byte[] response) | 發(fā)送響應的數(shù)據(jù)到對端設備。 |
handleRemoteCommand(byte[] cmd, IntentParams params) | 處理對端設備發(fā)送的命令。 | |
disabledCallback(int errCode) | 連接異常的回調(diào)。 | |
OffHostService | onConnect(Intent intent) | 連接服務并獲取遠程服務對象。 |
// 獲取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);
// 獲取 NFC 控制對象
NfcController nfcController = NfcController.getInstance(context);
// 獲取卡模擬控制對象
CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
// 打開卡模擬
cardEmulation.setListenMode(CardEmulation.ENABLE_MODE_ALL);
// 調(diào)用查詢卡模擬開關狀態(tài)的接口,返回值為卡模擬是否是打開的狀態(tài)
boolean isEnabled = cardEmulation.isListenModeEnabled(); // true
// 關閉卡模擬
cardEmulation.setListenMode(CardEmulation.DISABLE_MODE_A_B);
// 調(diào)用查詢卡模擬開關狀態(tài)的接口,返回值為卡模擬是否是打開的狀態(tài)
isEnabled = cardEmulation.isListenModeEnabled(); // false
// 獲取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控制對象
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
// 獲取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控制對象
NfcController nfcController = NfcController.getInstance(context);
// 獲取卡模擬控制對象
CardEmulation cardEmulation = CardEmulation.getInstance(nfcController);
// 給應用注冊指定類型的AID
List<String> aids = new ArrayList<String>();
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");
}
// 三方HCE應用的服務繼承HostService,實現(xiàn)HCE卡模擬功能
public class AppService extends HostService {
@Override
public byte[] handleRemoteCommand(byte[] cmd, IntentParams params) {
// 三方應用自定義接口實現(xiàn)。
}
@Override
public void disabledCallback(int errCode) {
// 三方應用自定義接口實現(xiàn)。
}
// 三方應用自定義功能
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: