成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

PhoneGap+jQuery Mobile打造本地化Web App

移動開發
我們沒必要學習苦行僧那樣,用記事本來打代碼.目前而言呢,PhoneGap的IDE工具最好的當然是Dreamweaver CS 5.5.不過,我這里使用Eclipse作為我的開發IDE,因為之前使用過Dreamweaver CS 5.5 ,這次就換個IDE工具.

Eclipse 的配置

1,一站式新建項目 phonegap + jqm

http://svn.codespot.com/a/eclipselabs.org/mobile-web-development-with-phonegap/tags/r1.2/download/

這個插件還是很給力的,已經支持默認支持最新版本的phonegap,jqm,sencha

安裝完以后選擇這個圖標

20120210200731417.png

2,選擇要建何種類型的phoneGap (1),默認已經支持直接創建最新版本的phoneGap

(2),這個插件支持兩大移動js框架jqm & Sencha Touch,當然..這兩個框架只能二選一了,你不選也行…

(3),我這里選擇我最為熟悉的jQm框架,默認已經支持最新版本了

201202102007388669.png

3,接著,創建android項目即可

201202102007472134.png

接下來就不啰嗦了…

完成以后:項目結構,activity都已經寫好的了..

201202102007578981.png

代碼也已經寫好了.

201202102008107859.png

注意:新建完以后,可能androidmainifest會報錯,你把報錯的那行代碼刪掉即可,你也可以根據那個代碼要求找一個支持xlarge包的android版本(4.0吧)(貌似2.2沒有這玩意),我這里省事直接刪掉算了…

201202102008139826.png

自帶例子簡單介紹

在新建一個page,想使用插件幫你打包好的API你需要以下步驟

1,準備JS文件,滑輪到index.html文件最后幾行;

//這個JS是必須的,調用的是設備的初始化//以下API自己按照自己的喜好調用和修改吧

2,在body上調用init()方法,具體使用參見device.js.

3,順便你寫了…

例子演示

感覺,這個跟這個jqm一起的例子,個人感覺比官方那個好很多…截個圖,結束吧…

201202102008219571.png

#p#

前言

上一章中,我們討論了環境的配置,這本章中我們,寫一個小模塊來貫通學習,phonegap對攝像頭的調用,已經phonegap對于拍下來的照片的處理,已經,使用本地數據庫保存我們的數據,讓在程序重新運行的時候能夠保留我們的結果.先說明一下,為了,減少工作量,很多地方由于,官方文檔已經很詳細了我就難得在描述了,如果有些地方,沒有而官方文檔也沒有的話,可以來問我...

例子設計

我們一般注冊都有一個,上傳圖像的模塊,以前,用電腦注冊的話,這個頭像就比較麻煩了,不過,我們用手機的話就基本沒這個問題了,這個例子就是,使用phonegap 調用攝像頭拍下我們的頭像,上傳到服務器,然后,也保存到本地里面,方便加載.

原型設計:

顯示用的主頁

201202141443568791.png

調用拍照的頁面

201202141444022450.png

為了,突顯出我們用jqm的好處的,增加一個swip事件來控制,頁面的切換

201202141444075519.png

代碼編寫

