Ŀǰ£¬Ëæ×Å Google µÄ Android ÊÖ»úºÍÆ»¹ûµÄ iPhone
ÊÖ»ú³ÉΪÊÖ»úÊг¡µÄÖ÷Á÷£¬Ô½À´Ô½¶àµÄ¿ª·¢Õß¼ÓÈëµ½ÒÆ¶¯Ó¦Óÿª·¢µÄ´ó¾üÖУ¬µ«ÊÇ»ùÓÚ Java µÄ Android
Ó¦ÓúͻùÓÚ C ÓïÑ﵀ iPhone Ó¦ÓÃÈÿª·¢Õß¿ª·¢Ó¦ÓõÄʱºòÉõΪ·³ÄÕ£¬Í¬ÑùµÄÓ¦ÓñØÐëÓò»Í¬µÄÓïÑÔ¿ª·¢Á½´Î²ÅÄÜÖ§³Ö²»Í¬µÄÊÖ»úƽ̨¡£ÎªÁ˽øÒ»²½¼ò»¯Òƶ¯Ó¦ÓõĿª·¢£¬Nitobi
¹«Ë¾ÍƳöÁËÒ»Ì׿ªÔ´µÄÒÆ¶¯Ó¦Óýâ¾ö·½°¸ PhoneGap¡£ ±¾ÎÄÖ÷Òª½éÉÜ PhoneGap µÄ»ù´¡ÖªÊ¶£¬²¢Í¨¹ýÒ»¸öʾÀý½éÉÜ
PhoneGap ¿ª·¢²âÊÔ»·¾³µÄ´î½¨ÒÔ¼° PhoneGap ÏîÄ¿µÄ¿ª·¢ºÍ²¿Ê𣬲¢¶Ô PhoneGap ÌṩµÄÖ÷Òª
API ×ö¼òµ¥½éÉÜ .
PhoneGap ¼ò½é
PhoneGap ÊÇÒ»¿î»ùÓÚ HTML5 µÄ¿ªÔ´µÄÊÖ»úÓ¦Óÿª·¢¿ò¼Ü£¬ËüÔÊÐíÓû§½ö½öͨ¹ý
Web£¨HTML¡¢JavaScript£©¼¼Êõ¾Í¿ÉÒÔ·ÃÎÊÒÆ¶¯É豸µÄ±¾µØÓ¦Óá¢API ÒÔ¼°Ó¦ÓóÌÐò¿âµÈ¡£PhoneGap
ÌṩÁËһϵÁзḻµÄ API ¹©¿ª·¢Õßµ÷Óã¬ÕâЩ API ³éÏóºÍ¼ò»¯ÁËÒÆ¶¯É豸±¾ÉíÌṩµÄ¸´Ô API£¬Ê¹¿ª·¢ÐµÄÊÖ»úÓ¦Óú͵÷ÓÃÒÑÓеÄÊÖ»ú¹¦Äܸü¼òµ¥·½±ã¡£ÁíÍ⣬PhoneGap
ÕæÕýʵÏÖÁË written once, run everywhere, ²¢ÇÒËü²ÉÓÃÁË W3C ±ê×¼£¬ÄܺÍ
jQuery Mobile ½áºÏÔÚÒ»ÆðʹÓá£
PhoneGap ÌØÐÔ
Ŀǰ£¬PhoneGap ÒÑʵÏÖ¶Ô iPhone/iPad¡¢Android¡¢Symbian¡¢Palm¡¢ºÚÝ®¸÷°æ±¾¾ø´ó²¿·Ö¹¦ÄܵÄÖ§³Ö,
ÆäÖйٷ½ÎĵµÖÐ¶ÔÆäÖ§³ÖµÄÏêϸ˵Ã÷Èçͼ 1 Ëùʾ£º

