From ae026537cba3f88dc39ed5363501ec39aa621079 Mon Sep 17 00:00:00 2001 From: Kevin Griffin Date: Wed, 7 Sep 2011 10:50:02 -0400 Subject: [PATCH 1/5] fix to work with NFCPlugin 0.1.5 --- assets/www/index.html | 2 +- assets/www/main.js | 8 +- assets/www/phonegap-1.0.0.js | 2 +- ...gap-nfc-0.1.3.js => phonegap-nfc-0.1.5.js} | 86 +++++++++++++----- lib/phonegap-nfc-0.1.3.jar | Bin 12435 -> 0 bytes lib/phonegap-nfc-0.1.5.jar | Bin 0 -> 12869 bytes res/xml/plugins.xml | 2 +- 7 files changed, 71 insertions(+), 29 deletions(-) rename assets/www/{phonegap-nfc-0.1.3.js => phonegap-nfc-0.1.5.js} (63%) delete mode 100644 lib/phonegap-nfc-0.1.3.jar create mode 100644 lib/phonegap-nfc-0.1.5.jar diff --git a/assets/www/index.html b/assets/www/index.html index 2de9bac..fd22904 100644 --- a/assets/www/index.html +++ b/assets/www/index.html @@ -6,7 +6,7 @@ NFC Reader Demo - + diff --git a/assets/www/main.js b/assets/www/main.js index 76492b4..5ca95fd 100644 --- a/assets/www/main.js +++ b/assets/www/main.js @@ -2,21 +2,21 @@ var tagMimeType = "text/pg"; function template(record) { - var recordType = Ndef.bytesToString(record.type), + var recordType = navigator.nfc.util.bytesToString(record.type), payload; if (recordType === "T") { var langCodeLength = record.payload[0], text = record.payload.slice((1 + langCodeLength), record.payload.length); - payload = Ndef.bytesToString(text); + payload = navigator.nfc.util.bytesToString(text); } else if (recordType === "U") { - var url = Ndef.bytesToString(record.payload); + var url = navigator.nfc.util.bytesToString(record.payload); payload = "" + url + "<\/a>"; } else { - payload = Ndef.bytesToString(record.payload); + payload = navigator.nfc.util.bytesToString(record.payload); } diff --git a/assets/www/phonegap-1.0.0.js b/assets/www/phonegap-1.0.0.js index 751c52c..47b8a2e 100644 --- a/assets/www/phonegap-1.0.0.js +++ b/assets/www/phonegap-1.0.0.js @@ -565,7 +565,7 @@ PhoneGap.exec = function(success, fail, service, action, args) { } var r = prompt(PhoneGap.stringify(args), "gap:"+PhoneGap.stringify([service, action, callbackId, true])); - + console.log("gap:"+PhoneGap.stringify([service, action, callbackId, true])); // If a result was returned if (r.length > 0) { eval("var v="+r+";"); diff --git a/assets/www/phonegap-nfc-0.1.3.js b/assets/www/phonegap-nfc-0.1.5.js similarity index 63% rename from assets/www/phonegap-nfc-0.1.3.js rename to assets/www/phonegap-nfc-0.1.5.js index 35b295b..0de9fc7 100644 --- a/assets/www/phonegap-nfc-0.1.3.js +++ b/assets/www/phonegap-nfc-0.1.5.js @@ -4,12 +4,12 @@ PhoneGap.addConstructor( function () { PhoneGap.exec( function () { - console.log("Initialized the NdefPlugin"); + console.log("Initialized the NFCPlugin"); }, function (reason) { - alert("Failed to initialize the NdefPlugin " + reason); + alert("Failed to initialize the NFCPlugin " + reason); }, - "NdefPlugin", "init", [] + "NFCPlugin", "init", [] ) } ); @@ -68,10 +68,10 @@ var Ndef = { if (!id) { id = []; } payload.push(languageCode.length); - Ndef.concatArray(payload, Ndef.stringToBytes(languageCode)); - Ndef.concatArray(payload, Ndef.stringToBytes(text)); + navigator.nfc.util.concatArray(payload, navigator.nfc.util.stringToBytes(languageCode)); + navigator.nfc.util.concatArray(payload, navigator.nfc.util.stringToBytes(text)); - return Ndef.record(Ndef.TNF_WELL_KNOWN, Ndef.RTD_TEXT, id, payload); + return NFC.record(Ndef.TNF_WELL_KNOWN, Ndef.RTD_TEXT, id, payload); }, /** @@ -82,7 +82,7 @@ var Ndef = { */ uriRecord: function (text, id) { if (!id) { id = []; } - return Ndef.record(Ndef.TNF_ABSOLUTE_URI, Ndef.RTD_URI, id, Ndef.stringToBytes(text)); + return Ndef.record(Ndef.TNF_ABSOLUTE_URI, Ndef.RTD_URI, id, navigator.nfc.util.stringToBytes(text)); }, /** @@ -94,16 +94,18 @@ var Ndef = { */ mimeMediaRecord: function (mimeType, payload, id) { if (!id) { id = []; } - return Ndef.record(Ndef.TNF_MIME_MEDIA, Ndef.stringToBytes(mimeType), id, payload); - }, - + return Ndef.record(Ndef.TNF_MIME_MEDIA, navigator.nfc.util.stringToBytes(mimeType), id, payload); + } +}; + +var Util = { concatArray: function (a1, a2) { // this isn't built in? for (var i = 0; i < a2.length; i++) { a1.push(a2[i]); } return a1; }, - + bytesToString: function (bytes) { var bytesAsString = ""; for (var i = 0; i < bytes.length; i++) { @@ -111,17 +113,17 @@ var Ndef = { } return bytesAsString; }, - + // http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string#1242596 stringToBytes: function ( str ) { var ch, st, re = []; for (var i = 0; i < str.length; i++ ) { - ch = str.charCodeAt(i); // get char + ch = str.charCodeAt(i); // get char st = []; // set up "stack" do { st.push( ch & 0xFF ); // push byte to stack ch = ch >> 8; // shift value down by 1 byte - } + } while ( ch ); // add stack contents to result // done because chars have "wrong" endianness @@ -130,40 +132,80 @@ var Ndef = { // return an array of bytes return re; } - }; navigator.nfc = { + addTagListener: function (callback, win, fail) { + document.addEventListener("tag", callback, false); + PhoneGap.exec(win, fail, "NFCPlugin", "registerTag", []); + }, + addMimeTypeListener: function (mimeType, callback, win, fail) { document.addEventListener("ndef-mime", callback, false); - PhoneGap.exec(win, fail, "NdefPlugin", "registerMimeType", [mimeType]); + PhoneGap.exec(win, fail, "NFCPlugin", "registerMimeType", [mimeType]); }, addNdefListener: function (callback, win, fail) { document.addEventListener("ndef", callback, false); - PhoneGap.exec(win, fail, "NdefPlugin", "registerNdef", []); + PhoneGap.exec(win, fail, "NFCPlugin", "registerNdef", []); }, addNdefFormatableListener: function (callback, win, fail) { document.addEventListener("ndef-formatable", callback, false); - PhoneGap.exec(win, fail, "NdefPlugin", "registerNdefFormatable", []); + PhoneGap.exec(win, fail, "NFCPlugin", "registerNdefFormatable", []); }, writeTag: function (ndefMessage, win, fail) { - PhoneGap.exec(win, fail, "NdefPlugin", "writeTag", [ndefMessage]); + PhoneGap.exec(win, fail, "NFCPlugin", "writeTag", [ndefMessage]); }, shareTag: function (ndefMessage, win, fail) { - PhoneGap.exec(win, fail, "NdefPlugin", "shareTag", [ndefMessage]); + PhoneGap.exec(win, fail, "NFCPlugin", "shareTag", [ndefMessage]); }, unshareTag: function (win, fail) { - PhoneGap.exec(win, fail, "NdefPlugin", "unshareTag", []); + PhoneGap.exec(win, fail, "NFCPlugin", "unshareTag", []); }, eraseTag: function (win, fail) { - PhoneGap.exec(win, fail, "NdefPlugin", "writeTag", [[]]); + PhoneGap.exec(win, fail, "NFCPlugin", "writeTag", [[]]); } }; + +navigator.nfc.util = { + concatArray: function (a1, a2) { // this isn't built in? + for (var i = 0; i < a2.length; i++) { + a1.push(a2[i]); + } + return a1; + }, + + bytesToString: function (bytes) { + var bytesAsString = ""; + for (var i = 0; i < bytes.length; i++) { + bytesAsString += String.fromCharCode(bytes[i]); + } + return bytesAsString; + }, + + // http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string#1242596 + stringToBytes: function ( str ) { + var ch, st, re = []; + for (var i = 0; i < str.length; i++ ) { + ch = str.charCodeAt(i); // get char + st = []; // set up "stack" + do { + st.push( ch & 0xFF ); // push byte to stack + ch = ch >> 8; // shift value down by 1 byte + } + while ( ch ); + // add stack contents to result + // done because chars have "wrong" endianness + re = re.concat( st.reverse() ); + } + // return an array of bytes + return re; + } +}; \ No newline at end of file diff --git a/lib/phonegap-nfc-0.1.3.jar b/lib/phonegap-nfc-0.1.3.jar deleted file mode 100644 index a58d5ade4a1ef1be5a5ab663dd69219b82da369b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12435 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 diff --git a/lib/phonegap-nfc-0.1.5.jar b/lib/phonegap-nfc-0.1.5.jar new file mode 100644 index 0000000000000000000000000000000000000000..5455e2a8295d3499915d7a87afa0ed4a839d9d2c GIT binary patch literal 12869 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 - + \ No newline at end of file From f468a5675fb15c34f203c8bbad56abe33011db99 Mon Sep 17 00:00:00 2001 From: Kevin Griffin Date: Wed, 7 Sep 2011 16:24:58 -0400 Subject: [PATCH 2/5] updates to work with phonegap-nfc 0.2.0 --- assets/www/index.html | 2 +- assets/www/main.js | 14 ++-- ...gap-nfc-0.1.5.js => phonegap-nfc-0.2.0.js} | 77 +++++------------- lib/phonegap-nfc-0.1.5.jar | Bin 12869 -> 0 bytes lib/phonegap-nfc-0.2.0.jar | Bin 0 -> 13512 bytes res/xml/plugins.xml | 2 +- 6 files changed, 28 insertions(+), 67 deletions(-) rename assets/www/{phonegap-nfc-0.1.5.js => phonegap-nfc-0.2.0.js} (69%) delete mode 100644 lib/phonegap-nfc-0.1.5.jar create mode 100644 lib/phonegap-nfc-0.2.0.jar diff --git a/assets/www/index.html b/assets/www/index.html index fd22904..b705325 100644 --- a/assets/www/index.html +++ b/assets/www/index.html @@ -6,7 +6,7 @@ NFC Reader Demo - + diff --git a/assets/www/main.js b/assets/www/main.js index 5ca95fd..9067f46 100644 --- a/assets/www/main.js +++ b/assets/www/main.js @@ -2,21 +2,21 @@ var tagMimeType = "text/pg"; function template(record) { - var recordType = navigator.nfc.util.bytesToString(record.type), + var recordType = nfc.bytesToString(record.type), payload; if (recordType === "T") { var langCodeLength = record.payload[0], text = record.payload.slice((1 + langCodeLength), record.payload.length); - payload = navigator.nfc.util.bytesToString(text); + payload = nfc.bytesToString(text); } else if (recordType === "U") { - var url = navigator.nfc.util.bytesToString(record.payload); + var url = nfc.bytesToString(record.payload); payload = "" + url + "<\/a>"; } else { - payload = navigator.nfc.util.bytesToString(record.payload); + payload = nfc.bytesToString(record.payload); } @@ -91,9 +91,9 @@ var ready = function() { navigator.notification.alert(reason, function() {}, "There was a problem"); } - navigator.nfc.addMimeTypeListener(tagMimeType, myNfcListener, win, fail); + nfc.addMimeTypeListener(tagMimeType, myNfcListener, win, fail); - navigator.nfc.addNdefListener( + nfc.addNdefListener( // function() { // showText("This is an NDEF tag but doesn't match the mime type " + tagMimeType + "."); // }, @@ -104,7 +104,7 @@ var ready = function() { fail ); - navigator.nfc.addNdefFormatableListener( + nfc.addNdefFormatableListener( function() { navigator.notification.vibrate(100); showText("This tag is can be NDEF formatted. "); diff --git a/assets/www/phonegap-nfc-0.1.5.js b/assets/www/phonegap-nfc-0.2.0.js similarity index 69% rename from assets/www/phonegap-nfc-0.1.5.js rename to assets/www/phonegap-nfc-0.2.0.js index 0de9fc7..1f037be 100644 --- a/assets/www/phonegap-nfc-0.1.5.js +++ b/assets/www/phonegap-nfc-0.2.0.js @@ -4,17 +4,17 @@ PhoneGap.addConstructor( function () { PhoneGap.exec( function () { - console.log("Initialized the NFCPlugin"); + console.log("Initialized the NfcPlugin"); }, function (reason) { - alert("Failed to initialize the NFCPlugin " + reason); + alert("Failed to initialize the NfcPlugin " + reason); }, - "NFCPlugin", "init", [] + "NfcPlugin", "init", [] ) } ); -var Ndef = { +var ndef = { // see android.nfc.NdefRecord for documentation about constants // http://developer.android.com/reference/android/nfc/NdefRecord.html TNF_EMPTY: 0x0, @@ -98,83 +98,44 @@ var Ndef = { } }; -var Util = { - concatArray: function (a1, a2) { // this isn't built in? - for (var i = 0; i < a2.length; i++) { - a1.push(a2[i]); - } - return a1; - }, - - bytesToString: function (bytes) { - var bytesAsString = ""; - for (var i = 0; i < bytes.length; i++) { - bytesAsString += String.fromCharCode(bytes[i]); - } - return bytesAsString; - }, +var nfc = { - // http://stackoverflow.com/questions/1240408/reading-bytes-from-a-javascript-string#1242596 - stringToBytes: function ( str ) { - var ch, st, re = []; - for (var i = 0; i < str.length; i++ ) { - ch = str.charCodeAt(i); // get char - st = []; // set up "stack" - do { - st.push( ch & 0xFF ); // push byte to stack - ch = ch >> 8; // shift value down by 1 byte - } - while ( ch ); - // add stack contents to result - // done because chars have "wrong" endianness - re = re.concat( st.reverse() ); - } - // return an array of bytes - return re; - } -}; - -navigator.nfc = { - - addTagListener: function (callback, win, fail) { + addTagDiscoveredListener: function (callback, win, fail) { document.addEventListener("tag", callback, false); - PhoneGap.exec(win, fail, "NFCPlugin", "registerTag", []); + PhoneGap.exec(win, fail, "NfcPlugin", "registerTag", []); }, addMimeTypeListener: function (mimeType, callback, win, fail) { document.addEventListener("ndef-mime", callback, false); - PhoneGap.exec(win, fail, "NFCPlugin", "registerMimeType", [mimeType]); + PhoneGap.exec(win, fail, "NfcPlugin", "registerMimeType", [mimeType]); }, addNdefListener: function (callback, win, fail) { document.addEventListener("ndef", callback, false); - PhoneGap.exec(win, fail, "NFCPlugin", "registerNdef", []); + PhoneGap.exec(win, fail, "NfcPlugin", "registerNdef", []); }, addNdefFormatableListener: function (callback, win, fail) { document.addEventListener("ndef-formatable", callback, false); - PhoneGap.exec(win, fail, "NFCPlugin", "registerNdefFormatable", []); + PhoneGap.exec(win, fail, "NfcPlugin", "registerNdefFormatable", []); }, - writeTag: function (ndefMessage, win, fail) { - PhoneGap.exec(win, fail, "NFCPlugin", "writeTag", [ndefMessage]); + write: function (ndefMessage, win, fail) { + PhoneGap.exec(win, fail, "NfcPlugin", "writeTag", [ndefMessage]); }, - shareTag: function (ndefMessage, win, fail) { - PhoneGap.exec(win, fail, "NFCPlugin", "shareTag", [ndefMessage]); + share: function (ndefMessage, win, fail) { + PhoneGap.exec(win, fail, "NfcPlugin", "shareTag", [ndefMessage]); }, - unshareTag: function (win, fail) { - PhoneGap.exec(win, fail, "NFCPlugin", "unshareTag", []); + unshare: function (win, fail) { + PhoneGap.exec(win, fail, "NfcPlugin", "unshareTag", []); }, - eraseTag: function (win, fail) { - PhoneGap.exec(win, fail, "NFCPlugin", "writeTag", [[]]); - } - -}; + erase: function (win, fail) { + PhoneGap.exec(win, fail, "NfcPlugin", "writeTag", [[]]); + }, -navigator.nfc.util = { concatArray: function (a1, a2) { // this isn't built in? for (var i = 0; i < a2.length; i++) { a1.push(a2[i]); diff --git a/lib/phonegap-nfc-0.1.5.jar b/lib/phonegap-nfc-0.1.5.jar deleted file mode 100644 index 5455e2a8295d3499915d7a87afa0ed4a839d9d2c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12869 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 CE{Ayl literal 0 HcmV?d00001 diff --git a/res/xml/plugins.xml b/res/xml/plugins.xml index 9ae6395..839c893 100644 --- a/res/xml/plugins.xml +++ b/res/xml/plugins.xml @@ -16,5 +16,5 @@ - + \ No newline at end of file From 6131ec3fccfb352e901a752bec51f1c0bd1463f2 Mon Sep 17 00:00:00 2001 From: Kevin Griffin Date: Wed, 7 Sep 2011 16:35:58 -0400 Subject: [PATCH 3/5] updated to latest --- assets/www/phonegap-nfc-0.2.0.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/assets/www/phonegap-nfc-0.2.0.js b/assets/www/phonegap-nfc-0.2.0.js index 1f037be..bed66d7 100644 --- a/assets/www/phonegap-nfc-0.2.0.js +++ b/assets/www/phonegap-nfc-0.2.0.js @@ -68,10 +68,10 @@ var ndef = { if (!id) { id = []; } payload.push(languageCode.length); - navigator.nfc.util.concatArray(payload, navigator.nfc.util.stringToBytes(languageCode)); - navigator.nfc.util.concatArray(payload, navigator.nfc.util.stringToBytes(text)); + nfc.concatArray(payload, nfc.stringToBytes(languageCode)); + nfc.concatArray(payload, nfc.stringToBytes(text)); - return NFC.record(Ndef.TNF_WELL_KNOWN, Ndef.RTD_TEXT, id, payload); + return NFC.record(ndef.TNF_WELL_KNOWN, ndef.RTD_TEXT, id, payload); }, /** @@ -82,7 +82,7 @@ var ndef = { */ uriRecord: function (text, id) { if (!id) { id = []; } - return Ndef.record(Ndef.TNF_ABSOLUTE_URI, Ndef.RTD_URI, id, navigator.nfc.util.stringToBytes(text)); + return ndef.record(ndef.TNF_ABSOLUTE_URI, ndef.RTD_URI, id, nfc.stringToBytes(text)); }, /** @@ -94,7 +94,7 @@ var ndef = { */ mimeMediaRecord: function (mimeType, payload, id) { if (!id) { id = []; } - return Ndef.record(Ndef.TNF_MIME_MEDIA, navigator.nfc.util.stringToBytes(mimeType), id, payload); + return ndef.record(ndef.TNF_MIME_MEDIA, nfc.stringToBytes(mimeType), id, payload); } }; From 00bd57c53b6a97e66345423fd8c05f5aa38a1160 Mon Sep 17 00:00:00 2001 From: Kevin Griffin Date: Thu, 8 Sep 2011 11:59:42 -0400 Subject: [PATCH 4/5] removed logging --- assets/www/phonegap-1.0.0.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/assets/www/phonegap-1.0.0.js b/assets/www/phonegap-1.0.0.js index 47b8a2e..751c52c 100644 --- a/assets/www/phonegap-1.0.0.js +++ b/assets/www/phonegap-1.0.0.js @@ -565,7 +565,7 @@ PhoneGap.exec = function(success, fail, service, action, args) { } var r = prompt(PhoneGap.stringify(args), "gap:"+PhoneGap.stringify([service, action, callbackId, true])); - console.log("gap:"+PhoneGap.stringify([service, action, callbackId, true])); + // If a result was returned if (r.length > 0) { eval("var v="+r+";"); From e66eeebde37503392ca9550ab0080722f0049aff Mon Sep 17 00:00:00 2001 From: Kevin Griffin Date: Fri, 9 Sep 2011 11:17:00 -0400 Subject: [PATCH 5/5] using released 0.2.0 version --- assets/www/phonegap-nfc-0.2.0.js | 20 +++++++++++++++++++- lib/phonegap-nfc-0.2.0.jar | Bin 13512 -> 13512 bytes 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/assets/www/phonegap-nfc-0.2.0.js b/assets/www/phonegap-nfc-0.2.0.js index bed66d7..c851b9c 100644 --- a/assets/www/phonegap-nfc-0.2.0.js +++ b/assets/www/phonegap-nfc-0.2.0.js @@ -168,5 +168,23 @@ var nfc = { } // return an array of bytes return re; + }, + + bytesToHexString: function (bytes) { + var bytesAsHexString = ""; + for (var i = 0; i < bytes.length; i++) { + if(bytes[i] >= 0) { + dec = bytes[i]; + } else { + dec = 256 + bytes[i]; + } + hexstring = dec.toString(16); + // zero padding + if(hexstring.length == 1) { + hexstring = "0" + hexstring; + } + bytesAsHexString += hexstring; + } + return bytesAsHexString; } -}; \ No newline at end of file +}; diff --git a/lib/phonegap-nfc-0.2.0.jar b/lib/phonegap-nfc-0.2.0.jar index ec5582e86311da5805f0919d8dbdfc57c705d62a..982c1bc410f915c2ba3d6e5afd0625ab9c5e5ba2 100644 GIT binary patch delta 268 zcmX?+c_NcHz?+$ci-CcIfuT1-b0V(>a}SWR=mk?J%0Vsg9@&tzUB{>_&epD}`zZr;Pp%M50mVM}8IGfX)PAdD5< zJ`l!t-rZtgsjVsj5M3N<)?Ca$*GzUZumH(SZZxn5(}xZ8!Sq)H2QY16=mMte4ZXqi jS;J^Bt!)$orn{i@ODOGO3=v;$90itVF-Zc`nI`c7B}r6L delta 268 zcmX?+c_NcHz?+$ci-CcIfg!J4eIl<0b1smw=w$}+PRN6)R|X(zvMi$sm=0mI76kI` zA1&Teeut5Pp_Q3|!CnU@*NIK!641ZJ3W7C;y) zxP2gu@4UOkz*1XP0wB6L)U3HcB9q+=EI`hg+-P7A<{viD2h(2-9Kf`Np$nL