diff options
author | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2013-12-06 02:24:22 +0000 |
---|---|---|
committer | Ricardo Cerqueira <cyanogenmod@cerqueira.org> | 2013-12-06 02:24:22 +0000 |
commit | c8a2a6b1ca703d0c6078b7f57663781245b787e7 (patch) | |
tree | dd9c77878036c3a39724ef5a7e65305104b5fff1 | |
parent | 95dffb3f27d1dd6991ac2c1422764ae82f33f5c9 (diff) | |
parent | 8d9375ec6e24546fe7b5423e436b7bbe48862f57 (diff) | |
download | android_packages_apps_Nfc-c8a2a6b1ca703d0c6078b7f57663781245b787e7.tar.gz android_packages_apps_Nfc-c8a2a6b1ca703d0c6078b7f57663781245b787e7.tar.bz2 android_packages_apps_Nfc-c8a2a6b1ca703d0c6078b7f57663781245b787e7.zip |
Merge tag 'android-4.4.1_r1' into HEAD
Android 4.4.1 Release 1
-rwxr-xr-x | nci/jni/NativeNfcManager.cpp | 29 | ||||
-rw-r--r-- | res/values-ar/strings.xml | 8 | ||||
-rw-r--r-- | res/values-fa/strings.xml | 8 | ||||
-rw-r--r-- | res/values-fr/strings.xml | 2 | ||||
-rw-r--r-- | res/values-iw/strings.xml | 12 | ||||
-rw-r--r-- | res/values-sw/strings.xml | 6 | ||||
-rw-r--r-- | res/values-zh-rCN/strings.xml | 14 | ||||
-rw-r--r-- | src/com/android/nfc/cardemulation/HostEmulationManager.java | 15 | ||||
-rw-r--r-- | src/com/android/nfc/cardemulation/RegisteredServicesCache.java | 8 |
9 files changed, 77 insertions, 25 deletions
diff --git a/nci/jni/NativeNfcManager.cpp b/nci/jni/NativeNfcManager.cpp index 8d27c3bc..0c7ba8bb 100755 --- a/nci/jni/NativeNfcManager.cpp +++ b/nci/jni/NativeNfcManager.cpp @@ -150,6 +150,8 @@ static bool isListenMode(tNFA_ACTIVATED& activated); static UINT16 sCurrentConfigLen; static UINT8 sConfig[256]; +static UINT8 sLongGuardTime[] = { 0x00, 0x20 }; +static UINT8 sDefaultGuardTime[] = { 0x00, 0x11 }; ///////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////// @@ -1042,6 +1044,31 @@ TheEnd: ALOGD ("%s: exit", __FUNCTION__); } +void enableDisableLongGuardTime (bool enable) +{ + // TODO + // This is basically a work-around for an issue + // in BCM20791B5: if a reader is configured as follows + // 1) Only polls for NFC-A + // 2) Cuts field between polls + // 3) Has a short guard time (~5ms) + // the BCM20791B5 doesn't wake up when such a reader + // is polling it. Unfortunately the default reader + // mode configuration on Android matches those + // criteria. To avoid the issue, increase the guard + // time when in reader mode. + // + // Proper fix is firmware patch for B5 controllers. + SyncEventGuard guard(sNfaSetConfigEvent); + tNFA_STATUS stat = NFA_SetConfig(NCI_PARAM_ID_T1T_RDR_ONLY, 2, + enable ? sLongGuardTime : sDefaultGuardTime); + if (stat == NFA_STATUS_OK) + sNfaSetConfigEvent.wait (); + else + ALOGE("%s: Could not configure longer guard time", __FUNCTION__); + return; +} + void enableDisableLptd (bool enable) { // This method is *NOT* thread-safe. Right now @@ -1825,6 +1852,7 @@ static void nfcManager_doEnableReaderMode (JNIEnv*, jobject, jint technologies) tech_mask |= NFA_TECHNOLOGY_MASK_KOVIO; enableDisableLptd(false); + enableDisableLongGuardTime(true); NFA_SetRfDiscoveryDuration(READER_MODE_DISCOVERY_DURATION); restartPollingWithTechMask(tech_mask); } @@ -1840,6 +1868,7 @@ static void nfcManager_doDisableReaderMode (JNIEnv* e, jobject o) NFA_EnableListening(); enableDisableLptd(true); + enableDisableLongGuardTime(false); NFA_SetRfDiscoveryDuration(nat->discovery_duration); restartPollingWithTechMask(nat->tech_mask); } diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 45891990..6b3a48ac 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name" msgid="78565911793142902">"خدمة NFC"</string> + <string name="app_name" msgid="78565911793142902">"خدمة NFC"</string> <string name="nfcUserLabel" msgid="7708535817084357357">"NFC"</string> - <string name="inbound_me_profile_title" msgid="6146013785225412693">"تم استلام جهة اتصال عبر NFC"</string> + <string name="inbound_me_profile_title" msgid="6146013785225412693">"تم استلام جهة اتصال عبر NFC"</string> <string name="inbound_me_profile_text" msgid="2342757196108092923">"المس لإضافة هذا الشخص كجهة اتصال."</string> - <string name="outbound_me_profile_title" msgid="2523625031572784769">"اكتمل تفاعل NFC"</string> + <string name="outbound_me_profile_title" msgid="2523625031572784769">"اكتمل تفاعل NFC"</string> <string name="outbound_me_profile_text" msgid="5594998841143667989">"المس لمنح هذا الشخص معلومات اتصالك."</string> - <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"تم تمكين NFC."</string> + <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"تم تمكين NFC."</string> <string name="touch" msgid="4727218133711188355">"المس لتبادل البيانات"</string> <string name="beam_progress" msgid="7453634884807323920">"بيانات واردة..."</string> <string name="beam_outgoing" msgid="4679536649779123495">"إرسال لاسلكي..."</string> diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index c23b8e9f..2dd62ca6 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name" msgid="78565911793142902">"سرویس Nfc"</string> + <string name="app_name" msgid="78565911793142902">"سرویس Nfc"</string> <string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string> - <string name="inbound_me_profile_title" msgid="6146013785225412693">"مخاطب از طریق NFC دریافت شد"</string> + <string name="inbound_me_profile_title" msgid="6146013785225412693">"مخاطب از طریق NFC دریافت شد"</string> <string name="inbound_me_profile_text" msgid="2342757196108092923">"برای افزودن این فرد بهعنوان یک مخاطب، لمس کنید."</string> - <string name="outbound_me_profile_title" msgid="2523625031572784769">"تعامل NFC کامل شد"</string> + <string name="outbound_me_profile_title" msgid="2523625031572784769">"تعامل NFC کامل شد"</string> <string name="outbound_me_profile_text" msgid="5594998841143667989">"لمس کنید تا اطلاعات تماس خود را به این فرد بدهید."</string> - <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"با NFC فعال شده."</string> + <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"با NFC فعال شده."</string> <string name="touch" msgid="4727218133711188355">"برای پخش، لمس کنید"</string> <string name="beam_progress" msgid="7453634884807323920">"در حال دریافت پرتو..."</string> <string name="beam_outgoing" msgid="4679536649779123495">"پرتو…"</string> diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 8004df0a..8de8ec9b 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -35,5 +35,5 @@ <string name="could_not_use_app" msgid="8137587876138569083">"Impossible d\'utiliser <xliff:g id="APP">%1$s</xliff:g>."</string> <string name="pay_with" msgid="5531545488795798945">"Payer avec"</string> <string name="complete_with" msgid="6797459104103012992">"Effectuer avec"</string> - <string name="default_pay_app_removed" msgid="4108250545457437360">"Le service par défaut pour la fonctionnalité tap-and-pay a été supprimé. Voulez-vous en sélectionner un autre ?"</string> + <string name="default_pay_app_removed" msgid="4108250545457437360">"Le service par défaut de paiement sans contact a été supprimé. Voulez-vous en sélectionner un autre ?"</string> </resources> diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 7c2f2377..d3ae9967 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -1,13 +1,13 @@ <?xml version="1.0" encoding="UTF-8"?> <resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> - <string name="app_name" msgid="78565911793142902">"שירות Nfc"</string> + <string name="app_name" msgid="78565911793142902">"שירות Nfc"</string> <string name="nfcUserLabel" msgid="7708535817084357357">"Nfc"</string> - <string name="inbound_me_profile_title" msgid="6146013785225412693">"איש הקשר התקבל באמצעות NFC"</string> + <string name="inbound_me_profile_title" msgid="6146013785225412693">"איש הקשר התקבל באמצעות NFC"</string> <string name="inbound_me_profile_text" msgid="2342757196108092923">"גע כדי להוסיף משתמש זה כאיש קשר"</string> - <string name="outbound_me_profile_title" msgid="2523625031572784769">"האינטראקציה עם NFC הושלמה"</string> + <string name="outbound_me_profile_title" msgid="2523625031572784769">"האינטראקציה עם NFC הושלמה"</string> <string name="outbound_me_profile_text" msgid="5594998841143667989">"גע כדי לתת למשתמש זה את פרטי הקשר שלך"</string> - <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC מופעל."</string> + <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC מופעל."</string> <string name="touch" msgid="4727218133711188355">"גע כדי להקרין"</string> <string name="beam_progress" msgid="7453634884807323920">"קרן נכנסת..."</string> <string name="beam_outgoing" msgid="4679536649779123495">"מעביר תוכן..."</string> @@ -25,8 +25,8 @@ <string name="disconnected_headset" msgid="4066109452701733916">"מנותק"</string> <string name="pairing_headset" msgid="6443461444755646137">"התאמה"</string> <string name="pairing_headset_failed" msgid="6509629663883514688">"לא ניתן לבצע התאמה"</string> - <string name="failed_to_enable_bt" msgid="7229153323594758077">"לא ניתן להפעיל Bluetooth"</string> - <string name="confirm_pairing" msgid="4112568077038265363">"האם אתה בטוח שאתה רוצה להתאים את מכשיר ה-Bluetooth <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string> + <string name="failed_to_enable_bt" msgid="7229153323594758077">"לא ניתן להפעיל Bluetooth"</string> + <string name="confirm_pairing" msgid="4112568077038265363">"האם אתה בטוח שאתה רוצה להתאים את מכשיר ה-Bluetooth <xliff:g id="DEVICE_NAME">%1$s</xliff:g>?"</string> <string name="pair_yes" msgid="3525614878559994448">"כן"</string> <string name="pair_no" msgid="5022308368904055020">"לא"</string> <string name="tap_again_to_pay" msgid="5754988005412859897">"הקש שוב כדי לשלם באמצעות <xliff:g id="APP">%1$s</xliff:g>"</string> diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 89c29d7d..fc17a198 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -8,11 +8,11 @@ <string name="outbound_me_profile_title" msgid="2523625031572784769">"NFC imemaliza kushirikiana"</string> <string name="outbound_me_profile_text" msgid="5594998841143667989">"Gusa ili kumpa mtu huyu maelezo yako ya mawasiliano."</string> <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC imewezeshwa."</string> - <string name="touch" msgid="4727218133711188355">"Gusa kwa boriti"</string> + <string name="touch" msgid="4727218133711188355">"Gusa ili kusambaza"</string> <string name="beam_progress" msgid="7453634884807323920">"Boriti zinazoingia..."</string> <string name="beam_outgoing" msgid="4679536649779123495">"Inasambaza..."</string> - <string name="beam_complete" msgid="477026736424637435">"Boriti umekamilika"</string> - <string name="beam_failed" msgid="5116241718189888630">"Boriti haikukamilisha"</string> + <string name="beam_complete" msgid="477026736424637435">"Kusambaza kumekamilika"</string> + <string name="beam_failed" msgid="5116241718189888630">"Usambazaji haukukamilika"</string> <string name="beam_canceled" msgid="5425192751826544741">"Boriti imeghairiwa"</string> <string name="cancel" msgid="61873902552555096">"Ghairi"</string> <string name="beam_touch_to_view" msgid="7853129156831642630">"Gusa ili utazame"</string> diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 6fae4f8d..2397e87c 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -8,15 +8,15 @@ <string name="outbound_me_profile_title" msgid="2523625031572784769">"NFC 互动完成"</string> <string name="outbound_me_profile_text" msgid="5594998841143667989">"接触可向此人发送您的联系人信息。"</string> <string name="accessibility_nfc_enabled" msgid="7796246979948787735">"NFC 已启用。"</string> - <string name="touch" msgid="4727218133711188355">"触摸即可发送"</string> - <string name="beam_progress" msgid="7453634884807323920">"正在接收 Beam 内容..."</string> - <string name="beam_outgoing" msgid="4679536649779123495">"正在用 Beam 传送信息..."</string> - <string name="beam_complete" msgid="477026736424637435">"Beam 发送完毕"</string> - <string name="beam_failed" msgid="5116241718189888630">"Beam 发送未完成"</string> - <string name="beam_canceled" msgid="5425192751826544741">"Beam 发送已取消"</string> + <string name="touch" msgid="4727218133711188355">"触摸即可传输"</string> + <string name="beam_progress" msgid="7453634884807323920">"正在接收传输内容..."</string> + <string name="beam_outgoing" msgid="4679536649779123495">"正在传输信息..."</string> + <string name="beam_complete" msgid="477026736424637435">"传输完毕"</string> + <string name="beam_failed" msgid="5116241718189888630">"传输未完成"</string> + <string name="beam_canceled" msgid="5425192751826544741">"传输已取消"</string> <string name="cancel" msgid="61873902552555096">"取消"</string> <string name="beam_touch_to_view" msgid="7853129156831642630">"触摸即可查看"</string> - <string name="beam_handover_not_supported" msgid="4083165921751489015">"接收者的设备不支持通过 Beam 传输较大的文件。"</string> + <string name="beam_handover_not_supported" msgid="4083165921751489015">"接收者的设备不支持传输较大的文件。"</string> <string name="beam_try_again" msgid="3364677301009783455">"再次让两台设备接触"</string> <string name="connecting_headset" msgid="3929250919225573008">"正在连接"</string> <string name="connected_headset" msgid="4047751837023241955">"已连接"</string> diff --git a/src/com/android/nfc/cardemulation/HostEmulationManager.java b/src/com/android/nfc/cardemulation/HostEmulationManager.java index 0dc75b59..a4e7f757 100644 --- a/src/com/android/nfc/cardemulation/HostEmulationManager.java +++ b/src/com/android/nfc/cardemulation/HostEmulationManager.java @@ -60,6 +60,9 @@ public class HostEmulationManager { static final byte INSTR_SELECT = (byte)0xA4; + static final String ANDROID_HCE_AID = "A000000476416E64726F6964484345"; + static final byte[] ANDROID_HCE_RESPONSE = {0x14, (byte)0x81, 0x00, 0x00, (byte)0x90, 0x00}; + static final byte[] AID_NOT_FOUND = {0x6A, (byte)0x82}; static final byte[] UNKNOWN_ERROR = {0x6F, 0x00}; @@ -161,6 +164,10 @@ public class HostEmulationManager { return; } if (selectAid != null) { + if (selectAid.equals(ANDROID_HCE_AID)) { + NfcService.getInstance().sendData(ANDROID_HCE_RESPONSE); + return; + } AidResolveInfo resolveInfo = mAidCache.resolveAidPrefix(selectAid); if (resolveInfo == null || resolveInfo.services.size() == 0) { // Tell the remote we don't handle this AID @@ -179,6 +186,14 @@ public class HostEmulationManager { launchTapAgain(resolveInfo.defaultService, category); return; } + // In no circumstance should this be an OffHostService - + // we should never get this AID on the host in the first place + if (!resolveInfo.defaultService.isOnHost()) { + Log.e(TAG, "AID that was meant to go off-host was routed to host." + + " Check routing table configuration."); + NfcService.getInstance().sendData(AID_NOT_FOUND); + return; + } resolvedService = resolveInfo.defaultService.getComponent(); } else if (mActiveServiceName != null) { for (ApduServiceInfo service : resolveInfo.services) { diff --git a/src/com/android/nfc/cardemulation/RegisteredServicesCache.java b/src/com/android/nfc/cardemulation/RegisteredServicesCache.java index 2e037d2c..0cfc0e0b 100644 --- a/src/com/android/nfc/cardemulation/RegisteredServicesCache.java +++ b/src/com/android/nfc/cardemulation/RegisteredServicesCache.java @@ -207,6 +207,14 @@ public class RegisteredServicesCache { boolean onHost = !resolvedOffHostServices.contains(resolvedService); ServiceInfo si = resolvedService.serviceInfo; ComponentName componentName = new ComponentName(si.packageName, si.name); + // Check if the package holds the NFC permission + if (pm.checkPermission(android.Manifest.permission.NFC, si.packageName) != + PackageManager.PERMISSION_GRANTED) { + Log.e(TAG, "Skipping APDU service " + componentName + + ": it does not require the permission " + + android.Manifest.permission.NFC); + continue; + } if (!android.Manifest.permission.BIND_NFC_SERVICE.equals( si.permission)) { Log.e(TAG, "Skipping APDU service " + componentName + |