• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于Android的軟件“問知網(wǎng)”的設(shè)計與實(shí)現(xiàn)

      2018-02-03 05:43:14張夢妮趙玲杜嵐姜楓申靜波
      電腦知識與技術(shù) 2018年2期
      關(guān)鍵詞:Android平臺在線學(xué)習(xí)應(yīng)用程序

      張夢妮+趙玲+杜嵐+姜楓+申靜波

      摘要:該文充分分析了大學(xué)生學(xué)習(xí)現(xiàn)狀,并在Android平臺下設(shè)計了一個軟件“問知網(wǎng)”,幫助大學(xué)生學(xué)習(xí)。并對該軟件平臺設(shè)計、實(shí)現(xiàn)功能、數(shù)據(jù)庫設(shè)計思想等進(jìn)行了詳細(xì)說明。該軟件應(yīng)用了第三方框架,網(wǎng)絡(luò)包括OKHTTP框架、Glide框架。數(shù)據(jù)傳輸格式為Json,使用Gson框架解析其內(nèi)容。Android控件方面使用了大量自主開發(fā)的控件,用以適應(yīng)需求。在整個圖片緩存方面,使用了自主開發(fā)的圖片緩存框架,以緩存和壓縮的思想對圖片進(jìn)行了處理,用以節(jié)約內(nèi)存。該軟件開發(fā)出來后為大學(xué)生提供了良好的學(xué)習(xí)平臺。

      關(guān)鍵詞:Android平臺;在線學(xué)習(xí);應(yīng)用程序

      中圖分類號:TP311 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2018)02-0049-04

      Design and Implementation of “Ask Will Know”Based on Android Platform

      ZHANG Meng-ni; ZHAO Ling; DU Lan; JIANG Feng; SHEN Jing-bo

      (College of Computer and Information Technology , Northeast Petroleum University, Daqing 163000, China)

      Abstract: This paper analyzed the current situation of college students learning and introduced the process about designing a software named "Ask Will Know" on Android platform to help students learn. This paper also gave an instruction on Platform design, implementation of functions and database design ideas in detail. "Ask Will Know" used a third-party framework that includes the OKHTTP framework and the Glide framework. Data formatted as Json, using the Gson framework to parse its contents. The software used a lot of self-developed controls to meet the demand. In terms of the entire image cache, the reason why using self-developed picture cache framework and the idea of using cache and compression to handle image was to save memory. When the application got developed , it provides a good learning platform for College Students.

      Key words: Android platform; learning online; application

      1 背景

      隨著網(wǎng)絡(luò)世界的飛速發(fā)展,手機(jī),ipad等手持移動智能端日漸普及,學(xué)生獲取學(xué)習(xí)資源更加方便,獲取途徑也變得越發(fā)廣泛。以互聯(lián)網(wǎng)應(yīng)用為主要代表的網(wǎng) 絡(luò)和信息技術(shù)支持下的應(yīng)用與服務(wù)已經(jīng)深入到社會生活的方方面面,正在深刻 改變著經(jīng)濟(jì)和社會的組織方式和發(fā)展方向[1] 。社交網(wǎng)絡(luò)服務(wù)SNS(Social Network Service)[2]的流行使得大量移動APP涌現(xiàn)。近幾年,一類幫助中小學(xué)生解決課后習(xí)題以及作業(yè)的軟件出現(xiàn),獲得了其所面向?qū)W生的極力追捧?,F(xiàn)有的軟件都僅是針對中小學(xué)生,但有現(xiàn)象顯示,目前大部分的在校大學(xué)生也存在著上課效率低下,課后習(xí)題無法獨(dú)自解決的問題。由此可見,大學(xué)生也需要一款專門面向他們的軟件,解決習(xí)題難題,鞏固課程知識。

      本文描述了如何在Android平臺上采用三層架構(gòu),將系統(tǒng)的界面及業(yè)務(wù)數(shù)據(jù)分離來更方便地進(jìn)行軟件的設(shè)計與開發(fā),搭建一個學(xué)生的在線學(xué)習(xí)平臺,幫助大學(xué)生更好的進(jìn)行課后學(xué)習(xí)。

      2 Android系統(tǒng)簡介

      Android 軟件平臺主要由五部分構(gòu)成,它們分別是:關(guān)鍵應(yīng)用程序、應(yīng)用程序框架和組件、C/C ++ 函數(shù)庫、Java 程序運(yùn)行環(huán)境、優(yōu)化了的 Linux 內(nèi)核[3]。Android系統(tǒng)是一個巨大的平臺,由于應(yīng)用的日益豐富,使得終端用戶不斷地發(fā)展和壯大,越來越多的設(shè)計研究和開發(fā)都在Android平臺上進(jìn)行[4],各個公司都可更改它的源代碼來體現(xiàn)自己的產(chǎn)品特色。也因?yàn)槿绱耍?017年Android的市場占有率達(dá)到了80%。同時,它的開源導(dǎo)致了Android的應(yīng)用千變?nèi)f化,可擴(kuò)展性極強(qiáng)。在Android5.0之后,Google提出了Metial Design,并提供了大量的控件。 “問知網(wǎng)”正是使用了這樣的設(shè)計思路并運(yùn)用了最新的Android技術(shù),這些新特性使“問知網(wǎng)”的流暢水平達(dá)到了一個新的高度。

      3 數(shù)據(jù)庫設(shè)計思想

      對已創(chuàng)建的數(shù)據(jù)庫和庫中的表,應(yīng)用程序在運(yùn)行過程中能對表的內(nèi)容進(jìn)行增、刪、改、查詢、統(tǒng)計、打印等操作[5]。數(shù)據(jù)庫系統(tǒng)的設(shè)計使用了E-R關(guān)系圖輔助整個數(shù)據(jù)庫的設(shè)計。根據(jù)功能,該平臺的數(shù)據(jù)庫的設(shè)計思路是:用戶基本信息表、試題集分類表、試題集信息表、基本題目信息表、用戶題目關(guān)聯(lián)表、視頻直播表以及歷史視頻表。endprint

      用戶在直播時需要將自己的ID號作為直播的關(guān)聯(lián)信息,因此用戶基本信息表的設(shè)計如表1所示:

      在程序中查詢數(shù)據(jù)關(guān)系里的數(shù)據(jù)時,可通過試題集的ID找到關(guān)聯(lián)的基本題目,然后將這些數(shù)據(jù)通過json字符串返回給移動端。

      用戶有時還需查看自己的歷史題目,因此還需一張表來維護(hù)相關(guān)的數(shù)據(jù),如表5所示:

      最終通過數(shù)據(jù)處理得出一種高效數(shù)據(jù)操作方式,提高Android平臺下數(shù)據(jù)庫的使用效率[6]。

      4 平臺的設(shè)計與實(shí)現(xiàn)

      4.1 平臺界面

      界面底部是RadioGroup,內(nèi)部包含五個RadioButton,用于用戶選擇頁面。向上是一個自定義ViewPager,用于填裝五個Fragment。頂部是一個ToolBar,為Android中的導(dǎo)航頭部。UI層代碼實(shí)現(xiàn)相關(guān)的UI層接口,這些接口會在業(yè)務(wù)邏輯層中被調(diào)用,換句話說,只要UI層實(shí)現(xiàn)了這些接口,不管是什么樣的UI層代碼,業(yè)務(wù)邏輯層的代碼都不會發(fā)生改變。一個UI層中的列表適配器代碼一般都會達(dá)到上百行,如果再將業(yè)務(wù)邏輯放入此處,那么這里的代碼就會變得極其臃腫。因此整個軟件采用了MVP三層架構(gòu),將UI,業(yè)務(wù)邏輯,數(shù)據(jù)訪問三者分離開來,使得整個項(xiàng)目的層次特別清晰[7]。

      4.2 平臺實(shí)現(xiàn)的主要功能

      1)用戶在平臺注冊并登陸后,可選擇記住密碼方便下次登錄。本平臺還提供找回密碼的功能。

      2) 本平臺提供用戶提問的功能。通過拍照將自己的題目上傳至平臺,再對問題進(jìn)行描述,發(fā)布后便可等待其他用戶回答了。相應(yīng)的,用戶也可以回答其他用戶的問題,以此來賺取積分參與活動。

      3) 本平臺支持用戶在線練習(xí)。選擇對應(yīng)的課程后,用戶便可點(diǎn)擊開始練習(xí)來鞏固知識了。

      4) 本平臺為用戶提供收集錯題的功能。以往在線練習(xí)遇到的錯題都會以詳細(xì)的解釋出現(xiàn)在錯題本里。用戶還可對錯題本進(jìn)行增刪改等操作。

      5) 本平臺支持教師用戶上傳自己的教學(xué)視頻,將同學(xué)們上課沒聽懂的知識點(diǎn)復(fù)述一遍,幫助學(xué)生消化吸收。

      6) 本平臺支持直播功能。無須空教室以及大量時間,教師可在課后為同學(xué)們直播答疑,給大家?guī)矸奖恪?/p>

      7) 本平臺在主界面會實(shí)時更新一些關(guān)于考研的動態(tài)以及新聞,給要考研的學(xué)生們提供更多信息以作參考。

      4.3 平臺架構(gòu)圖

      4.4 平臺的實(shí)現(xiàn)

      1) “問知網(wǎng)”設(shè)計為“客戶端—服務(wù)端—數(shù)據(jù)層”三層結(jié)構(gòu)模式[8] 。登錄注冊使用騰訊云作為后臺,方便為直播服務(wù)提供用戶數(shù)據(jù)。實(shí)現(xiàn)通過將用戶在文本框中的字符串提取出來并經(jīng)過一定的業(yè)務(wù)邏輯判斷,然后將其封裝成為Json字符串格式。通過OKHTTP框架以post方式將其提交給服務(wù)器具體的業(yè)務(wù)邏輯為:

      String username =getContentFromEditeText(et_username);

      String psd =getContentFromEditeText(et_psd);

      String userFormJson =GsonUtils.createUser(username,psd);

      Int state=MyHttpUtils.login(userForm);

      if(state==SUCCESS){

      showContentView();

      }else{

      showErroInfor();

      }

      通過getContentFromEditeText(et_username)方法可以獲取et_username中的內(nèi)容,通過GsonUtils.createUser(username,psd)可以封裝出相關(guān)的Json字符串;通過MyHttpUtils.login(userForm)可以將相關(guān)的內(nèi)容提交給服務(wù)器,并獲取返回碼,其內(nèi)部封裝了OkHttp框架的相關(guān)流程。

      2) 用戶題目的上傳和登錄的流程一樣,不過此處上傳還包含了圖片,為了節(jié)省用戶流量,APP先使用Android中的BitmapFactory對圖片縮放30%,然后再將圖片通過OkHttp框架傳到服務(wù)器中。圖片的壓縮業(yè)務(wù)邏輯為:

      BitmapFactory.Options newOpts = new BitmapFactory.Options();

      newOpts.inJustDecodeBounds = true;

      Bitmap bitmap = BitmapFactory.decodeFile(srcPath, newOpts);

      newOpts.inJustDecodeBounds = false;

      newOpts.inSampleSize = calculateRadio(bitmap);

      bitmap = BitmapFactory.decodeFile(srcPath, newOpts);

      在以上的操作中,srcPath是上傳圖片的路徑,先讀取圖片的基本信息,這里的關(guān)注點(diǎn)是大小,然后根據(jù)圖片的大小設(shè)置其壓縮比例,再將壓縮后的圖片提取出來得到新的圖片。

      3) 題目的練習(xí)功能

      當(dāng)用戶點(diǎn)擊進(jìn)入該模塊時,首先判斷用戶是否登錄,若未登錄則進(jìn)入登錄頁面,反之直接進(jìn)入可選題目列表。列表使用了最新的RecyclerView作為題目的列表控件,并結(jié)合其特點(diǎn)封裝了分頁功能。

      移動端先通過OKHTTP框架請求服務(wù)器,服務(wù)器再以Json的格式將數(shù)據(jù)返回給移動端。然后移動端對RecyclerView進(jìn)行數(shù)據(jù)適配,數(shù)據(jù)適配使用了適配器設(shè)計模式,其工作模式可以使用下面的代碼概括:endprint

      Class ListAdater extends BaseAdater{

      Int getItemCount();

      View createView();

      Object getItem();

      void onBindView(Bean b);

      }

      getItemCount()方法可獲取列表長度,createView可創(chuàng)建先關(guān)控件,getItem獲取相關(guān)數(shù)據(jù)源,onBindView將數(shù)據(jù)源和控件連接起來。這個適配器結(jié)合著數(shù)據(jù),就可以將題目顯示到頁面上了。

      當(dāng)用戶提交答案時,服務(wù)器端的Web程序會比對數(shù)據(jù)庫中的正確答案,并將統(tǒng)計結(jié)果保存到用戶的練習(xí)結(jié)果表中,同時將統(tǒng)計結(jié)果返回給移動端,移動端接受到統(tǒng)計結(jié)果時,將數(shù)據(jù)展示給用戶。整個頁面使用ConstraintLayout作為根布局,沒有布局的重疊,性能相當(dāng)良好。

      4) 用戶的錯題本功能。由上述功能可知,在用戶練習(xí)時,服務(wù)器便將相關(guān)統(tǒng)計數(shù)據(jù)放入了數(shù)據(jù)庫中,由于本文的重點(diǎn)是移動端的開發(fā),因此不贅述相關(guān)數(shù)據(jù)元的設(shè)計。這里的開發(fā)與練習(xí)功能相似,都是使用了RecylerView作為列表。

      5) 視頻流的使用?!皢栔W(wǎng)”使用騰訊云作為自己的視頻推流后臺,使用RTMP協(xié)議進(jìn)行推流,在移動端使用騰訊云提供的TXLivePlayer播放直播視頻。該控件的使用類似于Android原生態(tài)中的MediaPlayer,對視頻的播放操作做了很多優(yōu)秀的封裝。這個控件的使用過程的代碼描述為:

      mTXCloudVideoView=obtainView(R.id.tx_live_view);

      mTXLivePlayer = new TXLivePlayer(this);

      mTXLivePlayer.setPlayListener(new MyITXLivePlayListener()

      mTXLivePlayer.setPlayerView(mTXCloudVideoView);

      mPlayUrl = getIntent().getStringExtra(Constants.PLAY_URL);

      if (mPlayUrl != null)

      mTXLivePlayer.startPlay(mPlayUrl);

      從布局文件中獲取控件mTXCloudVideoView,之后創(chuàng)建TXLivePlayer對象mTXLivePlayer,然后為mTXLivePlayer配置監(jiān)聽器,在監(jiān)聽器中主要監(jiān)聽了視頻接入成功的時刻和失敗的時刻,在失敗時彈出提示的對話框,成功則將視頻流接入。然后獲取視頻播放的URL,通過URL接入到先關(guān)的視頻流。

      6) 歷史視頻。這里使用的是FLV協(xié)議,同時也是FLV格式,在這一部分中也同樣使用了騰訊云提供的視頻流,控件的使用與直播功能大同小異。

      7) 動態(tài)消息推送功能。使用騰訊云提供的消息推送功能,定期將相關(guān)的廣告鏈接推送給移動端,移動端接收到之后,會彈出Notification彈框,點(diǎn)擊之后進(jìn)入相關(guān)的網(wǎng)頁,這利用了網(wǎng)頁的后臺可以隨時修改的特點(diǎn)。網(wǎng)頁使用WebView進(jìn)行加載,同時使用了其javascript接口監(jiān)聽了相關(guān)的圖片,在js中將所有圖片的URL提取出來形成一個列表,然后以List的形式返回給Android。

      4.5 圖片緩存

      在APP中瀏覽圖片會消耗較多流量,影響加載速度,因此較多APP選擇先向用戶展示縮略圖,根據(jù)用戶需求再加載原圖[9]。如圖3所示:

      在Android中,框架為開發(fā)者提供了LruCache管理相關(guān)的緩存,而在圖片加載時的思想可由圖4所示:

      通過URL訪問cache,如果命中,直接拿出圖片,否則直接訪問服務(wù)器,獲取圖片并壓縮,然后將其URL和壓縮后的圖片以鍵值對的形式存放到緩存中。

      5 結(jié)束語

      “問知網(wǎng)”是應(yīng)各種需求而產(chǎn)生的新型學(xué)習(xí)平臺。Android 手機(jī)應(yīng)用程序開發(fā)是一項(xiàng)復(fù)雜的工程,本文研究了在 Android 系統(tǒng)下,基于MVP架構(gòu)使用Java 語言設(shè)計和開發(fā)軟件。“問知網(wǎng)”的開發(fā)與應(yīng)用,為實(shí)現(xiàn)“隨時、隨地、隨身”學(xué)習(xí)搭建了良好的學(xué)習(xí)平臺,對于打造學(xué)習(xí)型社會、構(gòu)建終身學(xué)習(xí)體系[10]具有重要的現(xiàn)實(shí)意義。驗(yàn)證了該平臺良好的實(shí)用性,也為廣大的 Android 開發(fā)者提供一個參考。

      參考文獻(xiàn):

      [1] 王宇, 吳煒鑫, 王興偉. “互聯(lián)網(wǎng)+”下高校信息化建設(shè)模式的探索與研究[J]. 計算機(jī)應(yīng)用與軟件, 2016, 33(11):41-45.

      [2] 喬秀全, 楊春, 李曉峰, 等. 社交網(wǎng)絡(luò)服務(wù)中一種基于用戶上下的信任度計算方法[J].計算機(jī)學(xué)報, 2011, 34(12):2403-2413.

      [3] 劉榮華, 張揚(yáng), 聶頌, 等. Oracle 數(shù)據(jù)庫管理與應(yīng)用系統(tǒng)開發(fā)[M]. 北京: 人民郵電出版社, 2005.

      [4] 桑楠, 趙麗, 郭文生. 多核平臺嵌入式瀏覽器并行機(jī)制的研究與設(shè)計[J]. 電子科技大學(xué)學(xué)報, 2014, 4(43):400-404.

      [5] 曹計昌, 楊月芹. PowerBuilder應(yīng)用程序在SQL Anywhere數(shù)據(jù)庫中動態(tài)創(chuàng)建表的方法[J]. 微型機(jī)與應(yīng)用, 2001, 20(10):53-54.

      [6] 周巍. Android平臺下基于SQLite數(shù)據(jù)庫的手機(jī)游戲設(shè)計與研究[D]. 昆明: 昆明理工大學(xué), 2011.

      [7] 溫昱. 一線架構(gòu)師實(shí)踐指南[M]. 北京: 電子工業(yè)出版社, 2009.

      [8] 熊水柔. 基于Android系統(tǒng)的移動學(xué)習(xí)平臺的設(shè)計與實(shí)現(xiàn)[D]. 北京: 北京郵電大學(xué)碩士論文, 2012.

      [9] 王菁, 牛利杰. 面向移動端基于社交關(guān)系的圖片緩存替換算法[J]. 計算機(jī)工程與科學(xué), 2017, 39(2):267-274.

      [10] 盛建榮. 開放大學(xué)背景下基層電大移動學(xué)習(xí)平臺構(gòu)建研究——以金華“掌上電大”平臺開發(fā)為例[J]. 中國遠(yuǎn)程教育: 綜合版, 2014(13):83-88.endprint

      猜你喜歡
      Android平臺在線學(xué)習(xí)應(yīng)用程序
      刪除Win10中自帶的應(yīng)用程序
      電腦報(2019年12期)2019-09-10 05:08:20
      基于Android平臺軟件開發(fā)技術(shù)研究
      科技資訊(2016年25期)2016-12-27 18:46:40
      基于Android平臺的人臉識別系統(tǒng)設(shè)計與實(shí)現(xiàn)
      基于Android平臺的健康醫(yī)療APP設(shè)計與開發(fā)
      信息化環(huán)境下高職英語教學(xué)現(xiàn)狀及應(yīng)用策略研究
      基于MOOC的微課制作方法
      基于混合式學(xué)習(xí)理念的大學(xué)生自主學(xué)習(xí)能力的培養(yǎng)研究
      價值工程(2016年29期)2016-11-14 02:05:45
      基于SOA的在線學(xué)習(xí)資源集成模式的研究
      Android手機(jī)主題設(shè)計 
      關(guān)閉應(yīng)用程序更新提醒
      電腦迷(2012年15期)2012-04-29 17:09:47
      丰城市| 林芝县| 永泰县| 西青区| 海林市| 正阳县| 昌宁县| 灵石县| 抚顺县| 淮北市| 涪陵区| 华宁县| 衡东县| 布拖县| 青海省| 沙洋县| 平远县| 卢氏县| 抚州市| 宁化县| 兖州市| 武宁县| 通州市| 香港| 平和县| 天台县| 开鲁县| 留坝县| 凭祥市| 樟树市| 安岳县| 上杭县| 高阳县| 汉中市| 青岛市| 页游| 古蔺县| 吐鲁番市| 济南市| 高雄县| 克东县|