ͼ 1.PhoneGap API¶Ô¸÷ÊÖ»úƽ̨µÄÖ§³Ö
PhoneGap API ¼ò½é
1.Accelerometer
Accelerometer ÊÇÒ»¸öÉè±¸ÒÆ¶¯¸ÐÓ¦Æ÷£¬ËüÄܹ»¼ì²âµ½É豸Ïà¶ÔÓÚÔÀ´Î»ÖõÄÒÆ¶¯£¬²¢ÓÃÈýÎ¬×ø±ê
x£¬y£¬z ±íʾ¡£¸Ã API ÌṩÈý¸ö·½·¨£º
accelerometer.getCurrentAcceleration£ºµÃµ½ÓÃ
x,y,z Öµ±íʾµÄµ±Ç°É豸µÄÒÆ¶¯¼ÓËÙ¶È¡£
accelerometer.watchAcceleration£ºÒÔÌØ¶¨µÄʱ¼ä¼ä¸ôµÃµ½ÓÃ
x,y,z Öµ±íʾµÄµ±Ç°É豸µÄÒÆ¶¯¼ÓËÙ¶È¡£
accelerometer.clearWatch£ºÈ¡Ïû¶ÔÉè±¸ÒÆ¶¯¼ÓËÙ¶ÈµÄ¼à¿Ø¡£
2.Camera
Camera ÌṩÁË·ÃÎʺͲÙ×÷ÒÆ¶¯É豸µÄĬÈÏÉãÏñÍ·µÄ API£¬°üÀ¨ÓÃÉãÏñÍ·¶¯Ì¬ÉãȡͼƬ»ò´ÓÒÆ¶¯É豸µÄÏà²áÖлñȡͼƬ¡£
camera.getPicture(): ¸Ã·½·¨Í¨¹ýÅäÖò»Í¬µÄ²ÎÊýʵÏÖ¶¯Ì¬ÓÃÉãÏñÍ·»ñȡͼƬ»ò´ÓÒÑÓеÄÏà²áÖлñȡͼƬ£¬·µ»Ø²ÎÊýÒ²¿ÉÒÔ¸ù¾ÝÉèÖò»Í¬µÄ²ÎÊý·µ»ØÍ¼Æ¬µÄ¶þ½øÖÆÊý¾Ý»òÕßͼƬµÄ·¾¶¡£
3.Compass
Compass ÌṩÁË»ñÈ¡ÒÆ¶¯É豸ָÏòµÄ API¡£
compass.getCurrentHeading£º »ñÈ¡µ±Ç°Òƶ¯É豸µÄÖ¸Ïò¡£
compass.watchHeading£ºÒÔÌØ¶¨µÄʱ¼ä¼ä¸ô»ñÈ¡µ±Ç°É豸µÄÖ¸Ïò¡£
compass.clearWatch£ºÈ¡Ïû¶Ôµ±Ç°É豸ָÏòµÄ¼à¿Ø¡£
4.Contacts
Contacts ÌṩÁË·ÃÎʺͲÙ×÷ÒÆ¶¯É豸ͨѶ¼Êý¾Ý¿âµÄ API£¬°üÀ¨»ñÈ¡ÁªÏµÈËÁÐ±í£¨Ö§³Ö¹ýÂËÌõ¼þ£©£¬Ôö¼Ó£¬É¾³ý£¬±à¼Í¨Ñ¶Â¼ÁªÏµÈ˵ȡ£
contacts.create£º ´´½¨Ò»¸öеÄÁªÏµÈË¡£
contacts.find£º ²éÕÒÁªÏµÈË¡£
Contacts Ä£¿é°üÀ¨¼¸¸öÖØÒªµÄ¶ÔÏó£ºContact£¬ContactName£¬ContactField£¬ContactAddress£¬ContactOrganization£¬ContactFindOptions£¬ContactError£¬Í¨¹ýÕâЩ¶ÔÏóºÍ
create¡¢init ·½·¨¹²Í¬ÊµÏÖ¶ÔͨѶ¼µÄ¸´ÔÓ²Ù×÷£¬ÏêϸµÄ½éÉÜ¿ÉÒԲο¼ PhoneGap µÄ¹Ù·½Îĵµ¡£
5.Device
Device ÌṩÁË·ÃÎʵ±Ç°Òƶ¯É豸²ÎÊýµÄ API£¬°üÀ¨É豸Ãû¡¢É豸ϵͳ°æ±¾¡¢É豸ƽ̨µÈ¡£
6.File
File ÌṩÁË·ÃÎʺͲÙ×÷ÒÆ¶¯É豸ÎļþϵͳµÄ API£¬ÆäÖÐ FileReader ºÍ FileWriter
ÌṩÁ˶ÔÉ豸ÎļþµÄ¶Áд API¡£
7.GeoLocation
GeoLocation ÌṩÁË·ÃÎÊÒÆ¶¯É豸µÄ GPS ¸ÐÓ¦Æ÷µÄ API¡£
8.Media
Media ÌṩÁË·ÃÎʺͲÙ×÷ÒÆ¶¯É豸ÓïÒôÎļþµÄ API£¬°üÀ¨²¥·Å¡¢Í£Ö¹¡¢Â¼ÒôµÈ¡£
9.NetWork
Network ÌṩÁË·ÃÎÊÒÆ¶¯Éè±¸ÒÆ¶¯ÍøÂçºÍÎÞÏßÍøÂçÉèÖÃµÄ API¡£
10.Notification
Notification ÌṩÁËÒ»×é API À´Ä£ÄâÒÆ¶¯É豸µÄһЩ¿ÉÊÓ£¨¶Ô»°¿ò£©¡¢¿ÉÌý£¨ÌáʾÒô£©¡¢¿É¸Ð¾õ£¨Õ𶯣©µÄ¹¦ÄÜ¡£
notification.alert: µ¯³ö¾¯¸æ»òÕß¶Ô»°¿ò¡£
notification.confirm£ºµ¯³öÈ·ÈÏ¿ò¡£
notification.beep£º²¥·ÅÉ豸µÄÌáʾÒô¡£
notification.vibrate£ºÊ¹É豸Õð¶¯Ò»¶Îʱ¼ä¡£
11.Storage
Store ÌṩÁË·ÃÎÊÒÆ¶¯É豸µÄ´æ´¢É豸µÄ API¡£
´î½¨ PhoneGap ¿ª·¢»¯¾³
PhoneGap Ö§³Ö¿ª·¢ÊÊÓÃÓÚ iPhone¡¢Android¡¢Palm µÈ²»Í¬Æ½Ì¨µÄÓ¦Ó㬶Բ»Í¬µÄƽ̨¿ª·¢»·¾³Ò²ÓÐËù²»Í¬£¬±¾ÎÄÒÔ
Android ΪÀý´î½¨¿ª·¢»·¾³ºÍ´´½¨Ó¦Óá£Ôڴ»·¾³Ö®Ç°£¬ÎÒÃÇÐèÒªÏÈÏÂÔØÒ»Ð©±ØÐëµÄ¹¤¾ßºÍ SDK£¬ËùÓеŤ¾ß¶¼¿ÉÒÔÃâ·ÑÏÂÔØ£º
ÏÂÔØ ²¢°²×° Eclipse3.4+¡£
ÏÂÔØ ²¢°²×° Android SDK¡£
ÏÂÔØ ²¢°²×° ADT Plugin for Eclipse¡£
ÏÂÔØ ²¢½âѹ PhoneGap¡£
°²×°ºÃ Eclipse¡¢Android SDK ºÍ ADT ²å¼þÖ®ºó£¬»¹ÐèÒª×öһЩ¼òµ¥µÄÅäÖòſÉÒÔ´´½¨ÏîÄ¿¡£Í¼
2 ÏÔʾÁËÈçºÎÔÚ Eclipse ÀïÅäÖà Android SDK µÄ·¾¶£¬Í¼ 3 ºÍͼ 4 ÏÔʾÁËÈçºÎÔÚ
Eclipse ÀïÅäÖà AVD£¨Android Virtual Device£©¡£
ͼ 2£ºÔÚ Eclipse ÀïÅäÖà Android
SDK ·¾¶

