標籤:des android style blog http io java ar strong
前言:
算是幸運的事, 在朋友友情贊助下做了個語音讀物App, 不僅攢了人品, 也攢到了個人在Android應用的第一桶金. 現在分享下對該語音讀物App的一些技術方面的想法和產品實現上的感悟.
產品形態:
該App的定位是語音讀物, 主要面向低年齡學生. 學生可以瀏覽書架, 選擇感興趣的書籍. 然後點擊具體的電子讀物進行瀏覽學習. 步步高點讀機在這塊領域, 算是鼻祖, 也是該App模仿的對象.
從使用者的角度來解讀該App, 主要有兩塊: 書架, 語音書.
書架的設計大致如下:
語音書的設計如下:
注: 點擊具體的文字, 會播放相應的語音, 圖片來自網路
技術分析:
從軟體開發的角度去解讀, 該APP的痛點在於電子書的資源管理上. 一個是書架管理, 用於展示語音書的元資訊列表. 另一個是電子書的語音素材管理.
假設App是單機版, 那採用什麼方案來存放語音書籍的元資訊?
這個相對還是簡單的, 可由如下兩種方式來實現.
1. 外部匯入sqlite的db檔案
2. 自訂xml檔案來描述語音書籍列表
比如如下規則:
<bookshelf> <book> <name>課本第一冊</name> <image>default</image> <resource>2C8E4202929D8331ED585FCE30669649</resource> </book> <book> <name>課本第二冊</name> <image>default</image> <resource>29E54AFB1494CB28E30B034B5FCBA408</resource> </book> ...</bookshelf>
評註: 實際採用方案二, 把自訂的book_desc.xml檔案放到android工程res/xml中去, 然後運行時載入並解讀.
那對語音讀物的儲存如何來實現?
對於具體的電子書, 我們把相關的素材(音頻/映像)組織並整理匯總到一起. 這樣可以為每本電子書打包成zip檔案.
具體實施之前, 我們需要做些準備工作:
首先要做的是對資源進行壓縮最佳化處理, 在保持音質/畫質可接收的範圍下, 盡量減少素材資源所佔的空間比重. 相關的最佳化策略可以參考: 移動端音頻和圖形最佳化處理.
其次需要對Android的硬體/常見的儲存方式, 需要有一定的理解, 具體可參見該文: 資源類APP的資料存放區處理和最佳化.
每本語音書籍, 包含如下目錄結構:
注: images存放影像檔, musics存放語音檔案,而book.xml則具體描述每頁的映像, 以及每頁的關聯地區和語音檔案的對應關係.
而具體book.xml的定義, 按如下規則來定義:
<book> <meta> <name>zp</name> <author>zp</author> <description>zp</description> </meta> <ppts> <!-- 具體某一頁的詳細定義 --> <ppt> <!-- 圖片 --> <image>544F9EFF07DD68D1F143E3E9A995E573.jpg</image> <realx>533</realx> <realy>640</realy> <!-- 語音地區列表 --> <soundblocks> <!-- 具體的點擊地區(tx, tp, bx, by)和相關聯的語音music --> <soundblock> <topx>120</topx> <topy>71</topy> <bottomx>345</bottomx> <bottomy>117</bottomy> <music>C5ECF459D28DF8289E96DB7F1065C281.wav</music> </soundblock> </soundblocks> ... </ppt> ... </ppts></book>
評註: <ppt>標籤下為具體某一頁的詳細定義, 包含背景圖片, 以及語音關聯地區的座標範圍和響應語音
輔助軟體設計:
對於該App的設計, 最重要的就是語音書籍的定義以及後端的製作編輯工具.
具體的設計, 請參見上部分. 而後端的製作編輯工具, 最終的產出就是那個book.xml.
具體的工作介面如下所示:
對產品的思考:
好的語音讀物App, 應該具備什麼?
1). 好的互動性, 軟體體驗簡單易學, 更適合低年齡兒童
2). 黏性好, 讓學生學得快, 且印象深刻
這些都是基本的東西, 但真正實現起來卻很難.
當前所做的工作:
1). 引入左右滑動效果, 手指滑動的互動方式更適合手機端應用
2). 標識每個語音塊地區, 顯示小喇叭以表明這是相應的語音地區
不足的是, 感覺使用者體驗還是一般. 這個不再是技術的問題, 而是產品形態的問題.
回過頭來看, 步步高點讀機. 其核心理念是:實體硬體+軟體APP, 硬體嵌入學習軟體, 但我感覺本末倒置了, 就應該著重軟體App, 而不需要帶個幾乎沒用的外殼(或許中國人的消費習慣是, 只願花錢買帶實體的物品, 還不願意掏錢買付費軟體). 其互動方式, 有動畫也適合學生的學習習慣, 但總覺得少點什麼.
要做好一款面向低年齡兒童的語音讀物, 其實蠻難的.
後記:
原本想詳細的展開技術細節, 但寫著寫著就迷失了方向, 想想還是大致點一下. 對產品的思考和把握或許才是技術人員更應該關注的東西, 技術真得不是全部. 當然沒有技術是萬萬不行的, 呵呵.
移動互連網工程--語音讀物的設計實現和產品規劃