1,寫個模板,方便,我們以后的代碼的重用

  1. <!DOCTYPE html> 
  2. <html> 
  3. <head> 
  4.     <meta charset="UTF-8"> 
  5.     <!--自適應界面,如果出現,在某些設備出現界面偏小的話,檢查一下有沒有加入這句 --> 
  6.     <meta http-equiv="Content-type" name="viewport" 
  7.           content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no, width=device-width"> 
  8.     <!--樣式--> 
  9.     <link rel="stylesheet" href="jquery.mobile/jquery.mobile-1.0.1.min.css" /> 
  10.     <!--end--> 
  11.     <!--導入的js框架--> 
  12.     <script type="text/javascript" charset="utf-8" src="phonegap-1.4.1.js"></script> 
  13.     <script src="jquery.mobile/jquery-1.6.4.min"></script> 
  14.     <script src="jquery.mobile/jquery.mobile-1.0.1.min.js"></script> 
  15.     <!--end--> 
  16.     <!--自己寫的js--> 
  17.     <script type="text/javascript"> 
  18.  
  19.  
  20.     </script> 
  21.     <!--end--> 
  22. </head> 
  23. <body onload="init();"> 
  24. <div data-role="page" id="home"> 
  25.     <div data-role="header"> 
  26.         <h1>Hello,World</h1> 
  27.     </div> 
  28.     <div data-role="content" id="content"> 
  29.         <h1>content</h1> 
  30.     </div> 
  31.     <div data-role="footer"> 
  32.         <h1>footer</h1> 
  33.     </div> 
  34. </div> 
  35.  
  36. <!--import custom library --> 
  37. <script type="text/javascript" charset="utf-8" src="apis/camera.js"></script> 
  38. <script type="text/javascript" charset="utf-8" src="apis/device.js"></script> 
  39. <script type="text/javascript" charset="utf-8" src="apis/storage.js"></script> 
  40. <!--end--> 
  41. </body> 
  42. </html> 

2,模板寫好了,就開始我們實際代碼的編寫吧.