ͼ 3£ºAndroid SDK and AVD
Manager ²Ëµ¥

ͼ 4£ºÔÚ Eclipse ÀïÅäÖà AVD
Èç¹ûÐèҪʹÓà Android ÊÖ»ú²âÊÔÓ¦Ó㬻¹ÐèÒª°²×°ÊÖ»ú¶ÔÓ¦ÐͺŵÄÇý¶¯Æ÷£¬°ÑÊÖ»úºÍ¿ª·¢»úÆ÷Óà USB
ÏßÁ¬½Ó£¬²¢ÇÒÕýÈ·ÉèÖÃÊÖ»úµÄ¿ª·¢µ÷ÊÔ¹¦ÄÜ¡£(Settings > Applications >
Development)
´´½¨Ò»¸ö¼òµ¥µÄ PhoneGap Ó¦ÓÃ
´´½¨Ò»¸öРAndroid ¹¤³Ì£¬Èçͼ 5 Ëùʾ£º
ͼ 5£º´´½¨Ð Android ¹¤³Ì
ÍêÉÆÏîÄ¿½á¹¹
ÔÚÏîÄ¿¸ùĿ¼Ï´´½¨ /libs ºÍ /assets/www Ŀ¼£¬²¢´Ó½âѹºóµÄ PhoneGap Ŀ¼Öп½±´
phonegap.js( ¿ÉÄÜ´øÓа汾ÐÅÏ¢) µ½ /assets/www Ŀ¼Ï£¬¿½±´ phonegap.jar£¨¿ÉÄÜ´øÓа汾ÐÅÏ¢£©µ½
libs Ŀ¼¡£ÐÞ¸ÄÏîÄ¿µÄ Java Build Path ÐÅÏ¢£¬°Ñ libs Ï嵀 jar Îļþ°üº¬ÔÚ±àÒë·¾¶ÖС£
ÐÞ¸ÄÏîÄ¿ÎļþʵÏÖ¼òµ¥µÄ»ñÈ¡É豸ÁªÏµÈËÁÐ±í¹¦ÄÜ
com.phonegap.App.java
¸ü¸Ä App.java ÎļþΪÇåµ¥ 1 µÄÄÚÈÝ£º
Çåµ¥ 1.App.java Àà
package com.phonegap.sample;
import android.app.Activity;
import android.os.Bundle;
import com.phonegap.*;
public class App extends DroidGap {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//load the index .html page when app is loaded.
super.loadUrl("file:///android_asset/www/index.html");
}
}
|
AndroidManifest.xml
°ÑÇåµ¥ 2 µÄÄÚÈÝ¿½±´µ½ AndroidManifest.xml ÎļþµÄ
manifest ±êÇ©ÄÚ , ²¢¿½android:configChanges="orientation|keyboardHidden
µ½ activity ±êÇ©ÄÚ×öΪ activity ±êÇ©µÄÒ»¸öÊôÐÔ¡£
Çåµ¥ 2.AndroidManifest.xml
<supports-screens android:largeScreens="true" android:normalScreens="true" android:smallScreens="true" android:resizeable="true" android:anyDensity="true" /> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name=" android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.RECEIVE_SMS" /> <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /> <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
index.html Ò³Ãæ
ÔÚ /assets/www Ŀ¼Ï´´½¨Ò»¸öÐ嵀 HTML Ò³ÃæÃüÃûΪ index.html£¬²¢¿½±´Çåµ¥
3 µÄÄÚÈݵ½ index.html Îļþ¡£
Çåµ¥ 3£º Index.html
<!DOCTYPE HTML> <html> <head> <meta name="viewport" content="width=320; user-scalable=no" /> <meta http-equiv="Content-type" content="text/html; charset=utf-8" > <title>PhoneGap</title> <link rel="stylesheet" href="master.css" type="text/css" media="screen" title="no title" charset="utf-8" > <script type="text/javascript" charset="utf-8" src="phonegap.0.9.4.js" ></script> <script type="text/javascript" charset="utf-8" > //show device information var deviceInfo = function (){ document.getElementById("platform").innerHTML = device.platform; document.getElementById("version").innerHTML = device.version; document.getElementById("uuid").innerHTML = device.uuid; document.getElementById("name").innerHTML = device.name; document.getElementById("width").innerHTML = screen.width; document.getElementById("height").innerHTML = screen.height; document.getElementById("colorDepth").innerHTML = screen.colorDepth; }; //listen the device ready event and get the device information. function init(){ document.addEventListener("deviceready", deviceInfo, true ); }
// get device contacts list by the contacts
API.
function get_contacts()
{
var obj = new ContactFindOptions();
obj.filter="";
obj.multiple=true ;
obj.limit=5;
navigator.service.contacts.find(["name","displayName",
"phoneNumbers",
"emails"],contacts_success, fail, obj);
}
function fail(fail)
{
alert(fail);
}
function contacts_success(contacts)
{
var result = "";
for (var i=0;i<contacts.length;i++)
{
result += "Name: " + contacts[i].name.givenName
+ ", displayName: "+
contacts[i].displayName + ",Email:"
+ contacts[i].emails[0].value;
result += "<br>";
}
document.getElementById("conlist").innerHTML
= result;
alert(contacts.length + ' contacts returned.'
);
}
</script>
</head>
<body onload="init();" id="stage"
class="theme" >
<h1>Welcome to PhoneGap!</h1>
<h2>this file is located at assets/index.html</h2>
<div id="info" >
<h4>Platform: <span id="platform"
> </span>,
Version: <span id="version" > </span></h4>
<h4>UUID: <span id="uuid" >
</span>,
Name: <span id="name" > </span></h4>
<h4>Width: <span id="width"
> </span>,
Height: <span id="height" >
</span>, Color Depth: <span id="colorDepth"
></span></h4>
</div>
<a href="#" class="btn large"
onclick="get_contacts();">
Get phone's contacts</a>
<a href="http://w3.ibm.com/w3odw/spg/index_default.html"
class="btn large"
>Access IBM Home Page</a>
<form action="http://x.x.x.x:8080/WebTest/index.jsp"
method="get" >
Username: <input type="text" name="name"
/>
<input type="submit" />
</form>
<div id="conlist" >
</div>
</body>
</html> |
×¢Ò⣺<formaction="http://x.x.x.x:8080/WebTest/index.jsp"method="get">Öеġ°x.x.x.x¡±Ó¦ÎªÔËÐÐ×ÅÒ»¸ö
context root Ϊ WebTest µÄ Web Ó¦ÓõÄÖ÷»úµØÖ·£¨IP »òÕß HostName£©£¬WebTest
ÏîÄ¿¿É´Ó±¾ÎĵµÌṩµÄÁ´½ÓÖÐÏÂÔØ¡£
²âÊÔÏîÄ¿
ÔÚÏîÄ¿Éϵã»÷ÓÒ¼ü£¬ÔÚ³öÏֵIJ˵¥ÖÐÑ¡Ôñ¡°Run As¡±£¬È»ºóÑ¡Ôñ¡°Android Application¡±£¬Eclipse
»áµ¯³ö´°¿ÚÈÃÄãÑ¡ÔñºÏÊ浀 AVD£¬Èç¹û»¹Ã»ÓÐÅäÖã¬Çë²ÎÕÕ¡°´î½¨ PhoneGap ¿ª·¢»·¾³¡±Ð¡½Ú½éÉܵķ½·¨´´½¨Ò»¸ö
AVD¡£Èç¹ûÑ¡ÔñÓà Android ÊÖ»ú²âÊÔ³ÌÐò£¬ÇëÈ·ÈÏÇý¶¯ÒѾװºÃ£¬USB Á¬½ÓÕý³££¬²¢ÇÒÕýÈ·ÉèÖÃÊÖ»úµÄ¿ª·¢µ÷ÊÔÑ¡ÏȻºóÑ¡Ôñ¡°Run
As--Android Application¡±¡£
ÔËÐнá¹ûչʾ
ͼ 6 ÏÔʾÁ˸ÃʵÀýÔÚ AVD ÉϵÄÔËÐнá¹û¡£
ͼ 6£ºÊ¾ÀýÔËÐнá¹û
µã»÷¡°Get phone ¡¯ s contacts¡± »á³öÏÖͼ 7 ºÍͼ 8 ËùʾµÄ½á¹û :
ͼ 7£ºÊ¾ÀýÔËÐнá¹û£¨¶Ô»°¿ò£©

