申圣兵 聶立文
?
基于Android的手機(jī)學(xué)習(xí)平臺(tái)的開(kāi)發(fā)與應(yīng)用
申圣兵 聶立文
湖南高速鐵路職業(yè)技術(shù)學(xué)院,湖南 衡陽(yáng) 421000
為適應(yīng)校園無(wú)線網(wǎng)絡(luò)的完善和移動(dòng)智能終端快速普及的新形式,提出構(gòu)建基于Android的移動(dòng)學(xué)習(xí)平臺(tái),系統(tǒng)服務(wù)器端和Android客戶端的主要技術(shù)實(shí)現(xiàn)。
Android客戶端;手機(jī)學(xué)習(xí)平臺(tái)
隨著校園無(wú)線網(wǎng)絡(luò)的逐漸完善和移動(dòng)智能終端的快速普及,校園內(nèi)師生對(duì)于隨時(shí)隨地瀏覽學(xué)習(xí)資料的需求在持續(xù)增長(zhǎng)。但目前校園網(wǎng)中提供的學(xué)習(xí)性的資料普遍基于Web模式,無(wú)法有效的兼容智能手機(jī)和平板電腦,同時(shí)也無(wú)法適應(yīng)用戶使用習(xí)慣向移動(dòng)化方向發(fā)展的趨勢(shì)。所以需要建設(shè)適用于移動(dòng)互聯(lián)網(wǎng)的學(xué)習(xí)平臺(tái),提供方便、快捷和易用的服務(wù),為學(xué)校的教育教學(xué)提供方便。目前的移動(dòng)平臺(tái)主要分為iOS和Android,Android系統(tǒng)因其開(kāi)放性、易用性迅速得到業(yè)界和社會(huì)的認(rèn)可,并引領(lǐng)著目前的技術(shù)潮流。[1]
1.1 系統(tǒng)總體架構(gòu)
手機(jī)學(xué)習(xí)平臺(tái)的架構(gòu)如下圖1所示,它包括數(shù)據(jù)庫(kù)服務(wù)器、Web服務(wù)器、無(wú)線網(wǎng)絡(luò)和Android客戶端。數(shù)據(jù)庫(kù)服務(wù)器和Web服務(wù)器主要負(fù)責(zé)學(xué)習(xí)資源的收集、整理和發(fā)布。Android客戶端主要負(fù)責(zé)對(duì)服務(wù)器的訪問(wèn)。
圖1 系統(tǒng)結(jié)構(gòu)
服務(wù)器端的內(nèi)容主要以Web頁(yè)面的方式呈現(xiàn),由于主要是在移動(dòng)設(shè)備上瀏覽,Web頁(yè)面對(duì)移動(dòng)設(shè)備進(jìn)行了優(yōu)化,采用了“自適應(yīng)網(wǎng)頁(yè)技術(shù)”及HTML 5技術(shù)。
1.2 服務(wù)器端資源音視頻格式編碼
由于是學(xué)習(xí)平臺(tái)中的資源包含有大量的音視頻,它們必須滿足一定的要求才能適合移動(dòng)終端訪問(wèn),音視頻格式必須實(shí)現(xiàn)流媒體播放即支持邊下載邊播放。手機(jī)網(wǎng)絡(luò)視頻一般是flv和mp4格式,鑒于MP4/h.264編碼的優(yōu)勢(shì),視頻多采用MP4文件格式存儲(chǔ),音頻采用aac編碼。[2]有些視頻需要使用第三方軟件進(jìn)行格式轉(zhuǎn)換,如使用格式工廠進(jìn)行轉(zhuǎn)換設(shè)置如圖2:
1.3 播放器插件在Web頁(yè)面中的使用
由于學(xué)習(xí)平臺(tái)主要是通過(guò)Web頁(yè)面展示,Web頁(yè)面播放視頻最重要的是使用手機(jī)Web網(wǎng)頁(yè)視頻播放插件,這里我們推薦一款免費(fèi)可定制的Web網(wǎng)頁(yè)視頻播放插件ckplayer,可以到www.ckplayer.com免費(fèi)下載。下載后將其解壓到項(xiàng)目文件夾下,如下圖3:
播放器在Web頁(yè)面中調(diào)用的方法:
CKobject.embed('ckplayer/ckplayer.swf','a1','ckplayer_a1','300','200',false,flashvars,video);
相關(guān)參數(shù)意義如下,更詳細(xì)的解說(shuō)可以參考官網(wǎng)。
ckplayer/ckplayer.swf:播放器所在路徑
a1:網(wǎng)頁(yè)容器ID
ckplayer_a1:播放器的ID
300和200:播放器的寬度和高度
false:優(yōu)先調(diào)用設(shè)置,false=優(yōu)先調(diào)用flash播放器,true=優(yōu)先調(diào)用HTML5播放器
flashvars:播放器的初始化參數(shù),以及HTML5初始化參數(shù)
2.1 開(kāi)發(fā)方法
Android客戶端采用Eclipse開(kāi)發(fā),主要是利用android自帶的WebView控件來(lái)訪問(wèn)和控制站點(diǎn),WebView是基于webkit引擎展現(xiàn)web頁(yè)面的控件,WebView控件功能強(qiáng)大,除了具有一般View的屬性和設(shè)置外,還可以對(duì)url請(qǐng)求、頁(yè)面加載、渲染、頁(yè)面交互進(jìn)行強(qiáng)大的處理。其使用的一般步驟如下:
(1)在Activity中實(shí)例化WebView組件:WebView webView = new WebView(this);
(2)調(diào)用WebView的loadUrl()方法,設(shè)置WevView要顯示的網(wǎng)頁(yè):
互聯(lián)網(wǎng)用:webView.loadUrl("Web地址");
本地文件用:webView.loadUrl("file:/// android_asset/XX.html");本地文件存放在assets 文件中。
(3)調(diào)用Activity的setContentView( )方法來(lái)顯示網(wǎng)頁(yè)視圖。
(4)用WebView點(diǎn)鏈接看了很多頁(yè)以后為了讓W(xué)ebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點(diǎn)擊系統(tǒng)回退剪鍵,整個(gè)瀏覽器會(huì)調(diào)用finish()而結(jié)束自身,而不是回退到上一頁(yè)面
(5)需要在AndroidManifest.xml文件中添加權(quán)限,否則會(huì)出現(xiàn)Web page not available錯(cuò)誤。
2.2 訪問(wèn)視頻全屏問(wèn)題的解決
在Android中,傳統(tǒng)的一般有三種方式來(lái)實(shí)現(xiàn)視頻的播放:
(1)使用其自帶的播放器。指定Action為ACTI ON_VIEW,Data為Uri,Type為其MIME類型。
(2)使用VideoView來(lái)播放。在布局文件中使用VideoView結(jié)合MediaController來(lái)實(shí)現(xiàn)對(duì)其控制。
(3)使用MediaPlayer類和SurfaceView來(lái)實(shí)現(xiàn),這種方式很靈活。
但是由于本項(xiàng)目中的內(nèi)容多是由Web頁(yè)面展示,它們不能嵌入Web頁(yè)面中,所以上面的三種方式并不太適合,我們選擇了可以嵌入的一款播放器來(lái)實(shí)現(xiàn)。手機(jī)由于屏幕尺寸關(guān)系,視頻播放推薦使用全屏方式,所以視頻全屏是一項(xiàng)非常重要的功能,它主要是通過(guò)重載on Show Custom View方法來(lái)實(shí)現(xiàn)。[3]當(dāng)用戶點(diǎn)進(jìn)擊全屏按鈕時(shí),會(huì)自動(dòng)觸發(fā)on Show Custom View事件,處理代碼如下:
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
webView.setVisibility(View.INVISIBLE);
if (xCustomView != null){
callback.onCustomViewHidden();
return;
}
video_fullView.addView(view);
xCustomView = view;
xCustomViewCallback = callback;
video_fullView.setVisibility(View.VISIBLE);
退出全屏通過(guò)重載onHideCustomView方法來(lái)實(shí)現(xiàn)。其實(shí)現(xiàn)的主要代碼如下:
if(xCustomView == null)//不是全屏播放狀態(tài)
return;
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
xCustomView.setVisibility(View.GONE);
video_fullView.removeView(xCustomView);
xCustomView = null;
video_fullView.setVisibility(View.GONE);
xCustomViewCallback.onCustomViewHidden();
webView.setVisibility(View.VISIBLE);
視頻播放效果圖如下圖4:
圖4 視頻播放
隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,基于 Android 的移動(dòng)應(yīng)用具有廣闊的發(fā)展前景,本文在分析師生需求和現(xiàn)有技術(shù)條件的基礎(chǔ)上,提出了基于 Android 的學(xué)習(xí)平臺(tái)的搭建,實(shí)現(xiàn)了服務(wù)器端資源的采集、管理和發(fā)布以及Android 客戶端應(yīng)用程序。測(cè)試表明系統(tǒng)適用于當(dāng)前的技術(shù)環(huán)境 服務(wù)端通過(guò)虛擬化技術(shù)實(shí)現(xiàn)了高可用性和可拓展性,客戶端實(shí)現(xiàn)了訪問(wèn)功能,具有較好的用戶體驗(yàn),能夠滿足校園師生的需求。
[1]唐雄,張巨發(fā),段昌奉,等.基于Android智能手機(jī)的醫(yī)院移動(dòng)護(hù)理信息系統(tǒng)開(kāi)發(fā)及應(yīng)用[J].中國(guó)數(shù)字醫(yī)學(xué),2013,8(2):95-96.
[2]趙旭輝.基于Android手機(jī)的教學(xué)質(zhì)量評(píng)測(cè)軟件開(kāi)發(fā)[J].電腦開(kāi)發(fā)與應(yīng)用,2015(1):73-75.
[3]芮素文.基于Android平臺(tái)軟件開(kāi)發(fā)方法的研究與應(yīng)用[J].信息通信,2015(3):106.
The Development and Application of Mobile Learning Platform based on Android
Nie Liwen Shen Shengbing
Hunan high speed railway,Career Technical College,Hengyang,Hunan 421000,.
in order to adapt to the improvement of campus wireless network and the rapid popularization of mobile intelligent terminal,the main technology of building a mobile learning platform based on Android is proposed,which is based on Android.
Android client;mobile learning platform
TP311.52
A
1009-6434(2016)6-0006-03