1,首先,編寫我們的device.js文件進行對應用的初始化工作

  1. function init() { 
  2. document.addEventListener("deviceready", onDeviceReady, true); 

2,然后接著寫初始化用干的事情

  1. var onDeviceReady = function() { 
  2.     console.log("deviceready event fired"); 
  3.       
  4. // api-camera  Photo URI 
  5.     pictureSource=navigator.camera.PictureSourceType; 
  6.     destinationType=navigator.camera.DestinationType; 
  7.     //這里是初始化主頁,如果,已經有頭像的話,就加載 
  8.     var saveImage = kget("image"); 
  9.     if(saveImage){ 
  10.          //console.log("have image"+saveImage); 
  11.           var cameraImage = document.getElementById('cameraImage'); 
  12.           cameraImage.style.visibility = 'visible'
  13.           cameraImage.src = "data:image/jpeg;base64," + saveImage; 
  14.            
  15.     } 
  16.     //系統的事件,按需求實現自己的回調方法,這里就默認了.. 
  17.     document.addEventListener("searchbutton", onSearchKeyDown, false);   
  18.     document.addEventListener("menubutton", onMenuButtonDown, false); 
  19.     document.addEventListener("pause", onEventFired, false); 
  20.     document.addEventListener("resume", onEventFired, false); 
  21.     document.addEventListener("online", onEventFired, false); 
  22.     document.addEventListener("offline", onEventFired, false); 
  23.     document.addEventListener("backbutton", onEventFired, false); 
  24.     document.addEventListener("batterycritical", onEventFired, false); 
  25.     document.addEventListener("batterylow", onEventFired, false); 
  26.     document.addEventListener("batterystatus", onEventFired, false); 
  27.     document.addEventListener("startcallbutton", onEventFired, false); 
  28.     document.addEventListener("endcallbutton", onEventFired, false); 
  29.     document.addEventListener("volumedownbutton", onEventFired, false); 
  30.     document.addEventListener("volumeupbutton", onEventFired, false); 
  31. }; 

這樣我們的devices.js就簡單的寫完了.

3,寫UI界面,這里也很簡單

  1. <body> 
  2.         <div data-role="page" id="home"> 
  3.             <div data-role="header"> 
  4.                 <h1>個人信息</h1> 
  5.                 <a href="#setting" data-icon="home" id="intro" class="ui-btn-right">設置</a> 
  6.             </div> 
  7.             <div data-role="content" id="homeContent"> 
  8.                 <p>頭像</p> 
  9.                 <img id="cameraImage" src="" /> 
  10.                 <!--這一塊的動態實現你會圖片的讀取和存儲,這個就很簡單了..這里就不做介紹了..--> 
  11.                 <p>名字:阿柴</p> 
  12.                 <p>聯系方式:xxxxx</p> 
  13.             </div> 
  14.         </div> 
  15.         <div data-role="page" id="setting"> 
  16.             <div data-role="header"> 
  17.                 <h1>頭像設置</h1> 
  18.             </div> 
  19.             <div data-role="settingContent"> 
  20.                 <p>頭像</p> 
  21.                 <img id="settingImage" src="" /> 
  22.                 <div class="ui-grid-a"> 
  23.                    <div class="ui-block-a"><div  data-role="button" id="takePhoto">take photo</div></div> 
  24.                   <div class="ui-block-b">  <div  data-role="button"  id="upload">upload</div></div> 
  25.                 </div> 
  26.                  
  27.             </div> 
  28.         </div> 
  29.         <script type="text/javascript" charset="utf-8" src="apis/camera.js"></script> 
  30.         <script type="text/javascript" charset="utf-8" src="apis/device.js"></script> 
  31.         <script type="text/javascript" charset="utf-8" src="apis/storage.js"></script> 
  32.     </body> 

上面就是頁面的代碼,就兩個DIV的page,學過,jqm的朋友應該對此毫無壓力了...

4,開始寫點jqm的事件js,寫在模板那個head,自己的那個塊里面

  1. <script type="text/javascript"> 
  2.             //在頁面初始化的時候,利用phonegap初始化我們的應用 
  3.             $('body').live("pageinit",function(){ 
  4.                init(); 
  5.             }); 
  6.             //為頁面添加swip 事件 
  7.             $("#home").live("pageinit",function(){ 
  8.                 //當我們向左滑動的時候,進入setting頁面 
  9.                 $('#homeContent').bind("swipeleft",function(){ 
  10.                   $.mobile.changePage('#setting', { transition: "fade"}); 
  11.                 }); 
  12.  
  13.             }); 
  14.             $('#setting').live("pageinit",function(){ 
  15.                 //顯示頭像圖片 
  16.                 var saveImage = kget("image"); 
  17.                 if(saveImage){ 
  18.                     //console.log("have image"+saveImage); 
  19.                     var cameraImage = document.getElementById('settingImage'); 
  20.                     cameraImage.style.visibility = 'visible'
  21.                     cameraImage.src = "data:image/jpeg;base64," + saveImage; 
  22.  
  23.                 } 
  24.                 //當我們向右滑動的時候,回到主頁 
  25.                 $('#settingContent').bind("swiperight",function(){ 
  26.                     $.mobile.changePage('#home',{ transition: "fade"}); 
  27.                 }); 
  28.                 //進行拍照 
  29.                 $('#takePhoto').bind("tap",function(){ 
  30.                     take_pic(); 
  31.                 }); 
  32.             }); 
  33.  
  34.         </script> 

這塊代碼的就要有一點熟悉jqm的人寫好了,有啥不懂的先看一下jqm的官方文檔吧...

5,寫了這么久,都沒怎么用到phonegap,接下來就是phonegap大展身手的時刻到了..

phonegap的照片類型

還記得我們在devices.js定義的兩個變量嗎?

  1. //這個是設置圖片是調用攝像頭還是,本機相冊,默認是調用攝像頭 
  2. //更多參見官方文檔 
  3. pictureSource=navigator.camera.PictureSourceType; 
  4. //這個是,當phonegap 獲取圖片的時候,我們希望獲取的是路徑?還是 
  5. //給予base64編碼的圖像格式 
  6. destinationType=navigator.camera.DestinationType; 

以上就是等下,可能要用到的參數介紹

新建一個camera.js,

  1. function take_pic() { 
  2.     navigator.camera.getPicture(onPhotoDataSuccess, function(ex) { 
  3.         alert("Camera Error!"); 
  4.     }, { 
  5.     //這里的更多設置參數參見官方文檔 
  6.         quality : 50, 
  7.     targetWidth: 320, 
  8.     targetHeight: 240, 
  9.     //用data_url,而不用file_url的原因是,file_url在不同平臺有差異 
  10.     //不好編寫,而用data_url就可以不考慮這個,加上,拍張圖片,不要太好的話,就幾十k存到數據庫里面也沒多慢.. 
  11.     destinationType:destinationType.DATA_URL 
  12.         }); 
  13. function onPhotoDataSuccess(imageData) { 
  14.     console.log("* * * onPhotoDataSuccess"); 
  15.     var cameraImage = document.getElementById('cameraImage'); 
  16.     cameraImage.style.visibility = 'visible'
  17.     //把圖片存進數據庫里面 
  18.     kset("image",imageData); 
  19.    cameraImage.src = "data:image/jpeg;base64," + imageData; 
  20.      

接下來,新建一個storage.js,用來簡單封裝storage的api

  1. function kset(key, value){ 
  2.     console.log("key"+key+"value"+value); 
  3.     window.localStorage.setItem(key, value); 
  4.  
  5. function kget(key){ 
  6.     console.log(key); 
  7.     return window.localStorage.getItem(key); 
  8.  
  9. function kremove(key){ 
  10.     window.localStorage.removeItem(key); 
  11.  
  12. function kclear(){ 
  13.     window.localStorage.clear(); 
  14.  
  15. //測試更新方法 
  16. function kupdate(key,value){ 
  17.     window.localStorage.removeItem(key); 
  18.     window.localStorage.setItem(key, value); 

以上就是這次的內容了.

責任編輯:佚名 來源: 互聯網
相關推薦

2012-05-14 17:10:50

iOS

2012-05-13 13:15:54

IOS

2009-05-11 09:15:20

MozillaPrism瀏覽器

2013-11-12 10:15:45

App翻譯本地化

2012-06-08 10:48:31

商務社交

2011-05-25 10:13:09

WordPressJavaScript

2011-05-30 17:11:08

測試策略

2009-05-11 09:40:10

PrismMozilla本地化

2023-09-26 18:16:57

2011-05-26 17:28:48

軟件本地化測試

2014-06-19 10:26:15

Mobile AppWeb App

2011-09-05 14:42:01

PhoneGap框架

2013-08-07 15:03:26

2022-09-21 11:51:26

模塊化應用

2013-03-27 09:50:53

HTML5游戲Android開發

2025-02-21 15:56:42

DeepSeekRAGAI

2017-11-30 14:44:41

語言代碼文件

2010-03-09 09:33:04

Windows Emb

2011-06-08 17:07:55

本地化測試

2020-09-21 08:34:28

數據中心
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 大陆一级毛片免费视频观看 | 日韩一区中文字幕 | 老司机久久 | 久久久久国产一级毛片 | 亚洲欧洲一区二区 | 91国产视频在线 | 亚洲成人在线免费 | 久久国产区 | 懂色av一区二区三区在线播放 | 亚洲日本欧美 | 一区二区三区四区在线视频 | 午夜在线 | 91免费在线 | 国产精品高潮呻吟久久 | 欧美中文字幕在线观看 | 久久999| 欧美一级二级三级视频 | 天天草天天射 | 一级黄色毛片 | 久久精品一 | 在线国产一区二区 | 99精品福利视频 | 欧美一区在线视频 | 中文字幕在线精品 | 亚洲人免费视频 | 免费精品视频一区 | 久久精品国产清自在天天线 | 亚洲男人的天堂网站 | 操久久| 久久久久久国产一区二区三区 | h视频在线免费 | 日韩精品福利 | 又黄又色| 在线免费观看成年人视频 | 91看片免费 | 福利av在线 | 久久久精品一区 | 亚洲一区二区三区在线观看免费 | 激情av在线 | 成人教育av| 91在线精品一区二区 |