ͼ 8£ºÊ¾ÀýÔËÐнá¹û£¨ÁªÏµÈËÐÅÏ¢£©
µã»÷¡°Access IBM Home Page¡±½«»á³öÏÖͼ 9 ËùʾµÄ»Ã棺
ͼ 9£ºÏÔʾ IBM Ö÷Ò³»Ãæ
ÔÚͼ 6 µÄÊäÈë¿òÖÐÊäÈë¡°Rendy¡±£¬È»ºóµã»÷¡°Submit¡±°´Å¥£¬»á³öÏÖͼ 10 ËùʾµÄÒ³Ãæ£º
ͼ 10£ºÌá½»Óû§ÃûºóÏÔʾ»Ãæ
´ÓÉÏÃæµÄʾÀý¿ÉÒÔ¿´µ½£¬¿ª·¢ÈËÔ±Ö»ÐèÕÆÎÕ HTML ºÍ JavaScript ¾Í¿ÉÒÔ¿ª·¢»ùÓÚ PhoneGap
µÄ¿ÉÒÔºÍÒÆ¶¯É豸µÄ±¾µØÓ¦Óý»»¥µÄÊÖ»ú Web Ó¦Ó㬼«´óµÄ¼ò»¯ÁËÒÆ¶¯Ó¦ÓõĿª·¢ÖÜÆÚ¡£
½áÊøÓï
±¾ÎÄ¶Ô PhoneGap ¿ªÔ´¿ò¼Ü×öÁ˼òµ¥½éÉÜ£¬²¢Í¨¹ýÒ»¸öʾÀý½éÉÜÁËÈçºÎ¿ª·¢»ùÓÚ PhoneGap ¿ò¼ÜµÄ¿ÉÒÔºÍÒÆ¶¯É豸µÄ±¾µØÓ¦Óý»»¥µÄ
Mobile Web Ó¦ÓᣠPhoneGap ÒÔËü¿ª·¢¼òµ¥¡¢¼æÈÝÐԺá¢Ö§³Ö±ê×¼»¯µÈÎÞÓëÂױȵÄÓÅÊÆÕýÔÚ²»¶ÏµÄÕ¼¾ÝÒÆ¶¯Ó¦Óÿª·¢µÄÊг¡£¬ËäÈ»ËüÒ²´æÔÚÔËÐÐËÙ¶ÈÂý¡¢UI
·´Ó¦ÑÓʱµÈÎÊÌ⣬µ«ÊÇËæ×ż¼ÊõµÄ½ø²½£¬ÕâЩ²»×ã»á²»¶ÏµÄ¸Ä½øºÍÏû³ý¡£
²¿ÊðºÍÔËÐÐʾÀý´úÂë
ÏÂÔØ´úÂëµ½±¾µØ¼ÆËã»ú£¬´ò¿ª Eclipse£¬µã»÷ File->import->Existing
Projects into Workspace Èçͼ 7 Ëùʾ£¬Ñ¡Ôñ archive file ²¢Ö¸¶¨µ½´úÂëËùÔڵı¾µØÂ·¾¶£¨Í¼
11£©£¬µã»÷ Finish °´Å¥¡£
ͼ 11£ºµ¼È빤³Ìµ½ Eclipse

ͼ 12£ºµ¼Èë Archive Îļþ
¹¤³Ìµ¼Èë Eclipse ºó»á×Ô¶¯±àÒ룬ÓÒ¼üµã»÷ÏîĿѡÔñ Run As?Android Application
¾Í¿ÉÒÔÔËÐгÌÐò¡£
ÓÃͬÑùµÄ·½·¨½« WebTest ÏîÄ¿µ¼Èë Eclipse ¹¤×÷¿Õ¼äÖУ¬ÓÒ¼üµã»÷ÏîĿѡÔñ
Run As?Run On Server
|