HTML5 + PhoneGap + Android

Similar documents
關於本書 l 3 PhoneGap Appcelerator Titanium Sencha Touch (wrapper framework) Native App PhoneGap Build Native App Hybrid App Java Objective-C Android SDK

12 第二章 RFID 12 RFID RFID RFID RFID RFID NFC NFC NFC RFID NFC RFID RFID NFC RFID NFC NFC NFC NFC WiFi WiFi WiFi NFC NFC 10 WiFiNFC NFC NFC WiFi

5-1 nav css 5-2

ii Vue Bootstrap 4 ES 6 Vue Vue Bootstrap 4 ES 6 Vue 2 vue html vue html vue Vue HTML 5 CSS ES 6 HTML 5 CSS Visual Studio Code h

Chapter V.S. PC

財金資訊-83期.indd

jQuery

Microsoft Word zw

互動網頁技術系列課程 HTML與CSS網站基礎設計 [12pt]

p.2 1 <HTML> 2 3 <HEAD> 4 <TITLE> </TITLE> 5 </HEAD> 6 7 <BODY> 8 <H3><B> </B></H3> 9 <H4><I> </I></H4> 10 </BODY> </HTML> 1. HTML 1. 2.

關於本書 Part 3 CSS XHTML Ajax Part 4 HTML 5 API JavaScript HTML 5 API Canvas API ( ) Video/Audio API ( ) Drag and Drop API ( ) Geolocation API ( ) Part 5

chapter 2 HTML5 目錄iii HTML HTML HTML HTML HTML canvas

学 院 人 才 培 养 分 项 自 评 报 告 结 果 汇 总 表 主 要 评 估 指 标 关 键 评 估 要 素 自 评 等 级 1.1 学 校 事 业 发 展 规 划 合 格 1. 领 导 作 用 1.2 办 学 目 标 与 定 位 合 格 1.3 对 人 才 培 养 重 视 程 度 合 格 1

Adobe AIR 安全性

29 知 識 管 理 c.1 1 樓 新 到 館 圖 書 區 30 知 識 管 理 c.2 1 樓 新 到 館 圖 書 區 31 編 劇 與 腳 本 設 計

Microsoft Word - PHP7Ch01.docx

iziggi

本 课 程 作 为 非 计 算 机 专 业 本 科 通 识 课 程, 是 一 门 理 论 和 实 践 紧 密 结 合 的 实 用 课 程, 内 容 包 括 计 算 机 基 础 部 分 和 程 序 设 计 部 分 计 算 机 基 础 部 分 涵 盖 计 算 机 软 硬 件 组 成 数 制 表 示 操

jQuery Mobile

舟山市人民政府办公室文件

中国软件2013校园招聘通知

PowerPoint 簡報

RUN_PC連載_8_.doc

總行總務室

Microsoft PowerPoint - 12 jQuery Mobile 事件處理方式

CH15.indd

状 态, 规 划 车 辆 行 驶 路 径, 可 进 入 网 站 充 电 服 务 栏 目 (2) 查 询 位 置 联 系 方 式 营 业 时 间 等 信 息, 可 进 入 网 站 服 务 指 南 栏 目 建 议 您 出 行 前 通 过 易 充 电 互 动 网 站 提 前 了 解 所 经 高 速 快 充

導讀 ASP.NET HTML ASP 第一篇 基礎篇第 1 章 認識 ASP.NET ASP.NET ASP.NET ASP.NET ASP.NET 第 2 章 認識 Visual Studio 20 開發環境 Visual Studio 20 Visual Studio 20 第二篇 C# 程式

目 錄 壹 甄 試 重 要 時 程 表... 1 貳 甄 試 類 別 報 考 資 格 條 件 筆 試 科 目 需 才 地 區 及 錄 取 名 額... 2 參 甄 試 方 式 肆 報 名 期 間 及 方 式 伍 測 驗 日 期 時 間 及 應 攜 帶 繳 交 證 件 資 料.

The golden pins of the PCI card can be oxidized after months or years

輕鬆學 Dreamweaver CS5 網頁設計..\Example\Ch0\ \.html..\example\ch0\ \mouse.txt..\example\ch0\ \ _Ok.html 學習重點 JavaScript 複製程式碼 mouse.txt Ctrl+C Ctrl+C 0-4

投影片 1

x 前言 Python Python ETL extract transform load Python Python / Python Python Python

RUN_PC連載_10_.doc

麻 省 理 工 學 院 是 在 西 元 2013 年 12 月 3 日 推 出 MIT App Inventor 2 網 站, 提 供 免 費 的 雲 端 服 務, 使 用 者 可 以 透 過 瀏 覽 器 來 開 發 Android 裝 置 應 用 程 式, 該 網 站 的 網 址 為 : http

