|
5ev3gghy22d6406115045.gif (60.41 KB, 下載次數(shù): 0)
下載附件
保存到相冊
5ev3gghy22d6406115045.gif
2024-9-8 09:53 上傳
! a- Q! H7 X* l* P2 n
點(diǎn)擊上方藍(lán)色字體,關(guān)注我們' W @4 m0 E& H9 z
很多計(jì)算機(jī)專業(yè)大學(xué)生經(jīng)常和我交流:畢業(yè)設(shè)計(jì)沒思路、不會(huì)做、論文不會(huì)寫、太難了......$ ^/ @& b, r8 J* _
, T' t& @, e# n& v! I% r針對(duì)這些問題,決定分享一些軟、硬件項(xiàng)目的設(shè)計(jì)思路和實(shí)施方法,希望可以幫助大家,也祝愿各位學(xué)子,順利畢業(yè)!- S" b+ S( v( ~9 X% y( V
) h5 v$ R" d* \% x8 @, S
ytg4w4ph5v36406115146.png (178.92 KB, 下載次數(shù): 0)
下載附件
保存到相冊
ytg4w4ph5v36406115146.png
2024-9-8 09:53 上傳
5 a+ u$ w: x2 u5 {9 x$ h: Q# t
% `* a- x6 m6 p- r) g1 R: _
項(xiàng)目專欄:7天搞定畢業(yè)設(shè)計(jì)和論文! J% ]& Z3 O% l( {3 [6 }- A
對(duì)計(jì)算機(jī)技術(shù)感興趣的小伙伴請關(guān)注公眾號(hào):美男子玩編程,公眾號(hào)優(yōu)先推送最新技術(shù)博文,創(chuàng)作不易,請各位朋友多多點(diǎn)贊、收藏、關(guān)注支持~ H$ a5 g" M4 ?
本課題為基于智能手機(jī)的報(bào)紙閱讀器。老年人大多有讀書看報(bào)的喜好,但受限于視力衰退,閱讀報(bào)紙上較小的文字極為吃力,時(shí)間一長容易導(dǎo)致眼睛不舒服等不良狀況,給日常生活造成了不小的麻煩。如果有人或者使用軟件能夠幫助老人將報(bào)紙內(nèi)容朗讀出來,這個(gè)問題就可以在一定程度上得到解決。, v, T9 ]+ f4 J; ?
/ u0 m' [4 B- y, U, F目前在 Android 應(yīng)用市場有不計(jì)其數(shù)的 APP 應(yīng)用,但提供給老年人使用的卻少之又少,而且普遍質(zhì)量較差,并沒有針對(duì)老年人的特點(diǎn)和使用場景進(jìn)行有針對(duì)性的設(shè)計(jì)和開發(fā)。結(jié)果就是這些 APP 并沒有真正解決老年人的某些痛點(diǎn)問題。2 [+ i W& Y& i1 \ w" i2 f1 x
7 v8 l" E# R f& d0 \
本課題選擇Android平臺(tái)作為開發(fā)平臺(tái),因其使用范圍廣,基數(shù)大,可使其適用性大大增加。老年人只需使用該 App 對(duì)所需要閱讀的內(nèi)容拍照,本應(yīng)用即會(huì)將選中的內(nèi)容朗讀出來,解決了老年人由于新聞?wù)淖煮w較小而造成的閱讀不便的問題。本 App 還提供了存儲(chǔ)功能,用戶可選擇將之前閱讀的內(nèi)容緩存起來,便于下次使用。
' D2 d' K/ W: ]: n' P- n, E/ c# ~2 m/ v0 n- _% n; I& T
項(xiàng)目工程資源下載請參見:https://download.csdn.net/download/m0_38106923/87845018* e* x/ T0 W6 Q2 p" Z7 u
1; L& p* K8 e, c/ D' D; @
項(xiàng)目功能
% e- y) S% j! J- ^( t) v本課題的目標(biāo)是開發(fā)一款基于 Android 系統(tǒng)的報(bào)紙閱讀器,能夠具備良好的兼容性、穩(wěn)定性與實(shí)用性。所需要實(shí)現(xiàn)的基礎(chǔ)功能如下:. Z6 c9 O5 q. j* n
拍照:調(diào)用手機(jī)自帶的攝像頭對(duì)報(bào)紙內(nèi)容進(jìn)行拍照。裁剪內(nèi)容:由于上一步得到的圖片可能混入了一些與所需內(nèi)容無關(guān)的部分,因此需要對(duì)圖片進(jìn)行裁剪。OCR:將裁剪后的圖片上傳至遠(yuǎn)端的 OCR Cloud 引擎進(jìn)行文字識(shí)別,并將識(shí)別結(jié)果返回給用戶。TTS:將識(shí)別所得的文字朗讀出來。存儲(chǔ):將 COR 是被后的文字存儲(chǔ)在手機(jī)上,方便下一次使用,同時(shí)也需提供刪除功能。音量調(diào)節(jié):可以對(duì)發(fā)音人的音量進(jìn)行調(diào)大或者調(diào)小。語音設(shè)置:進(jìn)一步的個(gè)性化設(shè)置,可選擇不同的地方性語言進(jìn)行朗讀。. f8 L8 }' R! U
& W' W0 _$ u1 `0 E1 s7 x( _ _8 a/ x2 \: W5 v2 F
2$ E: S4 k1 Y6 T5 S
項(xiàng)目業(yè)務(wù)處理流程) E3 m7 P( O, b$ ]& p' @0 e+ S1 a
本課題主要為設(shè)計(jì)一款在 Android 系統(tǒng)上運(yùn)行的報(bào)紙閱讀器,并實(shí)現(xiàn)上述的所有功能。
: g |' Z& |9 m; V9 ~
8 q* \+ Q& M, N9 [3 O用戶打開該應(yīng)用后,程序會(huì)自動(dòng)檢測手機(jī)中是否安裝訊飛語音,該語音引擎在朗讀文字的時(shí)候需要用到。如果檢測到用戶尚未安裝,會(huì)彈出對(duì)話框提醒用戶安裝。安裝完成后可以選擇“拍照”或者“瀏覽”功能。. H+ @# w0 S" {9 f) ^* T
) c$ a5 A8 r& r8 H' x% {! `3 `* L選擇“拍照”后,程序調(diào)用系統(tǒng)自帶的相機(jī)供用戶拍攝報(bào)紙內(nèi)容,待拍照完成后,跳轉(zhuǎn)至圖片裁剪界面。在該界面中會(huì)將用戶在上一步拍攝的照片顯示出來,并在圖片中提供一個(gè)可任意方向及大小拖動(dòng)的方框,用戶可拖動(dòng)該方框選出需要識(shí)別的圖片部分。裁剪完成后點(diǎn)擊“確定”即開始進(jìn)行文字識(shí)別。由于該識(shí)別過程需要聯(lián)網(wǎng),如果發(fā)現(xiàn)用戶為接入互聯(lián)網(wǎng)會(huì)彈出對(duì)話框提醒用戶進(jìn)行相關(guān)設(shè)置。6 ]% [ i0 n# O( g5 \
/ Q C, t" H/ c6 b, E# n在文字識(shí)別完成后,程序會(huì)自動(dòng)跳轉(zhuǎn)到朗讀的界面。該界面會(huì)顯示新聞的標(biāo)題,并提供音量調(diào)節(jié)功能,拖動(dòng)音量條即可對(duì)朗讀的音量進(jìn)行實(shí)時(shí)調(diào)節(jié),并且程序會(huì)記錄用戶上一次所使用的音量大小,避免每次朗讀時(shí)都要手動(dòng)調(diào)大音量的麻煩。) Z) {- }8 ?% ^
改界面還提供語音設(shè)置與刪除新聞的功能。語音設(shè)置功能由訊飛語音提供,可以更換不同的發(fā)音語言。7 @- J4 T& E" M- Z' }
. p' h& L2 H; k" h2 |! s+ C8 N4 L點(diǎn)擊“瀏覽”跳轉(zhuǎn)到歷史新聞的界面,該界面以列表的形式顯示了用戶所有的識(shí)別記錄。點(diǎn)擊某條新聞即可跳轉(zhuǎn)到朗讀界面自動(dòng)朗讀。如果需要?jiǎng)h除,長按該條新聞,會(huì)彈出對(duì)話框提醒用戶是否真的需要?jiǎng)h除,防止誤操作。
/ u$ Z/ u+ j9 O- ]1 E. h
4ewf1efydm16406115246.png (15.16 KB, 下載次數(shù): 0)
下載附件
保存到相冊
4ewf1efydm16406115246.png
2024-9-8 09:53 上傳
# B* T3 E A" W) e5 D5 S0 T
* y6 O) \3 n) S7 F2 i5 @
3
8 N" S1 a, I! l; p% Y+ z) ?開發(fā)環(huán)境搭建8 C- M Y: Z0 w( j$ d1 I4 C, L
本項(xiàng)目需要安裝 Android 開發(fā)環(huán)境以及 Cordova 框架。下面將分為 JDK、Android SDK、Node.js、Cordova 4個(gè)部分進(jìn)行講解。
5 c1 T" e1 r; J" y1 b; n安裝JDK, Q; ?0 I! q3 p0 M9 ^3 n x: V
編譯 Android 時(shí)需要用到 JRE 支持。安裝 JDK 需要在 Sun 官方網(wǎng)站進(jìn)行下載,地址是 http://www.oracle.com/technetwork/java/javase/downloads/index.html ,這里選擇 Java SE 8u45 下載。然后雙擊下載后的文件即可自動(dòng)安裝。安裝完成后打開終端,并輸入 java -version ,即可看到相應(yīng)的 Java 安裝信息。默認(rèn)的安裝目錄實(shí)在 /System/Libray/Frameworks /JavaVM.Framwork/,在該目錄下 Versions 文件夾里存放了不同版本的 JDK。
) H, W7 r* b, ~1 }3 o- A安裝Android SDK5 }& Z c: A; J7 Q+ Z: S9 U
前往 Android 開發(fā)者網(wǎng)站下載,地址是 developer.android.com 。下載后解壓即可使用。
F7 K" M9 I, n, h安裝Node.js
- N! ^& i8 W$ V7 u前往 Node.js 官方網(wǎng)站進(jìn)行下載,地址是 https://nodejs.org/ 。這里選擇的是 Node.js for Mac的安裝文件進(jìn)行下載,下載完成后雙擊下載文件即可自動(dòng)開始安裝。安裝完成后在終端中輸入 node -v 即可顯示當(dāng)前 Node.js 的安裝版本號(hào)。, R3 T' a# F6 r' j7 y1 R- G( O+ {9 @
安裝Cordova9 q6 F6 `! U6 Y6 p
在電腦打開終端,輸入 sudo npm install -g cordova 開始安裝 Cordova。安裝完成后在終端輸入 cordova -v 即可顯示當(dāng)前 cordova 的版本號(hào)。
, M6 J! c# T! r' G6 D% g4
, O) X1 r' Q7 ICordova工程創(chuàng)建打開終端,輸入 cordova create SmartReader com.xyq.smartreader SmartReader即可成功創(chuàng)建 Cordova項(xiàng)目。上述命令行的第一個(gè)參數(shù)是指創(chuàng)建該工程的文件夾名,如果不存在將會(huì)創(chuàng)建該文件夾。第二個(gè)參數(shù)為該項(xiàng)目的包名。第三個(gè)參數(shù)為該項(xiàng)目在手機(jī)下顯示的名字。在終端輸入 cd SmartReader,進(jìn)入該項(xiàng)目的文件夾。輸入 cordova platform add android,添加Android平臺(tái)的支持。Cordova會(huì)調(diào)用Android SDK在platform/android 中創(chuàng)建一個(gè)完整的Android應(yīng)用工程。在WebStorm中打開SmartReader文件夾,即可看到該目錄下已經(jīng)生成了一系列的代碼文件。 完成創(chuàng)建 Cordova工程。Cordova會(huì)在www目錄下默認(rèn)生成index.html,css/index.css,img/logo.png和js/index.js等文件。將手機(jī)通過USB數(shù)據(jù)線與筆記本連接,并開啟開發(fā)者選項(xiàng)以及使用USB調(diào)試的功能。在終端中輸入 cordova run android 即可將該項(xiàng)目安裝在手機(jī)上。如果需要在筆記本上的模擬器運(yùn)行,則在終端輸入 cordova emulate android 即可啟動(dòng)Android模擬器 。( Y( O4 Q9 M; P+ @; Z% C
[/ol]
% F* D9 f( F, S: L* S& a5
9 K, ]% f9 J# n" L" U軟件功能實(shí)現(xiàn)* ~8 p. ^, k3 @8 Y1 d6 l2 S: t% c
5.1、UI界面
% |, v1 g# ~* k/ V8 h1 F; L由于 Cordova只提供了調(diào)用Native API的接口,并沒有提供任何UI方面的功能,所以UI方面這里使用 Ratchet 框架來構(gòu)造界面。Ratchet 是一款專門為移動(dòng)開發(fā)打造的框架,包括按鈕、列表、標(biāo)簽欄等在移動(dòng)設(shè)備上常見的組件,讓開發(fā)者可以很方便的制作精美的頁面。其支持 Android 與iOS7兩種風(fēng)格,本軟件使用iOS7風(fēng)格。首先需要到 Ratchet 官方網(wǎng)站上下載該框架,下載完成后解壓,將相應(yīng)的 JavaScript 和 CSS 文件復(fù)制到項(xiàng)目目錄下 www 文件夾的對(duì)應(yīng)目錄。然后即可引用:
, u k( O6 c8 d
) O: x) }5 f3 r- t1 klink rel="stylesheet" href="ratchet/css/ratchet.min.css"/>5 H# |0 |* f5 |9 O0 d' _, @: t; N
W7 z |( }3 I: E
5.2、數(shù)據(jù)存儲(chǔ)8 b" H6 x$ g6 |& c* Q, Q* S
HTML5提供了兩種在客戶端存儲(chǔ)數(shù)據(jù)的新方法,分別是localStorage和sessionStorage。在這之前,這類功能都是使用 cookie實(shí)現(xiàn)的。但是cookie并不適合大量數(shù)據(jù)的存儲(chǔ),一般情況下只能存儲(chǔ)大約4KB的數(shù)據(jù)。localStorage對(duì)數(shù)據(jù)的存儲(chǔ)沒有時(shí)間限制,sessionStorage存儲(chǔ)的數(shù)據(jù)在用戶關(guān)閉瀏覽器窗口后會(huì)給刪除。因而在本應(yīng)用中實(shí)現(xiàn)存儲(chǔ)功能應(yīng)使用localStorage。localStorage使用鍵值對(duì)的方式進(jìn)行數(shù)據(jù)存儲(chǔ),目前僅支持存儲(chǔ)字符串類型的數(shù)據(jù)。其提供了 setItem、getItem和removeItem三個(gè)方法,分別對(duì)應(yīng)的是寫、讀、刪的功能。8 c- Q5 h; M9 F" n
/ i9 z" L( N( o4 d5.3、拍照功能0 A& H8 M& X; B5 x% r9 g S
由于從 Cordova 3開始采用插件的方式提供核心 API,因此需要通過安裝插件的方式進(jìn)行拓展。首先安裝 Cordova 插件 org.apache.cordova.camera,該插件提供對(duì)系統(tǒng)照相機(jī)功能調(diào)用的接口。在終端輸入 cordova plugin add org.apache.cordova.camera ,安裝該插件。
0 r* h9 ?9 j' o# z# b% f! H* G' \ {$ C
該插件提供了 navigator.camera.getPicture 這個(gè)方法來調(diào)用系統(tǒng)的拍照功能,該方法需要傳入三個(gè)參數(shù),分別是:拍照成功后的回調(diào)函數(shù)、拍照失敗后的回調(diào)函數(shù)和拍照的參數(shù)。拍照的參數(shù)包括圖片質(zhì)量(默認(rèn)為75%)、圖片寬高、圖片拓展名等。具體使用代碼如下:4 P$ r' ^' v+ T/ ?# O, {) d3 y1 M
1 G! n4 R) p1 S% f. o4 [+ V' P- C1 xnavigator.camera.getPicture(onSuccess, onFail, { quality: 100, destinationType: Camera.DestinationType.FILE_URI});$ n, j1 \- u0 N; N; n6 j, [
function onSuccess(imageURI) { localStorage.setItem("imgUrl", imageURI); location.href = "crop.html"; }% d/ h# t& ]" E; [+ S
function onFail(error) {}
' B- ~5 Q+ n7 d! I3 O在拍照完成后需要跳轉(zhuǎn)到裁剪圖片的頁面,因此在跳轉(zhuǎn)前需要把圖片的地址保存下來以供下一步使用。
. C9 P+ R" |9 y; A) t: i7 c) ?1 ~ z2 Q
5.4、裁剪圖片
: W, M3 }' H/ i: c使用 Image Cropper 插件實(shí)現(xiàn)。首先需要到該插件官網(wǎng) https://github.com/fengyuanchen/cropper 下載。下載完成后將文件解壓,將相應(yīng)的 JavaScript 文件 和 CSS 文件放到 SmartReader 項(xiàng)目下的 www 文件夾中對(duì)應(yīng)的位置。由于該插件依賴 jQuery,因此在引入其 JavaScript 前需要先引入 jQuery。引入代碼如下:4 L$ \9 E/ m0 d$ G# f5 L1 h# |
! h" x* t; T! [* J# Z; d"stylesheet" type="text/css" href="css/crop.css" />
# f" ~6 E& L( U& W1 u/ p以及:6 y/ t: D3 M' F2 {0 N
" G: K& d* s, Rscript src="js/jquery.min.js">script>script src="js/cropper.js">script>/ v) P' i2 Z/ {1 {; g: @& H3 X
引入完成后即可開始使用。該插件提供了一個(gè)名為cropper 的方法供開發(fā)者調(diào)用裁剪功能,該方法需要傳入一個(gè)為 Object形式的配置項(xiàng)參數(shù)?蛇x的配置項(xiàng)包括圖片比例、默認(rèn)裁剪框的百分比、圖片縮放、限制裁剪大小等。
# p: n: f* m/ n) m* g# A9 b0 C+ r$ t6 }
首先需要在 HTML 文件中放置一個(gè) img 標(biāo)簽供該插件使用:
" |8 V. P [) v, y( D3 T% L5 _* P: b) p7 _8 w* ^7 u
"container"> img id="crop" src="" alt="" style="display: none;"/>div>開始裁剪:$("#crop").cropper({ autoCropArea: 0.85});3 s6 H5 V: J. X- |1 q/ r
獲得裁剪后的圖片信息,為 DataURL 形式:
! _0 z$ q' B* F$ u- Q3 B) J) d7 B. H$ p3 y9 ~, B1 W
var dataURL = $("#container #crop").cropper("getCroppedCanvas").toDataURL();
; {7 B+ o( I; a1 B# E5.5、上傳圖片
: i, G4 _" E v- a' X* G5 e5 i
# U! K; T5 E7 x5 X需要使用 Cordova 插件 org.apache.cordova.file-transfer。在終端中輸入 cordova plugin add org.apache.cordova.file-transfer,可安裝。該插件提供了全局的FileTransfer和FileUploadOptions構(gòu)造函數(shù),使用時(shí)需要先實(shí)例化。實(shí)例化FileUploadOptions后需要配置fileKey,這是一個(gè)字符串,需要跟服務(wù)器端統(tǒng)一,這樣服務(wù)器端才可根據(jù)該 Key值取到相應(yīng)的上傳圖片。實(shí)例化FileTransfer后需要傳入五個(gè)參數(shù),分別是上傳的數(shù)據(jù)、服務(wù)器地址、上傳成功的回調(diào)、上傳失敗的回調(diào)和FileUploadOptions實(shí)例化對(duì)象。上傳代碼如下:
- o. f) z* D2 G. I) I0 j, p/ u
var options = new FileUploadOptions();options.fileKey = "ocrImage";options.chunkedMode = false;
* y5 S, r* `5 I) B, B% m5 gvar uri = encodeURI("http://dev.paper-reader.avosapps.com/upload");var ft = new FileTransfer();
; G5 d$ m. ]' [) q2 hft.upload(dataURL, uri, function (r) { window.plugins.spinnerDialog.hide(); var text = r.response; localStorage.setItem("text", text); location.href = "speak.html"; }, function (error) {}, options);
* t+ o2 g1 }! ]# X; a( A在獲取 OCR 識(shí)別后的文字,需要該文件存儲(chǔ)在 localStorage 中,以便下一次的使用。這一步的操作將放到跳轉(zhuǎn)到朗讀頁面后進(jìn)行。存儲(chǔ)的內(nèi)容包括新聞標(biāo)題、正文以及一個(gè)全局 id,全局id 用于在朗讀或者刪除時(shí)在 localStorage 中找到對(duì)應(yīng)的內(nèi)容。默認(rèn)將文本的第一行作為標(biāo)題,其余部分為正文。存儲(chǔ)代碼如下:5 x5 u6 B+ e3 p2 |, A( G* M
& ^; i/ Q6 C# y3 `6 P9 B6 Lvar obj = {};var current = parseInt(localStorage.getItem("current")) + 1;title = text.split("/ S! h3 ^- k$ A# _: K5 X k
")[0];var content = text.split("! [$ n- I; ]1 [: R. E0 o
").slice(1).join("");8 x" t j( w, C+ j0 j' w) Z
id = current;obj.id = current;obj.title = title;obj.content = content;newsList = JSON.parse(localStorage.getItem("news"));newsList.push(obj);localStorage.setItem("news", JSON.stringify(newsList));localStorage.setItem("current", current);0 k$ e$ P0 s7 z7 Y
5.6、瀏覽新聞4 U# a. O2 z! j2 p: H$ Y7 S, g1 D
需要先將所有存儲(chǔ)在 localStorage 中的新聞條目取出,再逐條渲染在一個(gè)列表中。該頁面提供兩種操作:點(diǎn)擊新聞,即可跳轉(zhuǎn)到朗讀界面,自動(dòng)朗讀該條新聞; a. L( a9 h" Y% K3 r/ x3 v% i
長按新聞,將會(huì)彈出一個(gè)對(duì)話框詢問是否刪除該條新聞,如果選擇“確定”將會(huì)把該條新聞從列表和 localStorage 存儲(chǔ)中移除。
4 W0 \! {/ f; O4 y. l6 Y9 [* Q* I
var newsList = JSON.parse(localStorage.getItem("news"));var newsElem = document.getElementById("news");var template = '%title%';var elemList = []; if (newsList.length == 0) { document.getElementById("tip-container").style.display = "block"; return;} for (var i = 0, length = newsList.length; i var id = newsList.id; var title = newsList.title; var elemStr = template.replace("%link%", "speak.html?id=" + id) .replace("%title%", title) .replace("%id%", id); elemList.push(elemStr); } newsElem.innerHTML = elemList.join(""); newsElem.style.display = "block";7 L7 ^1 e2 T" D1 m. S3 x" B; ]1 x$ J
5.7、朗讀
/ s) E% Z3 b# N; j- _3 Q需要使用 Cordova 插件 com.wordsbaking.cordova.tts。在終端中輸入 cordova plugin add com.wordsbaking.cordova.tts,即可安裝。該插件提供TTS.speak這個(gè)方法用于朗讀指定的文本。使用該方法需要傳入三個(gè)參數(shù),分別是朗讀配置項(xiàng)、朗讀成功后的回調(diào)函數(shù)和朗讀失敗后的回調(diào)函數(shù)。其中朗讀配置項(xiàng)是一個(gè)Object形式的參數(shù),可設(shè)置朗讀文本、朗讀語音和朗讀速率。如果需要停止朗讀,則需調(diào)用TTS.stop()這個(gè)方法。
5 v0 A% U; I2 \) C/ t, `9 U; z% W5 z' N3 I
TTS.speak({ text: text, locale: "zh-CN", rate: 0.75}, function () {}, function () {});4 t. q2 N1 U1 A# n
5.8、音量調(diào)節(jié)
G3 ]) @; u5 y* ]4 O/ `, F* Q+ y" W( Y+ a# q6 J' ]6 E
需要使用 Cordova 插件 com.develcode.plugins.volumeControl。在終端中輸入 cordova plugin add git+https://github.com/manusimpson/Phonegap-Android-VolumeControl.git,即可安裝。該插件提供了名為VolumeControl.setVolume的方法用于控制音量。 c: I' R( N5 P4 G) {
. l0 W/ Y" Z' ~5 a4 J& r使用該方法是需要傳入三個(gè)參數(shù),分別是目標(biāo)音量大小、調(diào)整音量成功后的回調(diào)函數(shù)和調(diào)整音量失敗后的回調(diào)函數(shù)。如果需要獲取當(dāng)前音量大小,則使用 VolumeControl.getVolume 方法即可。
8 C* u( r$ s! }) [- F3 J4 B2 d' ^3 m) |( d+ d8 I9 {, F
VolumeControl.setVolume(parseInt(elem.value), onVolSuccess, onVolError); function onVolSuccess(){}function onVolError(){}) G: }8 r4 }0 A. P7 q- c+ O$ w
5.9、音量條UI
0 V$ N/ t7 C2 O4 F6 u A! p5 i" a2 q2 @1 |) D$ u5 M
需要使用插件 Powerange。這是一款具有 iOS7 風(fēng)格的滑塊插件。首先需要到該插件官網(wǎng)http://abpetkov.github.io/powerange/ 下載。完成后解壓,并將相應(yīng)的 JavaScript文件和CSS文件拷貝到項(xiàng)目文件夾www目錄中對(duì)應(yīng)的文件夾。該插件提供了名為Powerange的構(gòu)造函數(shù)。實(shí)例化時(shí)需要傳入兩個(gè)參數(shù),分別是用于綁定的HTML Input元素和配置項(xiàng)。其中配置項(xiàng)包括一系列可選的參數(shù),包括移動(dòng)滑塊后觸發(fā)的回調(diào)函數(shù)、滑塊的取值范圍、起始位置等。使用代碼如下:
N* M0 o4 c( ?) W# E) A8 y* C2 r6 o
"range-container"> input type="text" name="range" id="range" style="display: none;"/>div> var elem = document.getElementById("range");new Powerange(elem, { min: 0, max: 100, start: parseInt(localStorage.getItem("volume")), callback: function() { VolumeControl.setVolume(parseInt(elem.value), onVolSuccess, onVolError); localStorage.setItem("volume", elem.value + ""); }});
, \( s( ^4 N/ H! {$ Z- ^- w9 s# u
( _3 P8 T1 j- [$ \/ }2 Y5.10、檢測網(wǎng)絡(luò)狀態(tài)
% ]+ P5 f1 N" a3 w! h( W2 k4 w! K) s" |
需要使用 Cordova 插件 org.apache.cordova.network-information。在終端中輸入 cordova plugin add org.apache.cordova.network-information,即可安裝。通過獲取 navigator.connection.type 該屬性的值即可得知用戶實(shí)時(shí)的網(wǎng)絡(luò)狀況。由于這里僅需要在用戶無網(wǎng)絡(luò)連接時(shí)給出提醒,因此僅需判斷 navigator.connection.type 是否 為 “none” 即可。代碼如下:4 I$ G, r7 f& e/ R7 x, ]
6 l% ^ I0 V3 R6 Z* k2 r& n. ^
var networkState = navigator.connection.type;& q/ {2 i( T" c/ t5 T. R( b
if (networkState == "none") { navigator.notification.confirm( "檢測到您已經(jīng)斷開網(wǎng)絡(luò),是否馬上打開?", onConfirm, "未聯(lián)網(wǎng)", ["取消", "去打開"] );
5 C6 I4 X0 _+ V function onConfirm(buttonIndex) { if (buttonIndex == 2) { LocationAndSettings.switchToWifiSettings(); }}
& b9 [* k& { D. t- g r$ K- T& F5.11、檢測是否安裝訊飛語音
( e* w- N& x; r1 s% _. _
$ |5 P. y8 N* Y m, W2 p" ^% Z$ `) u, e8 h需要使用 Cordova 插件 com.ohh2ahh.plugins.appavailability。在終端輸入 cordova plugin add com.ohh2ahh.plugins.appavailability,即可安裝。該插件提供了名為appAvailability.check的方法用于檢測特定的APP是否有被安裝在手機(jī)上。使用該方法時(shí)需要傳入三個(gè)參數(shù),分別是APP的包名、檢測到成功安裝的回調(diào)函數(shù)和檢測到未成功安裝的回調(diào)函數(shù)。使用代碼如下:
+ S9 F: }% j, ^
3 l3 ]+ [1 A% ]2 C9 ZappAvailability.check( ' com.iflytek.tts ', function() { // 已安裝 }, function() { // 未安裝 });' m( {3 o) U: e
5.12、跳轉(zhuǎn)至設(shè)置界面
W) { a( K5 V& N }# t* l$ S0 N/ L0 P9 ~0 B0 p
需要使用 Cordova 插件 sk.tamex.locationandsettings。在終端中輸入 cordova plugin add sk.tamex.locationandsettings,即可安裝。該插件提供了一系列的設(shè)置功能,包括對(duì)Wifi、GPS和TTS等。這里僅需要使用跳轉(zhuǎn)至Wifi和TTS設(shè)置界面的功能即可。
7 L& N1 {1 S; W' S3 _. k) L& V4 s, ^1 I" \6 _$ g5 L) m0 ]9 \
跳轉(zhuǎn)至 Wifi 設(shè)置界面,使用如下方法:- f0 e" v+ l: ~3 a2 G7 e4 s
7 _, s$ _) I8 O+ p" ]
LocationAndSettings.switchToWifiSettings();
% t+ l( @& d# z! L7 `) N; V跳轉(zhuǎn)至 TTS設(shè)置界面,使用如下方法:
; D. X8 D% {, ^) o5 P
Q: D8 K R3 ^6 Q4 Z$ PLocationAndSettings.switchToTTSSettings();
( E- g) z s. u9 d" Y
2 n1 V: G1 A3 o! N/ l8 z* j6' w+ H6 U6 K! V6 R, X3 M# \3 P
項(xiàng)目效果
+ P$ Y1 ^& i9 ?' m7 d5 S6 v$ S% L) ]6 W; N
點(diǎn)擊“拍照”后跳轉(zhuǎn)至系統(tǒng)設(shè)置界面:
. ^$ ^- B6 v8 l* S0 R( c k
& e S+ ~* s$ ?
edvuidcbmjn6406115346.png (345.19 KB, 下載次數(shù): 0)
下載附件
保存到相冊
edvuidcbmjn6406115346.png
2024-9-8 09:53 上傳
& n" t" W# v) j) f H+ u3 ]) I4 Q8 A) O6 d/ y6 `
拍照完成后跳轉(zhuǎn)至裁剪圖片界面:
. _( i8 @- c A* w2 u5 f7 F0 ~: `5 W; P( p. {
sr4gfvrxf4d6406115446.png (272.38 KB, 下載次數(shù): 0)
下載附件
保存到相冊
sr4gfvrxf4d6406115446.png
2024-9-8 09:53 上傳
O! {' C7 H! u! h
1 I2 A& B3 t" O S8 [中間的方格框可隨意拖動(dòng),當(dāng)裁剪到合適大小后向下滾動(dòng)頁面,點(diǎn)擊“確定”按鈕開始進(jìn)行 OCR 識(shí)別,點(diǎn)擊“取消”返回到啟動(dòng)界面:
2 T ~$ F% t1 H o/ m
a, P: q$ N" g/ U8 n3 V! X
0fl31ljlxuf6406115547.png (245.95 KB, 下載次數(shù): 0)
下載附件
保存到相冊
0fl31ljlxuf6406115547.png
2024-9-8 09:53 上傳
! }6 k+ K0 @$ C7 |
0 i2 N! S3 E9 {1 T3 R _經(jīng)過實(shí)際測試,在 wifi 條件下識(shí)別大概需要 30秒 的時(shí)間:& W7 u1 r3 w4 i& j9 H
* u; W* [8 K- ?
vakeofdw5qo6406115647.png (89.17 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vakeofdw5qo6406115647.png
2024-9-8 09:53 上傳
7 |7 f' y n( O8 ` E$ R5 e
; d+ o4 w9 H: r0 d. n9 C) h識(shí)別結(jié)果:. o" H( I; ~+ @& g
+ l# [+ f9 s+ o8 H; \( R
kldybyfks2q6406115747.png (197.71 KB, 下載次數(shù): 0)
下載附件
保存到相冊
kldybyfks2q6406115747.png
2024-9-8 09:53 上傳
( X' h( D! o3 h) o/ q. F, N4 Y8 V4 e
識(shí)別完成即自動(dòng)開始朗讀,以下為朗讀時(shí)的界面,提供音量調(diào)節(jié)功能(會(huì)自動(dòng)記住上一次設(shè)置的音量,避免每次播放都要調(diào)大音量,默認(rèn)的音量為50%大。约爸貜(fù)朗讀功能:2 y+ s, ~$ V$ U* f+ C, Q4 Q6 k9 x
0 U- P: V+ b! n% z3 C2 R, A
0lrqcs51yyo6406115847.png (65.31 KB, 下載次數(shù): 0)
下載附件
保存到相冊
0lrqcs51yyo6406115847.png
2024-9-8 09:53 上傳
7 C! O1 ^. R! U! _8 a; M8 E" T" n
點(diǎn)擊“語音設(shè)置”按鈕,跳轉(zhuǎn)到系統(tǒng)的語音設(shè)置界面,可進(jìn)行一系列相關(guān)的設(shè)置:
% R' P; d& K6 B) [
9 w: J8 F( C4 h, a) u+ D
vyl4maynevs6406115948.png (72.42 KB, 下載次數(shù): 0)
下載附件
保存到相冊
vyl4maynevs6406115948.png
2024-9-8 09:53 上傳
; K- ^6 @) Z$ h6 A
0 [9 j9 T/ U2 L l% u
3 E, q5 _" H* z" \* Q1 Z+ N
iu3p0n54s5l6406116048.png (112.94 KB, 下載次數(shù): 1)
下載附件
保存到相冊
iu3p0n54s5l6406116048.png
2024-9-8 09:53 上傳
, I! n" M+ A) M; o
$ j0 w6 ^! l+ h重新打開軟件,點(diǎn)擊“瀏覽”,來到新聞列表界面,點(diǎn)擊相關(guān)條目即可直接朗讀:
3 f+ b- f: T( h5 h& j* d7 X0 \5 z8 H/ v8 T& u
4icz1ogl2xj6406116148.png (58.4 KB, 下載次數(shù): 0)
下載附件
保存到相冊
4icz1ogl2xj6406116148.png
2024-9-8 09:53 上傳
: A6 m; U ]& r" [
- F1 M& o6 C3 x6 R) ?如果需要?jiǎng)h除某條新聞,長按該條新聞即可:
7 r( X. _3 }. l% T/ D+ @6 _: x% E; h( V/ \! }5 F. U7 L9 V& g
k5qafvq0wbt6406116248.png (69.48 KB, 下載次數(shù): 0)
下載附件
保存到相冊
k5qafvq0wbt6406116248.png
2024-9-8 09:53 上傳
( ]+ ?+ A, p5 s% _7 x
4 o" D9 g. s3 a$ T9 K; u4 q; k由于本應(yīng)用需要使用科大訊飛的語音引擎,以及 OCR 識(shí)別需要在聯(lián)網(wǎng)的條件的進(jìn)行,因此當(dāng)檢測到以上條件不滿足時(shí)會(huì)給用戶提醒:
" H; c% c8 f5 b% _7 p: u* s) S$ \/ E# o* G
brc251rvzvm6406116348.png (58.88 KB, 下載次數(shù): 0)
下載附件
保存到相冊
brc251rvzvm6406116348.png
2024-9-8 09:53 上傳
. j. P5 A( B F8 s+ ?
8 g& d# N0 W0 ]2 a O1 Z
; e1 y, x& V- i: Y
aiggygfre3j6406116449.png (160.78 KB, 下載次數(shù): 0)
下載附件
保存到相冊
aiggygfre3j6406116449.png
2024-9-8 09:53 上傳
8 `% n+ X; P* E* i8 x
2 [# Y. Y. w7 A% y0 I) N% H, Y" i/ V) P7 k B2 `# `
7
6 V: F) c4 Z; \: u& o1 J# `兼容性測試4 D0 ^' ^* J7 w2 `
8 L1 {$ a1 x* C8 ]0 ]3 t0 S* b兼容性是指硬件之間、軟件之間或是軟硬件組合系統(tǒng)之間的相互協(xié)調(diào)工作的程度。兼容的概念比較廣,對(duì)于軟件的兼容性,指的是指某個(gè)軟件能穩(wěn)定地工作在若干個(gè)操作系統(tǒng)之中,而不會(huì)出現(xiàn)意外的退出等問題。8 }' T# D; [3 x! J" q' t
; D4 r' t" a* d
這里使用阿里移動(dòng)測試服務(wù)對(duì)本應(yīng)用進(jìn)行基本的兼容性測試,地址是http://mts.aliyun.com。阿里移動(dòng)測試服務(wù)是為廣大移動(dòng)開發(fā)者提供真機(jī)測試服務(wù)的云平臺(tái),擁有大量熱門機(jī)型,提供7x24全天候服務(wù)。能夠幫助開發(fā)者以最低的成本、最高的效率發(fā)現(xiàn)APP中的各類隱患,包括APP崩潰、各類兼容性、功能性、性能問題等。網(wǎng)站界面如下圖所示:
; J! j. u" Z. w) j ~( j6 x6 d* `
mlq2njkm0yh6406116549.png (185.49 KB, 下載次數(shù): 0)
下載附件
保存到相冊
mlq2njkm0yh6406116549.png
2024-9-8 09:53 上傳
2 k* B- ?* ^$ Q. R) Z+ F6 b f7 X7 Z+ m7 F6 |1 ]2 C
測試使用的手機(jī)設(shè)備包括三星、華為、小米和魅族一共30部手機(jī),測試的Android操作系統(tǒng)版本從4.0.4 到4.4.4,已經(jīng)涵蓋了市面上大多數(shù)的Android熱門機(jī)型,因此其測試結(jié)果也是具有一定的實(shí)際意義的。本應(yīng)用的兼容性測試結(jié)果如下圖所示:
1 v3 F: j% ^" {7 A; c1 k. L
; z! A+ y; ]3 ?0 K
fi4ev5by51o6406116649.png (75.58 KB, 下載次數(shù): 0)
下載附件
保存到相冊
fi4ev5by51o6406116649.png
2024-9-8 09:53 上傳
$ Y% U) O) u/ z W4 X4 X7 \: h& c' D; w/ N
8- `2 T* _% n+ F- D; X1 n
模塊功能測試
# M2 C( b! _+ G [- Q5 W! N
2 w( i* K# g8 L' e& R功能測試,也稱為行為測試,根據(jù)產(chǎn)品特性、操作描述和用戶方案,測試一個(gè)產(chǎn)品的特性和可操作行為以確定它們滿足設(shè)計(jì)需求。功能測試是為了確保程序以期望的方式運(yùn)行而按功能要求對(duì)軟件進(jìn)行的測試,通過對(duì)一個(gè)系統(tǒng)的所有的特性和功能都進(jìn)行測試確保符合需求和規(guī)范。功能測試也叫黑盒測試或數(shù)據(jù)驅(qū)動(dòng)測試,只需考慮需要測試的各個(gè)功能,不需要考慮整個(gè)軟件的內(nèi)部結(jié)構(gòu)及代碼.一般從軟件產(chǎn)品的界面、架構(gòu)出發(fā),按照需求編寫出來的測試用例,輸入數(shù)據(jù)在預(yù)期結(jié)果和實(shí)際結(jié)果之間進(jìn)行評(píng)測,進(jìn)而提出更加使產(chǎn)品達(dá)到用戶使用的要求。測試用例與測試結(jié)果分別如下表所示:
4 w. S8 l- y) e) q! l [6 a% h, t+ B2 I* w9 B
0sden4ntpyj6406116749.png (569.02 KB, 下載次數(shù): 0)
下載附件
保存到相冊
0sden4ntpyj6406116749.png
2024-9-8 09:53 上傳
2 c: q1 Y* U8 T4 i. C( v! s
' T+ Y% t# n `8 e& b
iy3oaipj3kd6406116850.png (417.73 KB, 下載次數(shù): 0)
下載附件
保存到相冊
iy3oaipj3kd6406116850.png
2024-9-8 09:53 上傳
" M" j( k0 z8 J/ x* W. |5 c6 R. x
. ]6 |0 p+ u' L9 h( `5 C ~
9 @' w5 H8 R( e! i
, N+ v0 |8 j& a" b7 G5 K; ~
okoi4l5d1jv6406116950.png (401 Bytes, 下載次數(shù): 0)
下載附件
保存到相冊
okoi4l5d1jv6406116950.png
2024-9-8 09:53 上傳
& |2 C. L; E$ w
往期推薦詳解CAN總線:標(biāo)準(zhǔn)數(shù)據(jù)幀和擴(kuò)展數(shù)據(jù)幀
1 M1 Y5 l1 r; z% H( o& g! m- uLabVIEW儀器控制:智能直流電源(科睿源KA3003)1 |6 f% \" ?( Y& t E ?0 J
LabVIEW實(shí)現(xiàn)PCB電路板坐標(biāo)定位(實(shí)戰(zhàn)篇—2)
+ X, e8 c. U) X& R網(wǎng)線的粗細(xì)和傳輸速率有關(guān)系嗎?6類線為什么比超5類線速率快- b0 S4 _9 U! M6 ?% h
LabVIEW OCR 實(shí)現(xiàn)車牌識(shí)別. a& g. o2 e4 F# `
3D激光雷達(dá)和相機(jī)的外部校準(zhǔn)
+ p2 l8 f2 n0 w$ M( h為什么圖片識(shí)別要將彩色圖像灰度化?, f8 V0 X4 |" h( h) a2 \
工業(yè)物聯(lián)網(wǎng)LCD數(shù)碼屏的驅(qū)動(dòng)原理及低功耗設(shè)計(jì)- [: b% {* G. n& h* R
6 c9 P: U+ ?5 G$ Q- s( w) x; F2 d項(xiàng)目工程資源下載請參見:https://download.csdn.net/download/m0_38106923/878450182 q5 _9 Q- o' U' N6 _; Z0 ]( @
@8 ?5 t0 u( y' Q I
0 P) d' n% p4 G: D) B! h6 F* X
: f9 h V3 x9 |
( Z$ f. J4 p- @+ X* P8 E- O點(diǎn)擊閱讀原文,更精彩~ |
|