狠狠撸

狠狠撸Share a Scribd company logo
Android vs EPUB
                           Cd Chen
                  http://www.cdchen.idv.tw/




12年12月21?日星期五
陳永昇 (Cd Chen)               A
                http://www.cdchen.idv.tw/   b
                                            o
                學歷:國?立台中科技?大學               u
                經歷:
                                            t
                 聯成電腦講師
                 恆逸資訊講師
                現職:
                 乃師實業技術總監
                證照:
                 RHCE / LPIC / NCLP
                 MCSA / MCSE
                 OCPJP / OCPJWCD
                 TCSE / NSPA




12年12月21?日星期五
?大纲

                ? ?行動 App 的基礎觀念
                ? EPUB 的介紹
                ? WebView 元件
                ? 實作 EPUB Reader

12年12月21?日星期五
我假设您已经...


                ? 熟悉 Java 程式語?言
                ? 具備 Android 開發的經驗


12年12月21?日星期五
?行動 App 的基礎觀念



12年12月21?日星期五
什麼是?行動 App??



12年12月21?日星期五
12年12月21?日星期五
12年12月21?日星期五
http://www.appleoutsider.de/2012/04/27/q12012-pc-vendor-marketshare/




12年12月21?日星期五
http://mrpogson.com/tag/market-share/



12年12月21?日星期五
http://wpcdn3.padgadget.com/wp-content/uploads/2012/07/evercore-120716-550x283.jpeg




12年12月21?日星期五
?行動 App 類型



12年12月21?日星期五
12年12月21?日星期五
Web-Page App        Native App
           ? Web 2.0           ? Web Service
           ? HTML 5              ? JSON-RPC
           ? CSS 3               ? XML-RPC
           ? JavaScript          ? SOAP
           ? ...               ? Streaming
                               ? ...

                          HTML / HTTP


12年12月21?日星期五
12年12月21?日星期五
MVC 設計模式



12年12月21?日星期五
12年12月21?日星期五
EPUB



12年12月21?日星期五
淺談電?子書格式



12年12月21?日星期五
优点          缺點

                             市佔率?高     無中?文?支援
                   azw       ?支援語?音    僅?支援 Kindle

                mobi / prc   ?支援度廣     無中?文?支援

                             檔案輕巧      無精密排版
                   lrf       翻?頁快速     中?文?支援差
                              精確排版       檔案?大
                   pdf       中?文?支援佳     翻?頁慢


12年12月21?日星期五
什麼是 EPUB??



12年12月21?日星期五
? Electronic
                  Publication

                ? 國際數位出版論壇
                  (IDPF, International
                  Digital Publishing
                  Forum)




12年12月21?日星期五
EPUB 优点
                ? 免費且開放
                ? 可重新排版與可重新縮放的字型
                ? ?支援?行列圖?片
                ? 嵌?入式 Metadata
                ? ?支援 DRM
                ? ?支援 CSS
                ? ?支援 影?音內容
12年12月21?日星期五
EPUB 的版本

                ? 2007/09 - EPUB Release
                ? 2009/08 - Start EPUB Working
                ? 2010/07 - EPUB 2.0.1 Draft
                ? 2010/09 - EPUB 2.0.1 Release
                ? 2011/10 - EPUB 3.0 Release (Current)

12年12月21?日星期五
EPUB 2 vs EPUB 3
                      功能               技術


                ??支援多媒體格式        ?增加對 HTML5/CSS3
                ??支援數學格式         的?支援
                ??支援複雜本?文內容      ??支援嵌?入字型
                ??支援?文字朗讀        ??支援 SVG 圖檔
                ??支援?非羅?馬?文字     ??支援 MathML
                ??支援 DAISY 有聲書


12年12月21?日星期五
EPUB 格式



12年12月21?日星期五
? ZIP 壓縮檔
                ? 附檔名可使?用 .epub 或 .zip



12年12月21?日星期五
EPUB 三種層級

                ? XHTML ?文件 (XHTML Document)
                ? 套件档 (Package Files)
                ? 容器档 (Container Files)