目 錄 版 次 變 更 記 錄... 2 原 始 程 式 碼 類 型 之 使 用 手 冊... 3 一 安 裝 軟 體 套 件 事 前 準 備... 3 二 編 譯 流 程 說 明

Microsoft Word - 01.DOC

! 2000 CSSsprites.com Web FTP app 20% 80% getelementbyid() UI Facebook F8 Web CSSsprites.com Web JavaScript CSS React xi React UI UI 反應 UI 宣告 d

TPM BIOS Infineon TPM Smart TPM Infineon TPM Smart TPM TPM Smart TPM TPM Advanced Mode...8

APP 103 學 年 度 嶺 東 科 技 大 學 資 訊 網 路 系 專 題 研 究 報 告 嶺 東 中 華 民 國 一 四 年 五 月 1

清华大学2013年毕业生就业质量报告

untitled

epub83-1

Learning Java

Secoway SVN3000技术建议书V1

附 件 : 2009 年 度 国 家 精 品 课 程 名 单 一 本 科 国 家 精 品 课 程 ( 以 学 科 为 序, 共 400 门 ) 序 号 一 级 学 科 二 级 学 科 课 程 名 称 学 校 名 称 负 责 人 1 哲 学 哲 学 类 马 克 思 主 义 伦 理 学 安 徽 师 范

可 Web 编程的NativeUI 设计与实现

Microsoft Word - 104決算總說明_一__彙整_02.03主秘版.doc

6-1 Table Column Data Type Row Record 1. DBMS 2. DBMS MySQL Microsoft Access SQL Server Oracle 3. ODBC SQL 1. Structured Query Language 2. IBM

(Microsoft Word - wes _\246p\246\363\250\317\245\316LED\277O\305\343\245\334\252\254\272A.doc)

2015 年 1 月 15 日 Android APP 軟 眾 能 數 位 行 銷 股 1 年 專 科 台 北 市 中 山 區 2015 年 1 月 15 日 ios APP 軟 體 工 眾 能 數 位 行 銷 股 1 年 專 科 台 北 市 中 山 區 2015 年 1 月 15 日 軟 體 工

声 明 本 公 司 及 全 体 董 事 监 事 高 级 管 理 人 员 承 诺 不 存 在 任 何 虚 假 记 载 误 导 性 陈 述 或 重 大 遗 漏, 并 对 其 真 实 性 准 确 性 完 整 性 承 担 个 别 和 连 带 的 法 律 责 任 本 公 司 负 责 人 和 主 管 会 计 工

final

Arduino

生產力中心課程檢索結果

% % %

指導老師 : 陳建宏

JSON

13 根 据 各 种 网 络 商 务 信 息 对 不 同 用 户 所 产 生 的 使 用 效 用, 网 络 商 务 信 息 大 致 可 分 为 四 级, 其 中 占 比 重 最 大 的 是 ( A ) A 第 一 级 免 费 信 息 B 第 二 级 低 收 费 信 息 C 第 三 级 标 准 收 费

ASP.NET MVC Visual Studio MVC MVC 範例 1-1 建立第一個 MVC 專案 Visual Studio MVC step 01 Visual Studio Web ASP.NET Web (.NET Framework) step 02 C:\M

VB程序设计教程

<4D F736F F D20312D3120D5D0B9C9CBB5C3F7CAE9A3A8C9CFBBE1B8E5A3A92E646F63>

Spyder Anaconda Spyder Python Spyder Python Spyder Spyder Spyder 開始 \ 所有程式 \ Anaconda3 (64-bit) \ Spyder Spyder IPython Python IPython Sp

投影片 1

untitled

Microsoft Word - 第1章 Android基本概念.docx

职 位 类 别 : 测 试 工 程 师 工 作 经 验 或 实 习 经 历 : 不 限 岗 位 要 求 : 1. 本 科 及 其 以 上 学 历, 计 算 机 相 关 专 业 2014 届 毕 业 生 ; 2. 实 习 时 间 要 求, 尽 量 一 周 五 个 工 作 日 ; 3. 熟 悉 Wind

目 录 目 录 平 台 概 述 技 术 架 构 技 术 特 点 基 于 统 一 平 台 的 多 产 品 线 支 撑 先 进 性 安 全 性 开 放 性 高 性 能 和

序 言 本 专 业 人 才 培 养 方 案 以 适 应 市 场 需 求 为 目 标, 根 据 学 校 校 企 双 主 体 人 才 培 养 的 要 求 和 移 动 应 用 开 发 专 业 的 特 点 设 置 课 程 体 系, 体 现 了 课 程 为 市 场 服 务 的 特 点 本 专 业 要 求 学

