高佩 劉洪星 張朋 張笑 李廣田
摘要:人們生活中的絕大部分信息都是通過(guò)視覺(jué)獲得的,所以盲人能夠從外界獲取的信息量很少,但這并不能阻止他們努力提高生活質(zhì)量的渴望。智能手機(jī)的快速發(fā)展給盲人提供了前所未有的機(jī)遇。開(kāi)發(fā)盲人手機(jī)具有極大的應(yīng)用價(jià)值。該文主要介紹了在Android平臺(tái)上設(shè)計(jì)和實(shí)現(xiàn)的一款盲人手機(jī)系統(tǒng),該系統(tǒng)使用了語(yǔ)音識(shí)別、語(yǔ)音合成及Web Service等相關(guān)技術(shù),實(shí)現(xiàn)了語(yǔ)音撥打電話(huà)、語(yǔ)音接聽(tīng)電話(huà)、語(yǔ)音發(fā)送短信、語(yǔ)音播報(bào)來(lái)電短信、語(yǔ)音報(bào)時(shí)、語(yǔ)音播報(bào)日期和語(yǔ)音播報(bào)天氣等功能,并能在Android手機(jī)中穩(wěn)定運(yùn)行,方便盲人使用手機(jī),具有較高的實(shí)用價(jià)值。
關(guān)鍵詞:Android;盲人手機(jī);語(yǔ)音合成;語(yǔ)音識(shí)別
中圖分類(lèi)號(hào):TN929 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)19-4446-04
Design and Implementation of Mobile Phone System for the Blind Based on Android
GAO Pei, LIU Hong xing, ZHANG Peng, ZHANG Xiao, LI Guang-tian
(College of Computer Science and Technology , Wuhan University of Technology, Wuhan 430063,China)
Abstract: Most of the information in people's lives is obtained through visual, so the blind can rarely get information from the outside, but that cant stop them from efforts to improve the quality of life. The rapid development of the smartphones provides blind people with an unprecedented opportunity. And developing mobile phones for the blind has great practical value. This paper introduces the design and implementation of mobile phone system for the blind based on Android, which uses the technologies of speech recognition, speech synthesis and Web Service, and it has achieved making and receiving calls by voice command, sending and receiving text messages by voice command, telling time, date and weather by voice command and so on, which can run steadily on the Android platform to help the blind use mobile phones, which has high practical value.
Key words: Android; mobile phones for the blind; speech synthesis; speech recognition
教育心理學(xué)研究表明:人們生活中獲取的外界信息大約83%來(lái)自視覺(jué),11%來(lái)自聽(tīng)覺(jué),這就導(dǎo)致了盲人能夠從外界獲取的信息量很少。如何幫助盲人利用聽(tīng)覺(jué)、觸覺(jué)等其他感官來(lái)更多地獲取外界信息,更好地融入社會(huì)生活,享受科技進(jìn)步帶來(lái)的便利?智能手機(jī)快速的發(fā)展為這一問(wèn)題找到了解決途徑。它豐富的傳感器、強(qiáng)大的網(wǎng)絡(luò)功能和計(jì)算能力、不斷擴(kuò)展的連接能力,以及云計(jì)算的廣泛使用,使殘疾人可望更準(zhǔn)確、實(shí)時(shí)地感知周邊環(huán)境,使用適合自身的方式來(lái)表達(dá)自己,在更大范圍內(nèi)參與工作和生活,充分實(shí)現(xiàn)自己的人生價(jià)值。面向盲人開(kāi)發(fā)的智能手機(jī)(盲人手機(jī)),具有極大的應(yīng)用價(jià)值。
在Android移動(dòng)平臺(tái)上,開(kāi)發(fā)了一款盲人手機(jī)系統(tǒng),該系統(tǒng)以語(yǔ)音合成及語(yǔ)音識(shí)別為基礎(chǔ),使盲人能夠通過(guò)聲音控制系統(tǒng)功能的執(zhí)行,并通過(guò)觸控語(yǔ)音提示反饋信息,以此來(lái)實(shí)現(xiàn)手機(jī)與盲人的交互。以方便盲人順利完成接打電話(huà),收發(fā)短信,語(yǔ)音報(bào)時(shí)等功能。這不僅是盲人的渴望,同時(shí)也是科技進(jìn)步對(duì)手機(jī)發(fā)展的要求。系統(tǒng)設(shè)計(jì)的功能包括:1) 語(yǔ)音接打電話(huà);2) 語(yǔ)音收發(fā)短信;3) 語(yǔ)音報(bào)時(shí);4) 語(yǔ)音播報(bào)日期;5) 語(yǔ)音播報(bào)天氣。
1 系統(tǒng)設(shè)計(jì)
1.1系統(tǒng)功能劃分
本系統(tǒng)業(yè)務(wù)邏輯分為語(yǔ)音撥號(hào)、語(yǔ)音接聽(tīng)電話(huà)、語(yǔ)音發(fā)送短信、語(yǔ)音接收短信、語(yǔ)音報(bào)時(shí)、語(yǔ)音播報(bào)日期、語(yǔ)音播報(bào)天氣和語(yǔ)音搜索播放音樂(lè)等功能模塊。系統(tǒng)功能模塊圖如圖1所示。
本系統(tǒng)中語(yǔ)音模塊的實(shí)現(xiàn)擬通過(guò)標(biāo)準(zhǔn)的接口接入安徽科大訊飛的移動(dòng)語(yǔ)音平臺(tái)iFLY Mobile Speech Platform(以下簡(jiǎn)稱(chēng)MSP)來(lái)實(shí)現(xiàn)[1]。系統(tǒng)中語(yǔ)音接打電話(huà),語(yǔ)音收發(fā)短信會(huì)調(diào)用手機(jī)數(shù)據(jù)庫(kù)中的通訊錄,進(jìn)行號(hào)碼與聯(lián)系人之間相互匹配;同時(shí),其中的語(yǔ)音播報(bào)天氣模塊需要調(diào)用Web Service,以此來(lái)獲取天氣情況。
1.2系統(tǒng)流程圖
系統(tǒng)由一個(gè)主頁(yè)面和后臺(tái)功能服務(wù)構(gòu)成,當(dāng)用戶(hù)打開(kāi)軟件,點(diǎn)擊主頁(yè)面語(yǔ)音按鈕時(shí),此時(shí)進(jìn)入語(yǔ)音輸入模塊,用戶(hù)說(shuō)出語(yǔ)音指令,系統(tǒng)根據(jù)預(yù)先定義的語(yǔ)法文件,選擇進(jìn)入相應(yīng)的功能子模塊,順利完成該功能后,程序返回繼續(xù)監(jiān)聽(tīng)用戶(hù)的點(diǎn)擊操作。系統(tǒng)總體流程圖如圖2所示。endprint
圖2 系統(tǒng)總體流程圖
注:圖2中*代表聯(lián)系人、號(hào)碼、歌曲名或城市名
1.3系統(tǒng)功能模塊設(shè)計(jì)
下面對(duì)圖2中幾個(gè)主要子系統(tǒng)模塊的功能和流程進(jìn)行分析與設(shè)計(jì):
1) 撥打電話(huà)邏輯設(shè)計(jì)
該子系統(tǒng)主要是為了方便用戶(hù)撥打電話(huà),當(dāng)用戶(hù)需要打電話(huà)的時(shí)候,只需要通過(guò)相應(yīng)的語(yǔ)音指令告訴手機(jī),打電話(huà)給聯(lián)系人或號(hào)碼,系統(tǒng)即可分辨出關(guān)鍵詞“打電話(huà)”進(jìn)而轉(zhuǎn)入該子系統(tǒng)。在指令中用戶(hù)有兩種選擇:一、打電話(huà)給聯(lián)系人,此時(shí)系統(tǒng)調(diào)用手機(jī)數(shù)據(jù)庫(kù)中的通訊錄查找該聯(lián)系人,如果找到該聯(lián)系人則直接進(jìn)行撥號(hào),否則,提示未找到該聯(lián)系人;二、打電話(huà)給電話(huà)號(hào)碼,此時(shí)系統(tǒng)直接提取號(hào)碼進(jìn)行撥號(hào)。具體流程如圖3所示。
2) 發(fā)送短信邏輯設(shè)計(jì)
該子系統(tǒng)主要是為了方便用戶(hù)發(fā)送短信,當(dāng)用戶(hù)需要發(fā)送短信的時(shí)候,只需要通過(guò)相應(yīng)的語(yǔ)音指令告訴手機(jī),發(fā)短信給聯(lián)系人或號(hào)碼,系統(tǒng)即可分辨出關(guān)鍵詞“發(fā)短信”進(jìn)而轉(zhuǎn)入該子系統(tǒng)。在指令中用戶(hù)有兩種選擇:一、發(fā)短信給聯(lián)系人,此時(shí)系統(tǒng)調(diào)用手機(jī)數(shù)據(jù)庫(kù)中的通訊錄查找該聯(lián)系人,如果找到該聯(lián)系人則提示請(qǐng)輸入短信內(nèi)容,語(yǔ)音輸入短信內(nèi)容后,系統(tǒng)提示短信已編輯完成發(fā)送或取消,語(yǔ)音輸入發(fā)送或取消。若為發(fā)送,則直接發(fā)送,并提示發(fā)送成功;若取消,則提示短信已取消。如果未找到該聯(lián)系人則提示未找到聯(lián)系人;二、發(fā)短信給電話(huà)號(hào)碼,此時(shí)系統(tǒng)直接提取號(hào)碼進(jìn)入短信編輯步驟。
3) 播報(bào)天氣邏輯設(shè)計(jì)
該子系統(tǒng)主要是為了方便用戶(hù)了解天氣,當(dāng)用戶(hù)需要了解天氣的時(shí)候,只需通過(guò)相應(yīng)的語(yǔ)音指令告訴手機(jī),某地今天/明天天氣怎么樣,系統(tǒng)即可分辨出關(guān)鍵詞“天氣”進(jìn)而轉(zhuǎn)入該子系統(tǒng)。系統(tǒng)通過(guò)Web Service訪(fǎng)問(wèn)www.webxml.com.cn網(wǎng)站獲取天氣情況,并將結(jié)果進(jìn)行解析從而獲得最終結(jié)果,最后以語(yǔ)音的方式向用戶(hù)播報(bào)。
4) 接聽(tīng)電話(huà)邏輯設(shè)計(jì)
Android的CALL接收機(jī)制是由Broadcast Receiver(廣播接收器)來(lái)完成的,當(dāng)電話(huà)打進(jìn)的時(shí)候會(huì)廣播一個(gè)Telephony Manager. CALL_STATE_RINGING的消息,可以通過(guò)在資源文件AndroidManifest.xml的Inter Filter中攔截這個(gè)消息,也可以選擇在Activity中注冊(cè)這個(gè)消息來(lái)實(shí)現(xiàn)[2]。同時(shí),系統(tǒng)獲取來(lái)電號(hào)碼并在手機(jī)數(shù)據(jù)庫(kù)通訊錄中查找該聯(lián)系人,如果找到該聯(lián)系人,則提示聯(lián)系人打來(lái)電話(huà)請(qǐng)接聽(tīng),否則直接播報(bào)號(hào)碼打來(lái)電話(huà)請(qǐng)接聽(tīng)。
5) 接收短信邏輯設(shè)計(jì)
Android的SMS接收機(jī)制是由Broadcast Receiver(廣播接收器)來(lái)完成的,當(dāng)電話(huà)打進(jìn)的時(shí)候會(huì)廣播一個(gè)android. provider. Telephony. SMS_RECEIVED的消息,可以對(duì)其進(jìn)行偵聽(tīng)攔截[2]。同時(shí),系統(tǒng)獲取來(lái)電號(hào)碼并在手機(jī)數(shù)據(jù)庫(kù)通訊錄中查找該聯(lián)系人,如果找到該聯(lián)系人,則提示聯(lián)系人發(fā)來(lái)短信請(qǐng)查看,否則直接播報(bào)號(hào)碼發(fā)來(lái)短信請(qǐng)查看。
2 系統(tǒng)實(shí)現(xiàn)
介紹系統(tǒng)功能的實(shí)現(xiàn)過(guò)程,包括語(yǔ)音合成和識(shí)別功能,訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)和Web Service功能的實(shí)現(xiàn)。
2.1語(yǔ)音識(shí)別功能實(shí)現(xiàn)
本系統(tǒng)中所實(shí)現(xiàn)的各個(gè)功能都是基于語(yǔ)音合成和語(yǔ)音識(shí)別技術(shù),其具體實(shí)現(xiàn)都是采用科大訊飛的MSP??拼笥嶏w的MSP移動(dòng)語(yǔ)音云平臺(tái)目前只提供一種語(yǔ)音識(shí)別的方法,即語(yǔ)音識(shí)別控件(Recognizer Dialog)[3],其函數(shù)原型為:
public RecognizerDialog(Context context, String params);
以下是系統(tǒng)中語(yǔ)音識(shí)別的部分關(guān)鍵代碼:
RecognizerDialog isrDialog=new
RecognizerDialog(MainActivity.this,"appid=51540a3e");//創(chuàng)建語(yǔ)音識(shí)別對(duì)象
isrDialog.setListener(recognizeListener);
String grammar="#ABNF 1.0 gb2312;\n" +
"language zh-CN;\n" +
"mode voice;\n" +
"root $main;\n" +
"$main=現(xiàn)在什么時(shí)間|現(xiàn)在幾點(diǎn)鐘|今天幾月幾號(hào)|打電話(huà)給$contact|$city $date 天氣怎么樣|發(fā)短信給$contact |來(lái)一首$song;\n" +
"$contact=${names} |$digit<3-11>;\n" +
"$date=今天|明天;\n"+
"$city=武漢|北京|上海|廣州|深圳|重慶;\n"+
"$digit=0|1|幺|2|3|4|5|6|7|8|9;\n"+
"$song=自由飛翔;\n"; //語(yǔ)法文件
grammar=grammar.replace("${names}",a);
isrDialog.setEngine("asr","grammar_type=abnf",grammar); //進(jìn)行語(yǔ)法文件識(shí)別
String text= results.get(0).text; //獲取結(jié)果
2.2語(yǔ)音合成功能的實(shí)現(xiàn)
科大訊飛的MSP移動(dòng)語(yǔ)音平臺(tái)共提供兩種中文語(yǔ)音合成的使用方法:語(yǔ)音合成控件(SynthesizerDialog)及語(yǔ)音合成播放器(SynthesizerPlayer)[3]。本系統(tǒng)采用第二種語(yǔ)音合成方法,通過(guò)此接口可以實(shí)現(xiàn)在后臺(tái)進(jìn)行語(yǔ)音合成播放,而不需要通過(guò)SynthesizerDialog顯示界面。其函數(shù)原型為:
Public static SynthesizerPlayer createSynthesizer
Player(Context context ,String params);
以下是系統(tǒng)中語(yǔ)音合成的部分關(guān)鍵代碼:
SynthesizerPlayer player; //創(chuàng)建合成對(duì)象
player=SynthesizerPlayer.createSynthesizerPlayer(MainActivity.this,"appid=51540a3e");
player.setVoiceName("vixnn");//設(shè)置發(fā)音人
player.playText("今天是"+year+"年"+month+"月"+date+"日"+",星期"+week, "tts_buffer_time=5000",null); //進(jìn)行語(yǔ)音合成
2.3訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)功能實(shí)現(xiàn)
系統(tǒng)中接打電話(huà),收發(fā)短信模塊用到了手機(jī)系統(tǒng)數(shù)據(jù)庫(kù)中的通訊錄,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪(fǎng)問(wèn)。具體實(shí)現(xiàn)代碼如下:
ContentResolver contentResolver =getContentRe
solver(); //創(chuàng)建數(shù)據(jù)查詢(xún)對(duì)象
cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+"=?",new String[]{contactName}, "");[4]
//結(jié)合查詢(xún)條件進(jìn)行數(shù)據(jù)查詢(xún)
Int nameFieldColumnIndex=cursor.getColumnIn
dex(ContactsContract.CommonDataKinds.Phone.NUMBER); //獲取查詢(xún)結(jié)果
String number = cursor.getString(nameFieldColu
mnIndex); //得到聯(lián)系人的電話(huà)號(hào)碼
2.4訪(fǎng)問(wèn)Web Service功能實(shí)現(xiàn)
系統(tǒng)中查詢(xún)天氣模塊用到了Web Service,需要訪(fǎng)問(wèn)網(wǎng)站獲取天氣情況,然后對(duì)其進(jìn)行解析從而獲得最終結(jié)果。具體實(shí)現(xiàn)代碼如下:
byte[] entity =readSoap().getBytes();
String path="http://www.webxml.com.cn/WebS
ervices/WeatherWebService.asmx";//查詢(xún)網(wǎng)址
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection)url.
openConnection();//打開(kāi)網(wǎng)絡(luò)連接,進(jìn)行查詢(xún)[5]
conn.getOutputStream().write(entity); //獲取查詢(xún)結(jié)果
return parseSoap(conn.getInputStream());
3 系統(tǒng)運(yùn)行測(cè)試
本軟件的測(cè)試平臺(tái)是中興U880,CPU Marvell PXA920,CPU頻率為806MHZ單核,RAM容量512MB,ROM512MB,系統(tǒng)為Android2.2,支持Bluetooth,GSM,TD-SCDMA 和Wifi 通信,主屏3.5英寸,分辨率為800×480 像素。利用Eclipse將本軟件安裝到手機(jī)上,進(jìn)行測(cè)試。
3.1系統(tǒng)主界面
系統(tǒng)只有一個(gè)主界面,它由兩部分構(gòu)成,上面部分是一個(gè)ScrollView(滾動(dòng)條),包括系統(tǒng)幾項(xiàng)功能的提示和指令格式;下面部分
(下轉(zhuǎn)第4459頁(yè))
(上接第4449頁(yè))
是一個(gè)固定的ImageButton(圖像按鈕),用來(lái)觸發(fā)語(yǔ)音事件,它也是用戶(hù)最常使用的控件,在整個(gè)主界面上占有較大空間,以便于用戶(hù)操作。主界面效果如圖5所示。
3.2語(yǔ)音撥打電話(huà)
如圖6所示,當(dāng)觸發(fā)語(yǔ)音按鍵,命令“打電話(huà)給張朋”,系統(tǒng)直接識(shí)別出語(yǔ)音命令,并進(jìn)行撥號(hào)。
圖4 系統(tǒng)主界面 圖5 語(yǔ)音撥號(hào)界面
4 結(jié)束語(yǔ)
基于Android的盲人手機(jī)系統(tǒng)是一款為方便盲人而開(kāi)發(fā)的手機(jī)應(yīng)用軟件,它可使用戶(hù)免于繁瑣的手動(dòng)輸入,只需要簡(jiǎn)單地說(shuō)出語(yǔ)音命令,即可實(shí)現(xiàn)相應(yīng)的功能,為視力障礙人群提供了一種有效操作手機(jī)的途徑。軟件安裝簡(jiǎn)單,安裝成功后無(wú)需任何設(shè)置,打開(kāi)本軟件后觸發(fā)語(yǔ)音按鍵即可進(jìn)行各種操作。系統(tǒng)功能較為全面,操作方便快捷,具有一定的推廣和實(shí)用價(jià)值。
參考文獻(xiàn):
[1] 安徽科大訊飛信息科技股份有限公司.訊飛語(yǔ)音改變移動(dòng)生活[J].計(jì)算機(jī)與信息技術(shù),2011,6(3):25-32.
[2] 郭少豪.Android手機(jī)交互應(yīng)用開(kāi)發(fā)[M].北京:中國(guó)鐵道出版社,2011:171-199.
[3] 安徽科大訊飛公司.語(yǔ)音云Android SDK[EB/OL]. (2010).http://www.iflytek.com/.
[4] 王世江,余志龍,陳昱勛,等.Google Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2010:21-401.
[5] 門(mén)娜,閏蕾. 基于Android 的個(gè)性化天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與軟件實(shí)現(xiàn)[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2012(7):155-156.
Public static SynthesizerPlayer createSynthesizer
Player(Context context ,String params);
以下是系統(tǒng)中語(yǔ)音合成的部分關(guān)鍵代碼:
SynthesizerPlayer player; //創(chuàng)建合成對(duì)象
player=SynthesizerPlayer.createSynthesizerPlayer(MainActivity.this,"appid=51540a3e");
player.setVoiceName("vixnn");//設(shè)置發(fā)音人
player.playText("今天是"+year+"年"+month+"月"+date+"日"+",星期"+week, "tts_buffer_time=5000",null); //進(jìn)行語(yǔ)音合成
2.3訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)功能實(shí)現(xiàn)
系統(tǒng)中接打電話(huà),收發(fā)短信模塊用到了手機(jī)系統(tǒng)數(shù)據(jù)庫(kù)中的通訊錄,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪(fǎng)問(wèn)。具體實(shí)現(xiàn)代碼如下:
ContentResolver contentResolver =getContentRe
solver(); //創(chuàng)建數(shù)據(jù)查詢(xún)對(duì)象
cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+"=?",new String[]{contactName}, "");[4]
//結(jié)合查詢(xún)條件進(jìn)行數(shù)據(jù)查詢(xún)
Int nameFieldColumnIndex=cursor.getColumnIn
dex(ContactsContract.CommonDataKinds.Phone.NUMBER); //獲取查詢(xún)結(jié)果
String number = cursor.getString(nameFieldColu
mnIndex); //得到聯(lián)系人的電話(huà)號(hào)碼
2.4訪(fǎng)問(wèn)Web Service功能實(shí)現(xiàn)
系統(tǒng)中查詢(xún)天氣模塊用到了Web Service,需要訪(fǎng)問(wèn)網(wǎng)站獲取天氣情況,然后對(duì)其進(jìn)行解析從而獲得最終結(jié)果。具體實(shí)現(xiàn)代碼如下:
byte[] entity =readSoap().getBytes();
String path="http://www.webxml.com.cn/WebS
ervices/WeatherWebService.asmx";//查詢(xún)網(wǎng)址
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection)url.
openConnection();//打開(kāi)網(wǎng)絡(luò)連接,進(jìn)行查詢(xún)[5]
conn.getOutputStream().write(entity); //獲取查詢(xún)結(jié)果
return parseSoap(conn.getInputStream());
3 系統(tǒng)運(yùn)行測(cè)試
本軟件的測(cè)試平臺(tái)是中興U880,CPU Marvell PXA920,CPU頻率為806MHZ單核,RAM容量512MB,ROM512MB,系統(tǒng)為Android2.2,支持Bluetooth,GSM,TD-SCDMA 和Wifi 通信,主屏3.5英寸,分辨率為800×480 像素。利用Eclipse將本軟件安裝到手機(jī)上,進(jìn)行測(cè)試。
3.1系統(tǒng)主界面
系統(tǒng)只有一個(gè)主界面,它由兩部分構(gòu)成,上面部分是一個(gè)ScrollView(滾動(dòng)條),包括系統(tǒng)幾項(xiàng)功能的提示和指令格式;下面部分
(下轉(zhuǎn)第4459頁(yè))
(上接第4449頁(yè))
是一個(gè)固定的ImageButton(圖像按鈕),用來(lái)觸發(fā)語(yǔ)音事件,它也是用戶(hù)最常使用的控件,在整個(gè)主界面上占有較大空間,以便于用戶(hù)操作。主界面效果如圖5所示。
3.2語(yǔ)音撥打電話(huà)
如圖6所示,當(dāng)觸發(fā)語(yǔ)音按鍵,命令“打電話(huà)給張朋”,系統(tǒng)直接識(shí)別出語(yǔ)音命令,并進(jìn)行撥號(hào)。
圖4 系統(tǒng)主界面 圖5 語(yǔ)音撥號(hào)界面
4 結(jié)束語(yǔ)
基于Android的盲人手機(jī)系統(tǒng)是一款為方便盲人而開(kāi)發(fā)的手機(jī)應(yīng)用軟件,它可使用戶(hù)免于繁瑣的手動(dòng)輸入,只需要簡(jiǎn)單地說(shuō)出語(yǔ)音命令,即可實(shí)現(xiàn)相應(yīng)的功能,為視力障礙人群提供了一種有效操作手機(jī)的途徑。軟件安裝簡(jiǎn)單,安裝成功后無(wú)需任何設(shè)置,打開(kāi)本軟件后觸發(fā)語(yǔ)音按鍵即可進(jìn)行各種操作。系統(tǒng)功能較為全面,操作方便快捷,具有一定的推廣和實(shí)用價(jià)值。
參考文獻(xiàn):
[1] 安徽科大訊飛信息科技股份有限公司.訊飛語(yǔ)音改變移動(dòng)生活[J].計(jì)算機(jī)與信息技術(shù),2011,6(3):25-32.
[2] 郭少豪.Android手機(jī)交互應(yīng)用開(kāi)發(fā)[M].北京:中國(guó)鐵道出版社,2011:171-199.
[3] 安徽科大訊飛公司.語(yǔ)音云Android SDK[EB/OL]. (2010).http://www.iflytek.com/.
[4] 王世江,余志龍,陳昱勛,等.Google Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2010:21-401.
[5] 門(mén)娜,閏蕾. 基于Android 的個(gè)性化天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與軟件實(shí)現(xiàn)[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2012(7):155-156.
Public static SynthesizerPlayer createSynthesizer
Player(Context context ,String params);
以下是系統(tǒng)中語(yǔ)音合成的部分關(guān)鍵代碼:
SynthesizerPlayer player; //創(chuàng)建合成對(duì)象
player=SynthesizerPlayer.createSynthesizerPlayer(MainActivity.this,"appid=51540a3e");
player.setVoiceName("vixnn");//設(shè)置發(fā)音人
player.playText("今天是"+year+"年"+month+"月"+date+"日"+",星期"+week, "tts_buffer_time=5000",null); //進(jìn)行語(yǔ)音合成
2.3訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)功能實(shí)現(xiàn)
系統(tǒng)中接打電話(huà),收發(fā)短信模塊用到了手機(jī)系統(tǒng)數(shù)據(jù)庫(kù)中的通訊錄,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行訪(fǎng)問(wèn)。具體實(shí)現(xiàn)代碼如下:
ContentResolver contentResolver =getContentRe
solver(); //創(chuàng)建數(shù)據(jù)查詢(xún)對(duì)象
cursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,projection,ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME+"=?",new String[]{contactName}, "");[4]
//結(jié)合查詢(xún)條件進(jìn)行數(shù)據(jù)查詢(xún)
Int nameFieldColumnIndex=cursor.getColumnIn
dex(ContactsContract.CommonDataKinds.Phone.NUMBER); //獲取查詢(xún)結(jié)果
String number = cursor.getString(nameFieldColu
mnIndex); //得到聯(lián)系人的電話(huà)號(hào)碼
2.4訪(fǎng)問(wèn)Web Service功能實(shí)現(xiàn)
系統(tǒng)中查詢(xún)天氣模塊用到了Web Service,需要訪(fǎng)問(wèn)網(wǎng)站獲取天氣情況,然后對(duì)其進(jìn)行解析從而獲得最終結(jié)果。具體實(shí)現(xiàn)代碼如下:
byte[] entity =readSoap().getBytes();
String path="http://www.webxml.com.cn/WebS
ervices/WeatherWebService.asmx";//查詢(xún)網(wǎng)址
URL url=new URL(path);
HttpURLConnection conn=(HttpURLConnection)url.
openConnection();//打開(kāi)網(wǎng)絡(luò)連接,進(jìn)行查詢(xún)[5]
conn.getOutputStream().write(entity); //獲取查詢(xún)結(jié)果
return parseSoap(conn.getInputStream());
3 系統(tǒng)運(yùn)行測(cè)試
本軟件的測(cè)試平臺(tái)是中興U880,CPU Marvell PXA920,CPU頻率為806MHZ單核,RAM容量512MB,ROM512MB,系統(tǒng)為Android2.2,支持Bluetooth,GSM,TD-SCDMA 和Wifi 通信,主屏3.5英寸,分辨率為800×480 像素。利用Eclipse將本軟件安裝到手機(jī)上,進(jìn)行測(cè)試。
3.1系統(tǒng)主界面
系統(tǒng)只有一個(gè)主界面,它由兩部分構(gòu)成,上面部分是一個(gè)ScrollView(滾動(dòng)條),包括系統(tǒng)幾項(xiàng)功能的提示和指令格式;下面部分
(下轉(zhuǎn)第4459頁(yè))
(上接第4449頁(yè))
是一個(gè)固定的ImageButton(圖像按鈕),用來(lái)觸發(fā)語(yǔ)音事件,它也是用戶(hù)最常使用的控件,在整個(gè)主界面上占有較大空間,以便于用戶(hù)操作。主界面效果如圖5所示。
3.2語(yǔ)音撥打電話(huà)
如圖6所示,當(dāng)觸發(fā)語(yǔ)音按鍵,命令“打電話(huà)給張朋”,系統(tǒng)直接識(shí)別出語(yǔ)音命令,并進(jìn)行撥號(hào)。
圖4 系統(tǒng)主界面 圖5 語(yǔ)音撥號(hào)界面
4 結(jié)束語(yǔ)
基于Android的盲人手機(jī)系統(tǒng)是一款為方便盲人而開(kāi)發(fā)的手機(jī)應(yīng)用軟件,它可使用戶(hù)免于繁瑣的手動(dòng)輸入,只需要簡(jiǎn)單地說(shuō)出語(yǔ)音命令,即可實(shí)現(xiàn)相應(yīng)的功能,為視力障礙人群提供了一種有效操作手機(jī)的途徑。軟件安裝簡(jiǎn)單,安裝成功后無(wú)需任何設(shè)置,打開(kāi)本軟件后觸發(fā)語(yǔ)音按鍵即可進(jìn)行各種操作。系統(tǒng)功能較為全面,操作方便快捷,具有一定的推廣和實(shí)用價(jià)值。
參考文獻(xiàn):
[1] 安徽科大訊飛信息科技股份有限公司.訊飛語(yǔ)音改變移動(dòng)生活[J].計(jì)算機(jī)與信息技術(shù),2011,6(3):25-32.
[2] 郭少豪.Android手機(jī)交互應(yīng)用開(kāi)發(fā)[M].北京:中國(guó)鐵道出版社,2011:171-199.
[3] 安徽科大訊飛公司.語(yǔ)音云Android SDK[EB/OL]. (2010).http://www.iflytek.com/.
[4] 王世江,余志龍,陳昱勛,等.Google Android SDK開(kāi)發(fā)范例大全[M].北京:人民郵電出版社,2010:21-401.
[5] 門(mén)娜,閏蕾. 基于Android 的個(gè)性化天氣預(yù)報(bào)系統(tǒng)的設(shè)計(jì)與軟件實(shí)現(xiàn)[J].計(jì)算機(jī)光盤(pán)軟件與應(yīng)用,2012(7):155-156.