[2014-03-13] back to Nfc.apk mod again( since xposed won't work under KitKat ART mode)

http://forum.xda-developers.com/show...&postcount=404

(nfc mod, still need AnyTag mod)

[2014-02-10, compatiable with AOKP kitkat 4.4.2]

(I've modified this plugin to support tag removal detecting, so you don't need nfc.apk mod any more)

[2013-10-25 updated, Add Intent broadcast to support "Tasker Intent receiver", pk.qwerty12.nfclockscreenoffenabler.TAG_EVENT, Extras: state=discovered/lost, uid=XXXXXXXX(HEX of tag id), Tasker variables: %state, %uid]

[2013-10-24 updated, Add Intent broadcast to support "Tasker Intent receiver", pk.qwerty12.nfclockscreenoffenabler.TAG_DISCOVERED _XXXX, pk.qwerty12.nfclockscreenoffenabler.TAG_LOST_XXXX( where XXXX is the HEX of specified tag id). Don't need AnyTag anymore, with tasker you can receive Intent when tag discovered or tag lost]

[2013-10-22 updated, Add support for LG G2 (D802 - internationnal version), merged with MohammadAG's code]

[2013-10-09 updated, NOW ALSO compatible with android 4.1 and before. The Apk version is still v1.4 ]

[2013-09-20 updated, add tag presence check timeout setting, this can help for battery saving.]

[2013-09-05 updated, modified by MohammadAG, added taglost sound option]

the testing for battery consumption effected by tag presence check timeout setting(GalaxyNexus JB4.3 stock ROM)

timeout stock setting: 125ms

wifi off, put phone on tag all night

begin time: 01:36 battery: 97%

end time : 10:26 battery: 34%

battery consumption per hour: 7.134%



timeout custom setting: 20 seconds

wifi off, put phone on tag all night

begin time: 23:27 battery: 98%

end time : 08:03 battery: 56%

battery consumption per hour: 4.884%



timeout custom setting: 4 seconds

wifi off, put phone on tag all night

begin time: 00:11 battery: 97%

end time : 08:12 battery: 54%

battery consumption per hour: 5.364%





5. still need AnyTag mod version, or you can install new version of ReTag, it supports tag lost message now!!



with AnyTag(mod) +

How to do that

1. Download the mod AnyTag.apk from attachments. Install it.

2. Download the mod Nfc.apk (device dependence) from attachments, copy it to /system/app/Nfc.apk, reboot





download modified anytag.apk: AnyTAG1.2.6-mod.apk

apk mod --------------------Step by Step(Note2, Windows)---------------------------------



1. tools needed

baksmali and smali

apktool (1.5.1)

WinRAR

2. copy /system/framework from phone to PC folder like D:\qlg\Dev\android

ote2(N719)\framework\

3. copy /system/app/Nfc.apk, Nfc.odex to d:\temp\mod\

4. cmd box, cd d:\temp\mod\

5. java -jar D:\tools\android\baksmali1.4.1\baksmali-1.4.1.jar -d D:\qlg\Dev\android

ote2(N719)\framework -x -b Nfc.odex

this will decompile Nfc.odex to d:\temp\mod\out\

6. d:\tools\android\apktool\apktool1.5.1\apktool.bat d -f --frame-path D:\qlg\Dev\android

ote2(N719)\framework Nfc.apk

this will decompile Nfc.apk to d:\temp\mod\Nfc\

7. copy taglost.ogg to d:\temp\mod\Nfc\res\raw\

8. edit d:\temp\mod\Nfc\res\values\public.xml add

<public type="raw" name="taglost" id="0x7f040006" />

9. cd d:\tools\android\apktool\apktool1.5.1\

apktool.bat b d:\temp\mod\Nfc\ d:\temp\mod\Nfc-mod.apk

10. modify smali files in path d:\temp\mod\out\

files need to modify:

NativeNfcManager.smali

NativeNfcTag$PresenceCheckWatchdog.smali

NativeNfcTag.smali

DeviceHost$DeviceHostListener.smali

DeviceHost$TagEndpoint.smali

DeviceHost.smali

NfcDispatcher$DispatchInfo.smali

NfcDispatcher.smali

NfcService$NfcServiceHandler.smali

NfcService.smali

R$raw.smali



you can use BeyondCompare to help you do the modification.

This is the original smali files and modified smali files of N7100 v4.1.2, compare it with your Nfc smali files, and you will know which place need to modify.

note2(N7100)-smali.rar

be aware with lines contain something like "access$xxxx", make sure the number xxx matching your actual number.



11. cd d:\temp\mod

12. java -jar D:\tools\android\baksmali1.4.1\smali-1.4.1.jar -o classes.dex out

this will compile smali files in d:\temp\mod\out , and generate d:\temp\mod\classes.dex

13. rename stock apk, d:\temp\mod\Nfc.apk--> Nfc.apk.zip，open it with WinRAR,

rename d:\temp\mod\Nfc-mod.apk -->Nfc-mod.apk.zip，open it with WinRAR

14. drag resources.arsc and res\raw\taglost.ogg from Nfc-mod.apk.zip into Nfc.apk.zip, drag d:\temp\mod\classes.dex into Nfc.apk.zip, when WinRAR popup the options window, choose the compression mode as Store

15、rename Nfc.apk.zip to Nfc.apk, copy it to your phone /system/app, delete /system/app/Nfc.odex, change Nfc.apk permission rw-r--r--

16、reboot

OK, as Orphee said, we should not abandon old things, maybe they would be useful when it's the time you need them.

Here, I've found another way to mod nfc.apk, we touch less files this time - only 4 files:

NativeNfcTag$PresenceCheckWatchdog.smali

NativeNfcTag.smali

DeviceHost$TagEndpoint.smali

NfcService$NfcServiceHandler.smali

Details : Nfc-taglost-mod-doc.rar

No more hacking, no more mod, with Xposed (you can download XposedInstaller.apk in that thread), you just need to install a plugin :Thanks to rovo89 for his great work - Xposed!and thanks to Neuer_User for his suggestion.The code of the plugin module NFCLockscreenoffEnabler.apk is based on the Xposed mod of NFC lock screen: https://github.com/qwerty12/NFCLockscreenoffEnabler/ , thanks to the author of it.1. install Xposed2. install NFCLockScreenOffEnabler3. Checked NFCLockScreenOffEnabler in Xposed4. set options you want.5. rebootafter did this mod,tasker + secure settings plugin + secure settings helper, you can:1. put your phone on the "Bedside tag", your phone turn to silence mod, take the phone off the tag, your phone auto turn off silence mod2. put your phone on the "CarDock tag", your phone auto unlock, turn to CarHome mode, run some special apps, take the phone off the tag, your phone auto kill some special apps, exit carhome mode, lock screen ...3. Other things you can image....Tasker->profiles->add->Event->System->Intent Received->Action=pk.qwerty12.nfclockscreenoffenabler.TAG_DI SCOVERED_XXXXXXXXwhere XXXXXXXX = HEX string of your tag id, like: 00AABBCCTasker->profiles->add->Event->System->Intent Received->Action=pk.qwerty12.nfclockscreenoffenabler.TAG_LO ST_XXXXXXXXwhere XXXXXXXX = HEX string of your tag id, like: 00AABBCCtasker + secure settings plugin + secure settings helperCreate task, add actions:1. Secure Settings, Screen & Keyboard Lights On 5 seconds2. Wait 60ms3. Secure Settins, Keyguard Enabled4. Wait 100ms5. Secure Settings, Keyguard Disabled/BG6. run apps ....7. do things you want ...8. Secure Settings, Screen & Keyboard Light On 10 Seconds....."Bedside Tag": http://youtu.be/_c9Lo-jwErg galaxy note2(china telecom N719): http://youtu.be/UlbxGoGjysI TouchStone& "Carmode Tag": http://youtu.be/zeJZ_Cy7_mM ES Ftp Tag with PC react: http://www.youtube.com/watch?v=_1oN2vmHwtY 1. mod nfc.apk(mod android source code and rebuild), when tag lost, broadcast intent with action "android.nfc.action.TAG_LOST"2. mod AnyTag NFC Launcher apk, play a trick with TagId, when intent action is "TAG_LOST", Tagid=Tagid + "_TAG_LOST", otherwise, Tagid = Tagid + "_TAG_DISCOVERED"