1 1 大概思路 创建 WebAPI 创建 CrossMainController 并编写 Nuget 安装 microsoft.aspnet.webapi.cors 跨域设置路由 编写 Jquery EasyUI 界面 运行效果 2 创建 WebAPI 创建 WebAPI, 新建 -> 项目 ->

Transcription:

HTML5 + PhoneGap + Android 建國科技大學資管系饒瑞佶 2013/5 V1 2016/7 V2

開始前 建議您準備一台實體手機!

Native App Web App 與 Hybrid App 比較表 Native App Web App Hybrid App 特性 不同的行動裝置作業 可以跨行動裝置 將 Web App 與 系統各自提供開發需要的 SDK, 彼此並不相容 平台, 直接透過瀏覽器來執行 Native App 兩種開發方式混合使用, 截長補短 需要的 IT 技術 Java, Object-C 或.NET HTML5+CSS3+ 綜合前兩者 等 JavaScript 跨平台能力 低 強 強 使用者經驗與效 最佳 尚可 可 能 與行動裝置本機 最佳 弱 尚可 資源整合性 學習門檻 高 最低 低 上架銷售 可 不行 可

相關技術方塊 HTML5:HTML5 + jquery(javascript) + jquery Mobile PhoneGap(Cordova): 行動裝置硬體控制模組 HTML5 與 PhoneGap 透過瀏覽器的 webkit 串接 ( 中介者就是 JavaScript) 最後透過原始 SDK(Android ios Windows) 封裝上述兩者

