Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
´´½¨Ò»¸öCordovaÍêÕûÓ¦ÓÃ
 
  1974  次浏览      27
 2018-7-16
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚ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Ò²ÊÇͬÑùµÄ×ö·¨¡£

½á¹ûÊÇ¿ÉÒÔά»¤Ò»Ì×´úÂë²¢ÔÚÐèÒªµÄÕýÈ·×ÊÔ´Öа´ÕÕÆ½Ì¨Çл»¡£Õâ¶Ô²»Í¬Æ½Ì¨À´Ëµ¸ü¼ÓÒ×ÓÚ¹ÜÀí×ÊÔ´¡£

×îºó×¢ÒâÔÚÄ£ÄâÆ÷ÉÏÒ»°ãûÓÐÖ¸ÄÏÕ룬ÐèÒªÐèÒªÔÚÕæ»úÉϲâÊÔÕâ¸öÓ¦Óá£

   
1974 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

Éî¶È½âÎö£ºÇåÀíÀôúÂë
ÈçºÎ±àд³öÓµ±§±ä»¯µÄ´úÂë
ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
ÍŶÓÏîÄ¿¿ª·¢"±àÂë¹æ·¶"ϵÁÐÎÄÕÂ
Ïà¹ØÎĵµ

ÖØ¹¹-¸ÄÉÆ¼ÈÓдúÂëµÄÉè¼Æ
Èí¼þÖØ¹¹v2
´úÂëÕû½àÖ®µÀ
¸ßÖÊÁ¿±à³Ì¹æ·¶
Ïà¹Ø¿Î³Ì

»ùÓÚHTML5¿Í»§¶Ë¡¢Web¶ËµÄÓ¦Óÿª·¢
HTML 5+CSS ¿ª·¢
ǶÈëʽC¸ßÖÊÁ¿±à³Ì
C++¸ß¼¶±à³Ì