使用jquery mobile 和phoneGap开发安卓应用

 

jQuery Mobile:为移动设备提供的高度统一的 UI 框架

    Jquery mobile构建于Jquery 以及 Jquery UI类库之上,为前端开发人员提供了一个兼容所有主流移动设备平台的统一UI接口系统。拥有出色的弹性,轻量化以及渐进增强特性与可访问性。jQuery Mobile框架可以轻松的帮助我们实现非常好看的、可跨设备的Web应用程序。其官网地址为:http://jquerymobile.com/

第一个jQuery Mobile页面

jQuery Mobile 为我们提供了许多模板可以方便的创建页面。我们先创建一个最基本的页面,它包含一个标题栏和内容:

   1:  <!DOCTYPE html> 
   2:  <html> 
   3:  <head> 
   4:      <title>My Page</title> 
   5:      <meta name="viewport" content="width=device-width, initial-scale=1"> 
   6:      <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
   7:      <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
   8:      <script src="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.js"></script>
   9:  </head> 
  10:  <body> 
  11:   
  12:  <div data-role="page">
  13:   
  14:      <div data-role="header">
  15:          <h1>My Title</h1>
  16:      </div><!-- /header -->
  17:   
  18:      <div data-role="content">    
  19:          <p>Hello world</p>        
  20:      </div><!-- /content -->
  21:   
  22:  </div><!-- /page -->
  23:   
  24:  </body>
  25:  </html>

 

将其保存为HTML格式,可以直接在浏览器中打开我们就可以看到第一个JQM的页面了。

      image 

    有没有一点安卓应用的意思?我们可以直接通过安卓手机浏览器来访问这个页面,当然JQM不仅仅这么简单,我们会逐步的学习和讨论的。

使用PhoneGap使web应用本地化

 

   大家也许会问,我们用jqm创建的只是一个页面,我只能用浏览器去访问它,能不能够使它离线情况我都能够访问、更甚者我可以可以让它变成一个安卓的应用?当然可以,PhoneGap就可以帮我完成这样的愿望。

    PhoneGap是一个用基于HTML,CSS和JavaScript的,创建移动跨平台移动应用程序的快速开发平台。它使开发者能够利用iPhone,Android,Palm,Symbian,WP7,Bada和Blackberry智能手机的核心功能——包括地理定位,加速器,联系人,声音和振动等,此外PhoneGap拥有丰富的插件,可以以此扩展无限的功能。PhoneGap是免费的,但是它需要特定平台提供的附加软件,例如iPhone的iPhone SDK,Android的Android SDK等,也可以和DW5.5配套开发。使用PhoneGap只比为每个平台分别建立应用程序好一点点,因为虽然基本代码是一样的,但是你仍然需要为每个平台分别编译应用程序。

官网为:http://phonegap.com/

准备工作

  • Eclipse 3.4+

在Eclispse中建立第一个phonegap应用

  1. 1、新建一个安卓项目

  2.        这个很简单,不需要我多说什么。

  3. 2、引入cordova-2.3.0.jar

  4.       cordova是phonegap的核心包,只有先将其导入到工程中才能够使用phonegap的功能。

  5.     image

  6. 3、将jqm页面放置于assets/www/目录下

  7.       别忘了我们的初衷哦,可以把项目中的Activity删掉了,我们这次只是做点jqm页面罢了,用不到安卓原生应用。

  8.     image

  9. 4、新建一个继承DroidGap的类

  10.    1:  import org.apache.cordova.*;
       2:   
       3:  import com.devil.dropdowndemo.R;
       4:   
       5:  public class Outer extends  DroidGap
       6:  {
       7:      @Override
       8:      public void onCreate(Bundle savedInstanceState)
       9:      {
      10:          super.onCreate(savedInstanceState);
      11:          Log.d("DroidGap", "DroidGap --> Started ");
      12:          super.setIntegerProperty("splashscreen", R.drawable.splash);
      13:          super.loadUrl("file:///android_asset/www/index.html", 3000);
      14:      }
      15:  }

onCreate方法用于定义启动的主页面,其中 super.setIntegerProperty()用于定义启动之前的引导页面,可以不需要该行代码。

super.loadUrl()指定了主页面的位置为asset/www/目录下的index.html文件,第一次启动延时3秒。

5、修改AndroidManifest.xml,增加权限设置

   1:   <activity
   2:              android:name="com.devil.Outer"
   3:              android:configChanges="orientation|keyboardHidden"
   4:              android:label="@string/app_name"
   5:               >
   6:              <intent-filter>
   7:                  <action android:name="android.intent.action.MAIN" />
   8:   
   9:                  <category android:name="android.intent.category.LAUNCHER" />
  10:              </intent-filter>
  11:          </activity>
  12:      </application>
  13:   
  14:      <supports-screens
  15:          android:anyDensity="true"
  16:          android:largeScreens="true"
  17:          android:normalScreens="true"
  18:          android:resizeable="true"
  19:          android:smallScreens="true"
  20:          android:xlargeScreens="true" />
  21:   
  22:      <uses-permission android:name="android.permission.CAMERA" />
  23:      <uses-permission android:name="android.permission.VIBRATE" />
  24:      <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
  25:      <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
  26:      <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
  27:      <uses-permission android:name="android.permission.INTERNET" />
  28:      <uses-permission android:name="android.permission.RECEIVE_SMS" />
  29:      <uses-permission android:name="android.permission.RECORD_AUDIO" />
  30:      <uses-permission android:name="android.permission.RECORD_VIDEO" />
  31:      <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
  32:      <uses-permission android:name="android.permission.READ_CONTACTS" />
  33:      <uses-permission android:name="android.permission.WRITE_CONTACTS" />
  34:      <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
  35:      <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
  36:      <uses-permission android:name="android.permission.GET_ACCOUNTS" />
  37:      <uses-permission android:name="android.permission.BROADCAST_STICKY" />

OK,我们的jqm和phoneGap的第一个安卓应用就这么搭好了,来看看运行效果吧。

image

 

结语

    关于是安卓原生好还是用web好,这样的问题不是我们所要讨论的,正如B/S和C/S结构一样,每一种技术都有它存在的价值。用HTML5代替原生APP最近在逐渐的火起来,由于HTML5的“Write Once,Run Everywhere”的特性,它在电商领域替代许多的原生应用。对于我来说,这只是诸多路途中的一种,因为我需要用它来完成工作,所以需要以它作为起点然后一点一点的学习。不管是安卓原生还是web、java还是c#都是我们实现理想的手段,只有对程序哪永恒不变的热爱,才是我们最值的骄傲的。

posted @ 2013-01-24 22:13  百丨末ヅ缘灬  阅读(483)  评论(1编辑  收藏  举报