12年12月21?日星期五
XHTML ?文件

                ? EPUB 的內容
                ? 類似 (幾乎相同) HTML
                ? EPUB3 可使?用 HTML5


12年12月21?日星期五
http://slides.html5rocks.com/



12年12月21?日星期五
套件档
                ? /mimetype
                 ? ?一定為 application/epub+zip
                ? /DIR/NAME.opf
                 ? 作者、發?行者、...
                ? /DIR/NAME.ncx
                 ? 電?子書的組織架構 (章節、段落、...)
12年12月21?日星期五
容器档

                ? META-INF/container.xml
                ? 儲存電?子書檔案的架構
                 ? 檔案路徑、DRM 宣告、...


12年12月21?日星期五
EPUB 製作?工具



12年12月21?日星期五
商业软体

                ? Adobe InDesign
                ? IGP: Digital Publisher
                ? Apple Pages
                ? QuarkXPress
                ? oXygen XML Editor

12年12月21?日星期五
OpenSource

                ? Sigil
                ? Booktype
                ? calibre


12年12月21?日星期五
转换程式

                ? Word2EPUB
                ? ePub Maker
                ? DocBook


12年12月21?日星期五
WebView



12年12月21?日星期五
WebView 的介紹



12年12月21?日星期五
?   Android 內建的簡易版瀏覽器

                ?   ?支援 HTML5 / CSS3 / JavaScript

                ?   可?自定瀏覽器的使?用介?面

                ?   可定義內容處理的?方式

                ?   可組態執?行時期的设定

                ?   可與 Server 端的 JavaScript 互動



12年12月21?日星期五
使?用?方法

                ? 设定 AndroidManifest.xml
                ? 配置 layout 檔
                ? 撰寫程式
                ? 執?行與測試

12年12月21?日星期五
设定
                ? 需開啟下列權限:
                 ? android.permission.INTERNET
        <manifest ... >
            <uses-permission
        android:name="android.permission.INTERNET" />
            ...
        </manifest>



12年12月21?日星期五
配置 Layout

  <?xml version="1.0" encoding="utf-8"?>
  <WebView
      xmlns:android="http://schemas.android.com/apk/
  res/android"
      android:id="@+id/webview"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
  />




12年12月21?日星期五
撰寫程式



12年12月21?日星期五
WebView

                ? android.webkit.WebView
                ? 重要 API
                 ? loadData()
                 ? loadUrl()
                 ? zoomIn() / zoomOut()

12年12月21?日星期五
WebView (cont)

                ? 導覽 (Navigation) API
                 ? canGoBack() / goBack()
                 ? canGoForward() / goForward()
                 ? canGoBackOrForward() /
                   goBackOrForward()



12年12月21?日星期五
? 取得 WebView 物件
                ? 指定網?頁瀏覽的设定 (Optional)
                ? 組態?頁?面處理的?方法 (Optional)
                ? ?自定使?用介?面 (Optional)
                ? 指定网址或本地资料

12年12月21?日星期五
取得 WebView 物件


                WebView webView = (WebView)
                    findViewById(R.id.webView)




12年12月21?日星期五
變更瀏覽器的设定

  WebSettings settings =
      webView.getSettings();
  settings.setSupportZoom(true);
  settings.setBuiltinZoomControls(true);
  settings.setJavaScriptEnabled(true);




12年12月21?日星期五
WebSettings

                ? android.webkit.WebSettings
                ? 存取 WebView 的組態資料
                ? 重要 API
                 ? setJavaScriptEnabled()
                 ? !! ALL !!

12年12月21?日星期五
组态?页?面处理?方法

       webView.setWebViewClient(
           new WebViewClient() {
               // ...
           });




12年12月21?日星期五
WebViewClient
                ? android.webkit.WebViewClient
                ? ?自定?頁?面的處理?方法
                ? 重要 API
                 ?   onPageXXX() / onFormResubmission()

                 ?   onLoadResource() / onReceivedError() /
                     onReceivedHttpAuthRequest()



