±à¼ÍƼö: |
±¾ÎÄÀ´×ÔÓÚcsdn£¬½éÉÜÁËʾÀýÓ¦Ó㬴´½¨Ó¦Óã¬×¢Òâϸ½Ú£¬Ê¹ÓÃMergesµÈ¡£ |
|
¹ØÓÚʾÀýÓ¦ÓÃ
°ÑËùÓеÄAPI¼¯ÖÐÔÚÒ»¸öÀý×ÓÖÐչʾÊÇÒ»¸öºÃ°ì·¨¡£ÏÂÃæÎÒÃÇÒÔʵÏÖÒ»¸öÖ¸ÄÏÕë±íÅÌΪÀý¡£
Ó¦ÓÃÔÚÆÁÄ»ÉÏÏÔʾһ¸ö±íʾָÄÏÕëתÅ̵ÄͼÏñ¡£µ±Óû§ÑØ×ÅË®Æ½×ø±êÖáת¶¯É豸ʱ£¬Ö¸ÄÏÕëͼÏñҲת¶¯¡£Ó¦ÓÃЧ¹ûÈçÏÂͼ:

ÕâÀï»áÓõ½jQuery MobileÌáÉýÓû§UI£¬»¹»áÀûÓÃCordova mergesÎļþ¼ÐΪAndroidºÍiOSÌṩ²»Í¬µÄͼÏñ(·½±ãÆð¼ûÏÂÃæÖ»ÔÚAndroidƽ̨¿ª·¢)¡£
´´½¨Ó¦ÓÃ
ÔÚ¿ª·¢Îļþ¼ÐÖÐÓÃCLI´´½¨CordovaÏ
cordova create
compass
cd compass
cordova platform add android |
ÕâʱÎÒÃǾÍÓÐÁËÒ»¸öеÄCordovaÏîÄ¿£¬ËüÖ§³ÖAndroidƽ̨¡£ÏîÄ¿ÖпÉÄÜ»áÓõ½Ò»¸ö»ò¶à¸öºËÐIJå¼þ¡£¿ÉÒÔ·ÃÎÊCordova
CLIʹÓÃÖ¸ÄÏÍøÕ¾£¬ÕÒµ½°üº¬ÏòÏîÄ¿Ìí¼Óÿ¸öCordova²å¼þµÄÍêÕûÃüÁî˵Ã÷¡£
ÎÒÃÇÒªÔÚ³ÌÐòÖе÷ÊÔÓ¦Óã¬ÐèÒªÏò¿ØÖÆÌ¨Ð´ÐÅÏ¢£¬²ÎÕÕÖ¸ÄÏÖÐÌí¼Óconsole²å¼þµÄÃüÁÈçÏ£º
cordova plugin
add https://git-wip-us.apache.org /repos /asf
/cordova-plugin -console.git |
Ó¦ÓÃʹÓÃÁËÖ¸ÄÏÕ룬»¹ÐèҪʹÓÃÈçÏÂÃüÁîÌí¼Ócompass²å¼þ¡£
cordova plugin
add https://git-wip-us.apache.org /repos /asf/cordova-
plugin-device-orientation.git |
×¢ÒâÈç¹û²»ÔÚCordova¹¤×÷ʱ´ò¿ª-d¿ª¹Ø£¬Ëü²»»áÏòÄãÊä³öÖ´Ðйý³ÌÐÅÏ¢¡£
½ÓÏÂÀ´¸´ÖÆÒÔǰʾÀýÖеÄindex.htmlµ½ÏîÄ¿µÄwwwĿ¼¡£ÓÃÈçÏ´úÂë±à¼Õâ¸öÒ³Ãæ£º
<body onload="onBodyLoad()">
<h1>Example 13-2</h1> <img
src="compass.png" id="compass"
/> <br /> <p id="headingInfo"></p>
</body> |
ΪÁ˰ÑÓ¦ÓÃ×öµÄƯÁÁЩ£¬¿ÉÒÔʹÓÃjQuery Mobile°ÑÓ¦Óô´½¨µÄ¸üÏñÒÆ¶¯Ó¦Óá£Ê×ÏÈÏÂÔØjQueryºÍjQuery
Mobile£¬¸´ÖƵ½wwwĿ¼ÖУ¬²¢Ïòindex.htmlÒ³µÄhead²¿·ÖÌí¼Ó¶ÔËüÃǵÄÒýÓá£
<link rel="stylesheet"
href="jquery.mobile-1.3.2 .min .css />
<script type="text/javascript" charset="utf-8"
src= "jquery -2.0.3. min.js"> </script>
<script type= "text/javascript" charset="utf-8"
src = "jquery.mobile-1.3.2.min.js">
</script> |
Ó¦ÓÃÐýתͼÏñµÄÄÜÁ¦ÓÉÒ»¸ö½ÐjQuery RotateµÄÃâ·Ñ²å¼þʵÏÖ£»Äã¿ÉÒÔÔÚhttp://code.google.com/p/jqueryrotate
ÕÒµ½¹ØÓÚÕâ¸ö²å¼þµÄÐÅÏ¢¡£ÒªÌí¼Ó²å¼þ£¬°ÑÕâ¸ö²å¼þµÄjsÎļþ·ÅÔÚwwwÎļþ¼ÐÖУ¬È»ºóÔÚindex.htmlÖÐÌí¼ÓÈçÏÂÒ»ÐÐscript±êÇ©£º
<script type="text/javascript"
charset="utf-8" src= " jQueryRotateCompressed.js">
</script> |
µ±ÐèÒªµÄjQueryÎļþ¶¼¾Íλºó£¬°Ñindex.htmlµÄbody²¿·Ö¸üгÉÏÂÃæÕâÑù£º
<body onload="onBodyLoad()">
<div data-role="page"> <div
data-role="header"> <h1>Ö¸ÄÏÕë</h1>
</div> </div> <div data-role="content">
<div style="text-algin:center;">
<img src="img/compass.png" id="compass"
alt=""> <br/> <p
id="headingInfo"> <b>Heading:</b>
0 Degreess </p> </div>
</div> <div data-role="footer"
data-position="fixed"> <h3>Created
By Af</h3> </div>
</body> |
ÊÇjQuery MobileʹÓÃÔªËØÖеÄdata-roleÊôÐÔÀ´°ÑÕâÐ©ÌØÊâµÄÔªËØ¶¨Òå³ÉÊʵ±µÄÍâ¹Û¡£Òò´ËÔÚÇ°ÃæµÄÀý×ÓÖУ¬ÔÚÒ³ÃæÉÏ´´½¨ÁËÒ»¸öheader
div²¢°ÑËüµÄdata-role¸³Îªheader£¬Í¬Ñù°Ñfooter divµÄdata-roleÊôÐÔÉèÖÃΪfooter¡£data-position="fixed"°ÑÒ³½Å¹Ì¶¨ÔÚÒ³Ãæµ×²¿¡£
½ÓÏÂÀ´ÎÒ°ÑÒ³ÃæµÄÄÚÈÝ·ÅÔÚÒ»¸öÊôÐÔdata-roleÊÇcontentµÄdivÖС£ÎªÁ˼ÓÔØÖ¸ÄÏÕëͼÏñ£¬²¢ÔÚÒ³Ãæ¾ÓÖÐÏÔʾ³¯ÏòÐÅÏ¢£¬Ìí¼ÓÒ»¸öеÄdiv²¢ÉèÖóÉ"style="text-algin:center"µÄÑùʽ¡£
×¢Òâ ΪÁ˲»ÏÔµÃÔÓÂÒ£¬Ã»ÓаÑstyleÌØÐÔ·ÅÔÚdata-roleΪcontentµÄdivÖС£Ò²·½±ã˵Ã÷Ñ§Ï°ÖØµã¡£
ÏÖÔÚÒѾÉý¼¶ÁËÓû§½çÃæ£¬ÊÇʱºò¿ªÊ¼¹Ø×¢Ó¦ÓõÄjs´úÂëÁË¡£ÔÚÓ¦ÓõÄindex.htmlµÄscript±êÇ©Öж¨ÒåÁËһЩӦÓÃÓõ½µÄº¯Êý¡£
µÚÒ»¸öÒªÓõ½µÄÊÇÏìÓ¦window.onerrorʼþµÄº¯Êý¡£ÒòΪÎÒÃÇÖªµÀ´úÂë²»»áÕýÈ·Ö´ÐУ¬²¢ÇÒ¶àÊýʱºòCordovaÓ¦Ó÷¢Éú´íÎóʱ¶¼ÊDZ£³Ö¾²Ä¬µÄ£¬ÕâÑùΪÕâ¸öʼþ¸³Öµ²¢¹ØÁª´¦Àíº¯ÊýÒÔ±ãÓÚ·¢ÏÖ·¢ÉúÔÚÔËÐÐÓ¦ÓÃÉϵĴíÎó¡£ÏÂÃæÕ¹Ê¾µÄÕâ¸öº¯Êý£¬»ù±¾ÉÏÊǽÓÊÜÁËÒ»¸ö´íÎó£¬Ó¦ÓÃÎļþÃûURLÅöµ½ÁËÕâ¸ö´íÎ󣬲¢ÇÒÐкÅÒýÆðÁËÕâ¸ö´íÎó£»È»ºóËü²úÉúÁËÊʵ±µÄ´íÎóÐÅÏ¢²¢°ÑËüдµ½ÈÕÖ¾£¬ÏÔʾµ½¶Ô»°¿òÉÏ¡£
// Óöµ½´íÎóʱ´¥·¢
window.oneeror = function(msg, url, line) {
var resStr;
var index = url.lastIndexOf('/');
if (index > -1) {
url = url.substring(index + 1);
}
resStr = 'Error in ' + url + ' on line ' + ':
' + msg;
console.log(appName + resStr);
alert(resStr);
return false;
} |
½ÓÏÂÀ´ÊÇͨƪ¶¼Óõ½µÄonDeviceReadyº¯Êý¡£Ëü×÷ΪCordovaµÄdevicereadyʼþµÄ¼àÌýÆ÷´´½¨£¬²¢ÇÒÔÚCordovaÈÝÆ÷Íê³É³õʼ»¯ºó´¥·¢¡£ÔÚÕâ¸öº¯ÊýÖÐÁ˽⵽CordovaÈÝÆ÷×¼±¸ºÃÁË£¬ÕâÑù¿É×öÏë×öµÄÒ»ÇÐÁË¡£ÒÔÏÂÊÇÕâ¸öº¯Êý£º
function OnDeviceReady()
{
console.log ('onDeiveReady fired.');
hi = document.getElementById ('headingInfo');
// ÉèÖüàÊÓ
// ÿÃë(1000ºÁÃë)¶ÁÖ¸ÄÏÕë
var watchOptions = {
frequency : 1000
};
console.log(appName + 'Creating watch: ' + JSON.
stringify (watchOptions));
watchID = navigator.compass.watchHeading ( onSuccess
, onError, watchOptions);
} |
º¯ÊýÊ×Ïȶ¨ÒåÁËÒ»¸öhi±äÁ¿£¬ËüÖ¸ÏòIDΪheadingInfoµÄÒ³ÃæÔªËØ¡£±äÁ¿ÉÔºóÓÃÀ´ÓÃչʾÉ豸³¯ÏòµÄÔªËØÌæ»»ÄÚÈÝ¡£
½ÓÏÂÀ´º¯Êý¶¨ÒåÁËÒ»¸öwatchOptions±äÁ¿£¬ËüÓÃÀ´ÉèÖÃÒ»¸ö³¯Ïò¼àÊÓ£¬Õâ¸ö¼àÊÓ¿ÉÒÔÈÃÓ¦Óö¨ÆÚ¸üг¯Ïò¡£watchOptions¶ÔÏó¼´¿ÉÒÔ¸øËüµÄfrequencyÊôÐÔ»òfilterÊôÐÔ¸³Öµ¡£
µ±Ê¹Óó¯Ïò¼àÊÓʱ£¬Ëüÿ1000ºÁÃë»áÈÃCompass API±¨¸æÉ豸³¯Ïò¡£filterÊôÐÔÓÃÀ´ÔÚ±¨¸æ³¯Ïòǰ¶¨Ò峯Ïò±ä»¯µÄÊýÁ¿(ÓöÈ)¡£ÏÂÃæµÄÀý×ÓfilterÊôÐÔ¸æËßCompass
APIÿÃë·¢²¼´óÓÚ1¶ÈµÄ³¯Ïò£º
var watchOptions
= {
filter : 1
}; |
ÕâÀï¿ÉÒÔÖ¸¶¨ÕâÁ½¸öÊôÐÔ£¬µ«ÒªÊÇÖ¸¶¨ÁËfilter£¬frequencyÊôÐԻᱻCompass APIºöÂÔ¡£
×¢£º´Ë´¦Êǿӡ£AndroidÒѾ²»Ö§³Öfilter¡£
var watchOptions
= {
frequencey: 1000,
filter: 1
}; |
¶¨ÒåwatchOptionsºó£¬º¯Êýµ÷ÓÃwatchHeadinÀ´´´½¨³¯Ïò¼àÊÓ£º
watchID = navigator.
compass.watchHeading ( onSuccess , onError, watchOptions); |
¾ÍÏñÒѾÁ˽âµÄËùÓÐÆäËûCordodva APIÒ»Ñù£¬onSuccesº¯ÊýÔÚCompass API·¢ËÍÒ»¸ö³¯ÏòֵʱִÐУ¬onErrorº¯ÊýÔÚCompass
APIÓöµ½´íÎóʱִÐС£
µ±Ö´ÐÐonSuccessʱ£¬Compass API°Ñheading¶ÔÏ󴫵ݹýÀ´£¬Ëü°üÀ¨±íʾÉ豸³¯ÏòµÄÊôÐÔ£¬ÈçÏ£º
{
"magneticHeading" :0,
"trueHeading" :0,
"headingAccuracy" :0,
"timestamp" :137873854661
} |
onSuccessº¯ÊýʹÓÃheading¶ÔÏóµÄmagneticHeadingÊôÐÔÀ´È·¶¨µ±Ç°³¯Ïò£¬È»ºóʹÓÃÕâ¸öÖµ°´ÕÕ¶ÈÊýÐýתָÄÏÕëͼÏñ£¬¾ÍÏñÏÂÃæº¯ÊýչʾµÄ£º
function onSuccess(heading)
{
console.log (app.Name + 'Received Heading');
console.log (appName + JSON.stringify(heading));
var hv = Math.round(heading.magneticHeading);
console.log (appName + 'Rotating to ' + hv + '
degrees ');
$ ("#compass").rotating(-hv);
hi.innerHTML = '<b>Heading:</b> '
+ hv + ' Degrees ';
} |
×¢ÒâÖ¸ÄÏÕëͼÏñÒÔÉ豸µ±Ç°³¯ÏòÏà·´µÄ·½ÏòÐýת¡£ÕâÊÇÒòΪÉ豸±»×ª¶¯£¬Ö¸ÄÏÕëͼÏñ±ØÐëÒÔÏà·´µÄ·½Ïòת¶¯£¬ÕâÑùÖ¸ÄÏÕëµÄ±±·½×ÜÊÇÖ¸Ïò´Å¼«µÄ±±·½¡£
×îºóÓ¦ÓõÄonErrorº¯ÊýÔÚ¼àÊÓ·¢Éú´íÎóʱִÐС£ËüÓô«µÝ¸øº¯ÊýµÄerror¶ÔÏóÀ´Ê¶±ð´íÎóµÄÔÒò²¢ÎªÓû§ÏÔʾÊʵ±µÄ´íÎóÐÅÏ¢¡£×¢ÒâonErrorº¯Êý»¹È¡ÏûÁ˼àÊÓ£¬ÒòΪÔÚÓ¦Óò»ÄܲâÁ¿³¯Ïòʱ¼ÌÐø¼àÊÓ³¯ÏòҲûÓÐÌ«´óÒâÒåÁË¡£
function onError(err)
{
console.error (appName + 'Heading Error');
console.error (appName + 'Error: ' + JSON.stringify(err));
// ·¢ÉúÎÊÌâÒÆ³ý¼àÊÓ
navigator.compass.clearWatch (watchID);
// ÔÚÒ³ÃæÉÏÇå³ý³¯ÏòÖµ
hi.innerHTML = '<b>Heading: </b>None';
// ¸æÖ®Óû§
if (err.code == CompassError .COMPASS_ NOT_ SUPPORTED
) {
aleert('²»Ö§³ÖÖ¸ÄÏÕë');
} else if (compassError.code == CompassError.
COMPASS _ INTERNAL_ ERR) {
alert ('Ö¸ÄÏÕëÄÚ²¿´íÎó');
} else {
alert ('δ֪µÄ³¯Ïò´íÎó');
}
} |
×¢Òâ±ÈÒÔÍùÆäËûÓ¦Óøü¶à´ÎµÄд¿ØÖÆÌ¨¡£Õâô×öÊÇΪÁ˸üÕæÊµµÄչʾ´´½¨CordovaÓ¦Ó᣶à´ÎʹÓÿØÖÆÌ¨Ð´³öËùÓÐÅö¼ûµÄÓ¦ÓöÔÏó£¬ÕâÈÃÎÒÃǸüºÃµÄÁ˽â´ÓÓ¦ÓÃÖлñµÃÁËʲô£¬ÕâÑùÄÜÔÚ·¢Éú´íÎóʱ¸üÈÝÒ׵ĵ÷ÊÔÎÊÌâ¡£
ÔÚÓ¦ÓÃÖж¨ÒåÒ»¸öappName¶ÔÏó£º
var appName
= "Compass - "; |
µ±Ó¦ÓÃд¿ØÖÆÌ¨Ê±£¬°ÑappNameµÄÖµ×·¼Óµ½Ã¿¸ö¼Ç¼ÖУº
console.error(appName
+ 'some message'); |
µ±ÔÚAndroidÉϵ÷ÊÔʱ£¬¿ÉÒÔÓüàÊÓÆ÷Ó¦ÓÃÀ´²é¿´ÊµÊ±µÄÈÕÖ¾¼Ç¼¡£¾ÍÏñ14.4չʾµÄ£¬Äã¿ÉÒÔÓÃappName¹ýÂË´«ÈëµÄÖµÒÔ±ãÖ»²é¿´Õâ¸öÓ¦ÓõĿØÖÆÌ¨ÐÅÏ¢¡£
²âÊÔÓ¦ÓÃÇÒËüÊǺÏÒâµÄ£¬ÒƳý»ò±ê×¢¶à´¦Ó¦ÓÃд¿ØÖÆÌ¨µÄµØ·½¡£
ÍêÕûµÄindex.htmlÇë²Î¿¼Ô´Âë¡£
ʹÓÃMerges
ÏÖÔÚ»¹Ã»ÓÐÌá¹ýCordova CLIµÄmerge¹¦ÄÜ¡£Ç°Ãæ"Cordova¿ª·¢»úÖÆ"½âÊ͹ýËüÔõÑù¹¤×÷£¬ÕâÀïչʾËüµÄʹÓá£
¼ÙÉèÏîÄ¿ÔÚcompassÎļþ¼ÐÖУ¬°ÑAndroidƽ̨µÄÖ¸ÄÏÕëͼÏñcompass.png·ÅÔÚcompass/merges/android/img/ÖУ¬°ÑiOS°æ±¾µÄ·ÅÔÚmerges/ios/img/ÖС£ÔÚ¹¹½¨¹ý³ÌÖУ¬Cordova
CLI°ÑmergesÖеÄandroidÎļþ¼ÐµÄͼÏñ¸´ÖƵ½compass/platforms/android/assets/www/img/ÖС£iosÒ²ÊÇͬÑùµÄ×ö·¨¡£
½á¹ûÊÇ¿ÉÒÔά»¤Ò»Ì×´úÂë²¢ÔÚÐèÒªµÄÕýÈ·×ÊÔ´Öа´ÕÕÆ½Ì¨Çл»¡£Õâ¶Ô²»Í¬Æ½Ì¨À´Ëµ¸ü¼ÓÒ×ÓÚ¹ÜÀí×ÊÔ´¡£
×îºó×¢ÒâÔÚÄ£ÄâÆ÷ÉÏÒ»°ãûÓÐÖ¸ÄÏÕ룬ÐèÒªÐèÒªÔÚÕæ»úÉϲâÊÔÕâ¸öÓ¦Óᣠ|