PhoneGap 又稱 Apache Cordova ( 賣給 Adobe) 行動開發框架 (frame) 透過這個框架, 開發者可以專心寫 HTML, JavaScript 與 CSS, 與 Native 溝通的事就交給 PhoneGap 所以寫網頁的人也可以加入行動 App 的開發 支援 Android 與 ios 是網頁 /JS 與原生程式碼 (JAVA Object-C SWIFT C#) 間的溝通橋樑

串接示意圖 行動裝置本機硬體 GPS Compass Camera WiFi BT Native Code 控制 + Webkit HTML5 Browser Webkit Javascript interface Web App 6

安裝 PhoneGap/Cordova http://cordovawithandroidstudio.blogspot.tw/

安裝 PhoneGap 前準備 https://cordova.apache.org/docs/en/latest/gu ide/cli/ 安裝 JDK 安裝 Android Studio with SDK 安裝 nodejs(https://nodejs.org/en/) Nodejs 建議不要安裝在路徑文字有空白的目錄上 安裝 git, 安裝後建議登出 windows 再登入, 讓 Path 生效

輸入 node -v 安裝 nodejs 後

http://git-scm.com/ 安裝 git

安裝 git 後 登出 windows 後再登入, 讓 path 生效 輸入 git --version

安裝 PhoneGap 確認 nodejs 與 git 安裝完成後 輸入 npm install -g cordova

將 C:\Users\ 使用者代號 \AppData\Roaming\npm 加入 path 登出 windows 後再登入, 讓 path 生效

建立 PhoneGap Project 輸入 cordova create d:\cordova rcjao.ctu.im MyCordova 正確安裝後的訊息

D:\Cordova 實際目錄內容 目前是空的

可能發生

Update cordova 需要一點時間

After update

專案中加入 Android 平台 切換到專案目錄 cd Cordova 輸入 cordova platform add android

Add android platform

platforms 目錄 出現 android 目錄與相關檔案

執行專案 確認已安裝行動裝置的 adb USB 驅動, 且行動裝置正確連接到電腦 切換到專案目錄 輸入 cordova run

需要一段時間

In Device 如果你在裝置上看到這個畫面, 那就成功了!

後續 直接修改 d:\cordova 專案內的檔案 需要修改的是 www 目錄內的 index.html 與 www\js 內的 index.js 如果要調整 Android 那就需要改 platforms\android

將 PhoneGap 專案 載入 Android Studio

Import Project

選擇 d:\cordova\platforms\android

假如出現

After few minutes

run

In device 跟之前執行結果一致

整合 jquery Mobile

先整合 jquery 與 jquery Mobile 加入 jquery 與 jquery 的相關 js 到 assets\www 內 加入下列 tag 到 assets\www\index.html 中 <script type="text/javascript" src="jquery-2.2.4.min.js"></script> <link rel="stylesheet" href="jquery.mobile-1.4.5.min.css"> <script type="text/javascript" src="jquery.mobile-1.4.5.min.js"></script>

修改 index.html <html> <head> <meta charset="utf-8" /> <meta name="viewport" content="width=device-width, initial-scale=1"/> <script type="text/javascript" src="jquery-2.2.4.min.js"></script> <link rel="stylesheet" href="jquery.mobile-1.4.5.min.css"> <script type="text/javascript" src="jquery.mobile-1.4.5.min.js"></script> <script type="text/javascript" charset="utf-8" src="cordova.js"></script> <script type="text/javascript" charset="utf-8" src="js/index.js"></script> </head> <body> <div data-role="page"> <div data-role="header"> <h1>phonegap 測試 </h1> </div> <div data-role="content"> <ul data-role="listview" data-inset="true"> <li><a href="#"> 選項 1</a></li> <li><a href="#"> 選項 2</a></li> <li><a href="#"> 選項 3</a></li> </ul> </div> <div data-role="footer"> <h1>2013/5/20</h1> </div> </div> </body> </html>

result

提醒 到這裡只是載入 HTML 與 jquery/jquery Mobile, 尚未碰到 PhoneGap 要可以執行 PhoneGap, 需要有 cordova.js 1 個 res/xml 的目錄, 裡面需要一個檔案 config.xml 修改 AndroidManifest.xml 載入需要的 plugins

使用時 主要是修改 index.html 加入需要的新版面 html 加入對應的處理事件 javascript 程式, 例如 index.html 對應的是 www\js\index.js

實際應用 (I) GPS 定位

建立 Locator 專案 調用 GPS 定位 cordova create d:\locator rcjao.ctu.im Locator 加入 android platform cordova platform add android

加入 plugins cordova plugin add https://git-wipus.apache.org/repos/asf/cordova-plugingeolocation.git

Locator 專案載入 Android Studio 自動加入權限

修改 index.html 可以載入 Android studio 後修改 <body> <div class="app"> <div id="messagediv"></div> </div> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="js/index.js"></script> <script type="text/javascript">app.initialize();</script> </body> 呼叫 index.js 內的 initialize() 函式

修改 www\js\index.js ondeviceready: function() { app.display("locating..."); app.watchlocation(); },

watchlocation: function() { // onsuccess Callback // 成功取得 GPS 座標 function onsuccess(position) { app.clear(); app.display('latitude: ' + position.coords.latitude.tofixed(6)); app.display('longitude: ' + position.coords.longitude.tofixed(6)); app.display(new Date().toString()); } // 未取得 GPS 座標 // function onerror(error) { app.display(error.message); } // 設定 30 秒逾時則顯示錯誤 // var watchid = navigator.geolocation.watchposition(onsuccess, onerror, { timeout: 30000, enablehighaccuracy: true }); },

display: function(message) { var label = document.createtextnode(message), linebreak = document.createelement("br"); messagediv.appendchild(linebreak); // add a line break messagediv.appendchild(label); // add the text }, clear: function() { messagediv.innerhtml = ""; }

結果

實際應用 (II) 照相機

使用目前專案 加入相機 plugin cordova plugin add cordova-plugin-camera

Android 專案會自動更新加入 plugin

使用 Camera 測試看看 Index.html 上加入連結 takephoto.html <body style="font-size: 1.4em;"> <a href="takephoto.html">camera</a> <br> <div class="app"> <div id="messagediv"></div> </div> <script type="text/javascript" src="cordova.js"></script> <script type="text/javascript" src="js/index.js"></script> <script type="text/javascript"> app.initialize(); </script> </body>

takephoto.html <body> <div data-role="page"> <div data-role="header"> <h1>phonegap 照相 </h1> </div> <div data-role="content"> <a data-role="button" data-theme="b" id="take_photo"> 開始拍照 </a> <img style="display:none;width:180px;height:180px;" id="smallimage" src="" /> </div> <div data-role="footer"> <h1>2013/5/20</h1> </div> </div> </body> 啟動照相 顯示照片

<script language="javascript"> $(document).ready(function(){ var picturesource; // 圖片來源 var destinationtype; // 設定資料回傳的格式 // 等待 PhoneGap 載入 document.addeventlistener("deviceready",ondeviceready,false); // PhoneGap 載入完畢 function ondeviceready() { picturesource=navigator.camera.picturesourcetype; destinationtype=navigator.camera.destinationtype; } // 使用手機上的相機拍照 $('#take_photo').click(function(){ navigator.camera.getpicture(onphotodatasuccess, onfail, { quality: 50, destinationtype: Camera.DestinationType.FILE_URI }); }); // 成功取得照片之後呼叫這個 function function onphotodatasuccess(imageuri) { // 顯示已拍攝的照片 $('#smallimage').attr("src",imageuri); $('#smallimage').show(); } // 當有錯誤發生時觸發此 function function onfail(message) { alert('failed because: ' + message); } }); </script>

結果

結果