12年12月21?日星期五
?自定使?用介?面

       webView.setWebChromeClient(
           new WebChromeClient() {
               // ...
           });




12年12月21?日星期五
WebChromeClient
                ? android.webkit.WebChromeClient
                ? 定義使?用介?面的事件處理
                ? 重要 API
                 ? onProgressChanged()
                 ? onReceivedXXX() / onjsXXX()
                 ? onCloseWindow()
12年12月21?日星期五
指定网址或本地资料
    網址
    webView.loadUrl(
        “http://www.niceStudio.com.tw”);

    本地資料
    webView.loadData(
        “<h1>Hello World!!</h1>”);


12年12月21?日星期五
JavaScript 整合



12年12月21?日星期五
? WebView 可與 JavaScript 整合
                ? ?方式
                 ? WebChromeClient.onjsXXX()
                 ? JavaScript ? WebView
                 ? WebView ? JavaScript

12年12月21?日星期五
JavaScript ?WebView

                ? WebView 可註冊 JavaScript 函數的處理
                 器 (Handler)
                ? 步驟
                 ? 撰寫類別與?方法
                 ? 在 WebView 註冊處理器

12年12月21?日星期五
<a href=”#” onclick=”android.say(‘hi’)” />
                                                              HTML
                                                              Activity
      public class WebViewActivity extends Activity {
        class JavaScriptHandler {
            public void say(String word) {
               Toast.makeText(context, word, Toast.LENGTH_LONG).show();
            }
        }

          public void onCreate(Bundle bundle) {
            super.onCreate(bundle);
            webView = (WebView) ?ndViewById(R.id.wv);
            webView.addJavaScriptInterface(
                new JavaScriptHandler(), “android”);
          }
      }

12年12月21?日星期五
WebView?JavaScript
                ? WebView 可直接呼叫網?頁中的
                 JavaScript 函數

       webView.loadUrl(“javascript:changeColor(‘red’)”);
                                                           Activity
        <script type=”text/javascript”>                    HTML
        function changeColor(c) {
           ...
        }
        </script>



12年12月21?日星期五
實作 EPUB Reader



12年12月21?日星期五
Why??


                ? 實作私有的 DRM
                ? 實作特殊的效果或功能


12年12月21?日星期五
实作?方法


                ? Bottom-Up
                ? 利?用現成的 OpenSource Project


12年12月21?日星期五
FBReader
                ? Free & OpenSource
                ? Android 平台著名的 Reader
                ? http://www.fbreader.org/
                ? ?支援的格式
                 ? EPUB / HTML / FictionBook /
                   Plucker / PalmDoc / TCR / RTF / ...


12年12月21?日星期五
取得原始程式码

                ? 從官網下載
                 ? http://www.fbreader.org/FBReaderJ
                ? 使?用 Git 下載
                 ?   git://github.com/geometer/FBReaderJ.git




12年12月21?日星期五
準备

                ? Android SDK >= 1.6
                ? Android NDK >= r4b
                ? Apache Ant >= 1.7.0
                ? Cygwin >= 1.7 (Windows Only)

12年12月21?日星期五
编译
                1. 在專案??目錄中建?立 local.properties 檔
                   sdk.dir=<DIR>
                   ndk.dir=<DIR>
                2. Windows:
                   ndk-build -> ant release
                   Unix / MacOS X:
                   ant package


12年12月21?日星期五
擴充 FBReaderJ


                ? <PROJECT>/src/org/geometerplus/
                  android/fbreader/




12年12月21?日星期五
Q&A



12年12月21?日星期五
Ad

Recommended

Django step0
Django step0
永昇 陳
?
Javascript autoload
Javascript autoload
jay li
?
Browser Object Model
Browser Object Model
jay li
?
JavaScript Code Quality
JavaScript Code Quality
Joseph Chiang
?
HTML 語法教學
HTML 語法教學
Shengyou Fan
?
多说沉振宇:插件思想及多说的开发实践
多说沉振宇:插件思想及多说的开发实践
jiangluozhi
?
面向未来的重构
面向未来的重构
Kejun Zhang
?
更好的文件组织
更好的文件组织
Kejun Zhang
?
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
?
CRUD 綜合應用
CRUD 綜合應用
Shengyou Fan
?
开发工具与环境建置
开发工具与环境建置
Shengyou Fan
?
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
?
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
?
Maven – 项目管理利器
Maven – 项目管理利器
johnnybai
?
前端爆肝之旅+搁别补肠迟上山前的小专案心得分享
前端爆肝之旅+搁别补肠迟上山前的小专案心得分享
Yao Nien Chung
?
一拍一产物背后的故事(搁别补肠迟实战)
一拍一产物背后的故事(搁别补肠迟实战)
Kejun Zhang
?
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
?
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
Joseph Chiang
?
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
?
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
Shengyou Fan
?
工作坊总结
工作坊总结
Shengyou Fan
?
使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
Shengyou Fan
?
Web设计 4 锋利的j_query(进入公司级应用阶段)
Web设计 4 锋利的j_query(进入公司级应用阶段)
ziggear
?
difference between query string and hash
difference between query string and hash
fool2fish
?
KISSY 1.3-released
KISSY 1.3-released
yiming he
?
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copy
drewz lin
?
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolbox
Zoom Quiet
?
罢蚕颁+物件导向程式语言闯补惫补认证班(和春资工)
罢蚕颁+物件导向程式语言闯补惫补认证班(和春资工)
Kyle Lin
?
Node.js Quick Tour
Node.js Quick Tour
myzykj
?

More Related Content

What's hot (17)

快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
?
CRUD 綜合應用
CRUD 綜合應用
Shengyou Fan
?
开发工具与环境建置
开发工具与环境建置
Shengyou Fan
?
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
?
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
?
Maven – 项目管理利器
Maven – 项目管理利器
johnnybai
?
前端爆肝之旅+搁别补肠迟上山前的小专案心得分享
前端爆肝之旅+搁别补肠迟上山前的小专案心得分享
Yao Nien Chung
?
一拍一产物背后的故事(搁别补肠迟实战)
一拍一产物背后的故事(搁别补肠迟实战)
Kejun Zhang
?
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
?
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
Joseph Chiang
?
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
?
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
Shengyou Fan
?
工作坊总结
工作坊总结
Shengyou Fan
?
使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
Shengyou Fan
?
Web设计 4 锋利的j_query(进入公司级应用阶段)
Web设计 4 锋利的j_query(进入公司级应用阶段)
ziggear
?
difference between query string and hash
difference between query string and hash
fool2fish
?
快速入坑 Node.js - 0613 SITCON 雲林定期聚
快速入坑 Node.js - 0613 SITCON 雲林定期聚
Lorex L. Yang
?
开发工具与环境建置
开发工具与环境建置
Shengyou Fan
?
浅析浏览器解析和渲染
浅析浏览器解析和渲染
Ailsa126
?
不断归零的前端人生 - 2016 中国软件开发者大会
不断归零的前端人生 - 2016 中国软件开发者大会
Joseph Chiang
?
Maven – 项目管理利器
Maven – 项目管理利器
johnnybai
?
前端爆肝之旅+搁别补肠迟上山前的小专案心得分享
前端爆肝之旅+搁别补肠迟上山前的小专案心得分享
Yao Nien Chung
?
一拍一产物背后的故事(搁别补肠迟实战)
一拍一产物背后的故事(搁别补肠迟实战)
Kejun Zhang
?
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
[Modern Web 2016] 讓你的 PHP 開發流程再次潮起來
Shengyou Fan
?
模块加载策略 - 2012 SDCC, 北京
模块加载策略 - 2012 SDCC, 北京
Joseph Chiang
?
View 與 Blade 樣板引擎
View 與 Blade 樣板引擎
Shengyou Fan
?
給你一個使用 Laravel 的理由
給你一個使用 Laravel 的理由
Shengyou Fan
?
使用 laravel 的前與後
使用 laravel 的前與後
Shengyou Fan
?
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
[PHPConf Taiwan 2015] 跟著 Laravel 5.1 一起成為更好的 PHP 開發者
Shengyou Fan
?
Web设计 4 锋利的j_query(进入公司级应用阶段)
Web设计 4 锋利的j_query(进入公司级应用阶段)
ziggear
?
difference between query string and hash
difference between query string and hash
fool2fish
?

Similar to Android vs e pub (20)

KISSY 1.3-released
KISSY 1.3-released
yiming he
?
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copy
drewz lin
?
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolbox
Zoom Quiet
?
罢蚕颁+物件导向程式语言闯补惫补认证班(和春资工)
罢蚕颁+物件导向程式语言闯补惫补认证班(和春资工)
Kyle Lin
?
Node.js Quick Tour
Node.js Quick Tour
myzykj
?
新世代-Joomla 3.0導覽
新世代-Joomla 3.0導覽
ilovejoomla
?
Understanding Mobile Web Browser Performance
Understanding Mobile Web Browser Performance
Baidu, Inc.
?
敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1
drewz lin
?
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
Xu Wang
?
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
?
Websocket talk in nodejs.tw
Websocket talk in nodejs.tw
Hsu Ping Feng
?
KSDG BaaS Intro
KSDG BaaS Intro
ericpi Bi
?
Artifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
fangdeng
?
搁耻产测基础培训
搁耻产测基础培训
xiaozhestrong
?
颈翱厂开发常用库推荐之一蔼迟别肠丑辫补谤迟测
颈翱厂开发常用库推荐之一蔼迟别肠丑辫补谤迟测
Gump Law
?
云端技术的新趋势
云端技术的新趋势
Ben Huang
?
狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍
myzykj
?
Front-end makes change
Front-end makes change
keelii
?
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會
Kyle Lin
?
KISSY 1.3-released
KISSY 1.3-released
yiming he
?
Top100summit 秀野堂主-做最好的html5游戏 copy
Top100summit 秀野堂主-做最好的html5游戏 copy
drewz lin
?
Zh120226techparty jeff kit-ios-toolbox
Zh120226techparty jeff kit-ios-toolbox
Zoom Quiet
?
罢蚕颁+物件导向程式语言闯补惫补认证班(和春资工)
罢蚕颁+物件导向程式语言闯补惫补认证班(和春资工)
Kyle Lin
?
Node.js Quick Tour
Node.js Quick Tour
myzykj
?
新世代-Joomla 3.0導覽
新世代-Joomla 3.0導覽
ilovejoomla
?
Understanding Mobile Web Browser Performance
Understanding Mobile Web Browser Performance
Baidu, Inc.
?
敏捷模式下的百度研发基础环境建设 1
敏捷模式下的百度研发基础环境建设 1
drewz lin
?
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
何时浮云散尽(在北邮北邮纪阳老师移动互联网课程上的讲义)
Xu Wang
?
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
開放原始碼 Ch2.4 app - oss - db (ver 1.0)
My own sweet home!
?
Websocket talk in nodejs.tw
Websocket talk in nodejs.tw
Hsu Ping Feng
?
KSDG BaaS Intro
KSDG BaaS Intro
ericpi Bi
?
Artifacts management with CI and CD
Artifacts management with CI and CD
Chen-Tien Tsai
?
移动的前端技术架构和性能优化
移动的前端技术架构和性能优化
fangdeng
?
搁耻产测基础培训
搁耻产测基础培训
xiaozhestrong
?
颈翱厂开发常用库推荐之一蔼迟别肠丑辫补谤迟测
颈翱厂开发常用库推荐之一蔼迟别肠丑辫补谤迟测
Gump Law
?
云端技术的新趋势
云端技术的新趋势
Ben Huang
?
狈辞诲别箩蝉介绍
狈辞诲别箩蝉介绍
myzykj
?
Front-end makes change
Front-end makes change
keelii
?
Tqc+ 物件導向程式語言(java)認證研習會
Tqc+ 物件導向程式語言(java)認證研習會
Kyle Lin
?
Ad

Android vs e pub