沈旭 賴淳 孟巍
摘 要:隨著經(jīng)濟(jì)文化發(fā)展水平的不斷提高,生活節(jié)奏不斷加快,人們需要適合自己的娛樂方式釋放壓力??ɡ璒K是一種深受大眾喜愛的娛樂方式,為了使人們方便快捷的通過手機(jī)K歌放松,設(shè)計(jì)開發(fā)了K歌應(yīng)用APP。APP基于Android平臺(tái),采用Java編程語言設(shè)計(jì)開發(fā)、MySQL數(shù)據(jù)庫(kù)存儲(chǔ)數(shù)據(jù),APP具有使用方便快捷、運(yùn)行穩(wěn)定可靠的特點(diǎn),達(dá)到了設(shè)計(jì)目標(biāo)。
關(guān)鍵詞:Android;MySQL;K歌APP
中圖分類號(hào):TP311.56 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):2096-4706(2019)02-0001-05
Abstract:With the continuous improvement of economic and cultural development level,the pace of life continues to accelerate,people need to adapt to their own way of entertainment to release pressure. Karaoke is a popular way of entertainment. In order to make people relax quickly and conveniently through the mobile phone K song,the design and development of K song application APP. The APP is based on Android platform,using Java programming language design and development,MySQL database storage data,APP is easy to use,running stable and reliable features,to achieve the design goals.
Keywords:Android;MySQL;Karaoke APP
0 引 言
1945年,計(jì)算機(jī)的問世標(biāo)志著社會(huì)進(jìn)入了一個(gè)新的時(shí)代,隨著時(shí)間推移,計(jì)算機(jī)技術(shù)在飛速發(fā)展,伴隨而來的物聯(lián)網(wǎng)開始改變?nèi)藗兊纳畛B(tài)。如今,計(jì)算機(jī)與互聯(lián)網(wǎng)覆蓋了生活中的方方面面。
隨著智能手機(jī)技術(shù)的不斷成熟,移動(dòng)互聯(lián)網(wǎng)時(shí)代正式到來,所有用戶可以通過手機(jī)、平板獲得互聯(lián)網(wǎng)信息,智能手機(jī)因此也成為了標(biāo)志性的客戶端工具。智能手機(jī)使我們的生活發(fā)生了巨大變化。Android系統(tǒng)和iOS智能手機(jī)操作系統(tǒng)占據(jù)了全球的大部分市場(chǎng),但是由于Android系統(tǒng)的開源性,得到了除蘋果公司之外幾乎所有手機(jī)廠商的使用。自然而然,性價(jià)比高的Android手機(jī)成為大部分人的首選[1]。
因此,K歌應(yīng)用APP開發(fā),選擇基于Android系統(tǒng)進(jìn)行開發(fā),讓用戶通過安卓手機(jī)可使用K歌娛樂、溝通交流等功能。
1 系統(tǒng)分析
1.1 系統(tǒng)需求分析
1.1.1 系統(tǒng)技術(shù)需求
基于Android的K歌應(yīng)用APP使用的是現(xiàn)在應(yīng)用最廣泛的的Android開發(fā)框架,開發(fā)模式比較成熟,設(shè)計(jì)模式多樣化,開源性的Android能使手機(jī)技術(shù)緊跟時(shí)代科技的潮流步伐,手機(jī)自帶的數(shù)據(jù)庫(kù)對(duì)數(shù)據(jù)進(jìn)行操作的管理,提高了數(shù)據(jù)庫(kù)的可靠性和穩(wěn)定性[2]。
1.1.2 系統(tǒng)安全需求
用戶要想進(jìn)入K歌應(yīng)用APP,首先需要進(jìn)入登錄系統(tǒng),未登錄用戶不可查看系統(tǒng)任何信息和數(shù)據(jù),確保系統(tǒng)的安全可靠性、準(zhǔn)確性以及數(shù)據(jù)完整性[3]。
1.1.3 系統(tǒng)界面需求
(1)界面簡(jiǎn)潔。為了滿足用戶使用時(shí)高效率、低出錯(cuò)率等要求,在系統(tǒng)用戶界面的設(shè)計(jì)上要求簡(jiǎn)潔清晰明了。用戶在使用軟件的時(shí)候,簡(jiǎn)潔便捷的功能選擇模塊,讓用戶對(duì)系統(tǒng)的功能一目了然,通過選擇功能模塊實(shí)現(xiàn)用戶功能需求[4,5]。
(2)層次清晰。所有用戶在第一次打開應(yīng)用時(shí),看到簡(jiǎn)潔明了的應(yīng)用主界面,為用戶展示應(yīng)用各個(gè)功能模塊。用戶界面劃分成多個(gè)條目,點(diǎn)擊相應(yīng)條目可進(jìn)入對(duì)應(yīng)的數(shù)據(jù)處理界面,所以清晰的系統(tǒng)層次使用戶更容易熟悉APP的使用。
1.2 系統(tǒng)功能分析
K歌應(yīng)用APP主要實(shí)現(xiàn)用戶注冊(cè)、登錄、歌單、關(guān)注、我的等功能,用戶用例圖,如圖1:
1.3 系統(tǒng)流程分析
1.3.1 登錄流程
所有用戶在進(jìn)入系統(tǒng)之前,首先必須登錄;同時(shí),管理員要想進(jìn)入后臺(tái)管理系統(tǒng),進(jìn)行管理等操作,也需要先登錄,登錄流程圖,如圖2:
1.3.2 注冊(cè)流程
尚未有賬號(hào)的用戶,可通過注冊(cè)操作進(jìn)行注冊(cè),注冊(cè)流程圖,如圖3:
2 系統(tǒng)設(shè)計(jì)
2.1 系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)
在課題的需求分析階段,已經(jīng)對(duì)系統(tǒng)將要做成什么樣有了基本的思路和框架。對(duì)于一個(gè)實(shí)際的開發(fā)項(xiàng)目,需要通過需求說明書把需求進(jìn)行描述。繼而要做的工作就是將系統(tǒng)做什么的邏輯模型進(jìn)一步轉(zhuǎn)換為怎么做的物理模型,即著手去實(shí)現(xiàn)系統(tǒng)的需求,并將設(shè)計(jì)的結(jié)果反映在設(shè)計(jì)說明書文檔中[6,7]。K歌應(yīng)用APP系統(tǒng)功能結(jié)構(gòu)如圖4所示:
2.2 數(shù)據(jù)庫(kù)設(shè)計(jì)
數(shù)據(jù)庫(kù)是計(jì)算機(jī)信息系統(tǒng)的基礎(chǔ),信息的收集、整理、存儲(chǔ)、檢索、更新、加工、統(tǒng)計(jì)和傳播等操作必須在數(shù)據(jù)庫(kù)管理系統(tǒng)的支持下才能進(jìn)行[8,9]。目前,計(jì)算機(jī)系統(tǒng)的關(guān)鍵以及核心部分就是數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)開發(fā)的優(yōu)劣直接影響整個(gè)系統(tǒng)的質(zhì)量和速度。數(shù)據(jù)庫(kù)設(shè)計(jì)由幾個(gè)關(guān)鍵步驟組成:分析需求、設(shè)計(jì)概念、設(shè)計(jì)邏輯和設(shè)計(jì)物理。
2.2.1 E-R圖設(shè)計(jì)
E-R圖是一種描述顯示數(shù)據(jù)類型間關(guān)系的數(shù)據(jù)描述方法,E-R圖可以完整地映射出現(xiàn)實(shí)模型的關(guān)系[10]。
(1)用戶實(shí)體圖。如圖5:
(2)關(guān)注實(shí)體圖。如圖6:
(3)評(píng)論信息實(shí)體圖。如圖7:
(4)歌曲信息實(shí)體圖。如圖8:
2.2.2 數(shù)據(jù)庫(kù)表設(shè)計(jì)
本基于Android的K歌應(yīng)用采用MySQL數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)的儲(chǔ)存,歌曲信息表設(shè)計(jì)見表1:
3 系統(tǒng)實(shí)現(xiàn)
3.1 注冊(cè)登錄模塊
未有賬號(hào)用戶在打開程序的時(shí)候,首先要進(jìn)入注冊(cè)界面實(shí)行賬戶的注冊(cè),注冊(cè)時(shí)需要:用戶名、密碼,注冊(cè)成功后,可進(jìn)入登錄界面,然后再進(jìn)行登錄操作,用戶注冊(cè)登錄界面,如圖9:
用戶填寫賬號(hào)和密碼之后,點(diǎn)擊登陸按鈕,系統(tǒng)會(huì)通過OkHttp進(jìn)行聯(lián)網(wǎng),發(fā)送登錄請(qǐng)求,具體實(shí)現(xiàn)代碼如下:
OkHttpTools.sendPost(mContext,ApiManager.LOGIN)
.addParams("name",user)
.addParams("pwd",pwd)
.build()
.execute(new BaseCallBack
@Override
public void onResponse(UserObjBeanuserObjBean) {
SpUtils.setUserBean(mContext,userObjBean.getData());
MyApplication.getInstance().setUserBean(user ObjBean.getData());
startActivity(new Intent(mContext,UserMain Activity.class));
finish();
}
});
3.2 歌單模塊
用戶登錄后可進(jìn)入歌單界面查看已有歌曲信息,并可點(diǎn)擊查看歌曲詳情,在歌曲詳情界面可進(jìn)行歌曲播放、關(guān)注、點(diǎn)贊以及評(píng)論操作,歌單界面如圖10:
歌曲信息主要是使用一個(gè)RecyclerView進(jìn)行展示,其中獲取歌曲列表信息和RecyclerView的適配器、歌曲播放代碼下所示:
//從服務(wù)器獲取歌曲信息
OkHttpTools.sendGet(mContext,ApiManager.SONG_LIST)
.build()
.execute(new BaseCallBack
@Override
public void onResponse(SongListBeansongListBean) {
mData= songListBean.getData();
adapter.notifyDataSetChanged(mData);
}
});
//RecyclerView適配器
private class MyAdapterextends BaseAdapter
public MyAdapter(Context context,int layoutId,ArrayList
super(context,layoutId,data);
}
@Override
public void initItemView(BaseViewHolder holder,SongBeansongBean,int position) {
if(TextUtils.isEmpty(songBean.getHeadUrl())){
Glide.with(getActivity()).load("").into((ImageView)holder.getView(R.id.head_image));
}else{
Glide.with(getActivity()).load(ApiManager.HEAD_URL+songBean.getHeadUrl()).into((ImageView)holder.getView(R.id.head_image));
}
holder.setText(R.id.tv_name,songBean.getName());
holder.setText(R.id.tv_total,"時(shí)間:" + My Application.formatTime.format(songBean.getLength()));
holder.setText(R.id.tv_username,"用戶名:" + song Bean.getUname());
}
}
}
//播放
public void play(booleanflag) {
try {
if (!mediaPlayer.isPlaying()) {
if (flag) {
mediaPlayer.setVolume(1.0f,1.0f);
} else {
mediaPlayer.setVolume(0.5f,0.5f);
}
mediaPlayer.start();
}
} catch (Exception e) {
e.printStackTrace();
}
}
3.3 關(guān)注模塊
用戶在關(guān)注界面可查看個(gè)人已關(guān)注的歌曲信息,并可點(diǎn)擊進(jìn)行歌曲播放、點(diǎn)贊以及評(píng)論操作,關(guān)注界面如圖11:
3.4 錄制歌曲模塊
用戶登錄后可進(jìn)行錄制歌曲操作,在錄制歌曲時(shí),首先可進(jìn)行選擇伴奏界面進(jìn)行下載伴奏,伴奏下載完成后,點(diǎn)擊演唱按鈕即可開始錄制歌曲,同時(shí),如果有之前已經(jīng)下載過的歌曲,可以直接點(diǎn)擊演唱按鈕進(jìn)行錄制。歌曲錄制界面如圖12所示。
其中,下載伴奏,查詢已存在的伴奏,開始錄音的核心代碼:
@PermissionSuccess(requestCode = 522)
private void ok1() { //下載伴奏
OkHttpUtils.get().url(ApiManager.BZ_PATH+ downMusic.getAddr())
.build()
.execute(new FileCallBack(
Environment.getExternalStorageDirectory(). getAbsolutePath() + "/bsktv",
downMusic.getName() + ".mp3") {
@Override
public void onError(Call call,Exception e,int id) {
}
@Override
public void onResponse(File response,int id) {
dialog.dismiss();
loadLocalData();
}
@Override
public void inProgress(float progress,long total,int id) {
super.inProgress(progress,total,id);
dialog.setPor(progress);
}
});
}
//開始錄音使用amr格式錄音文件
public void startRecord() {
if (mMediaRecorder== null)
mMediaRecorder= new MediaRecorder();
try { mMediaRecorder.setAudioSource(Media Recorder.AudioSource.MIC);// 設(shè)置麥克風(fēng)
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
filePath= FolderPath+ System.currentTimeMillis() + ".amr";
mMediaRecorder.setOutputFile(filePath);
mMediaRecorder.prepare();
mMediaRecorder.start();
startTime= System.currentTimeMillis();
updateMicStatus();
Log.e("fan","startTime" + startTime);
} catch (IllegalStateException e) {
Log.i(TAG,"call startAmr(File mRecAudioFile) failed!" + e.getMessage());
} catch (IOException e) {
Log.i(TAG,"call startAmr(File mRecAudioFile) failed!" + e.getMessage());
}
}
3.5 我的
在我的歌曲界面,用戶可以查看個(gè)人已錄制的歌曲,點(diǎn)擊后可看到關(guān)注量和評(píng)論。
4 結(jié) 論
智能手機(jī)的普及,極大的改變了人們的休閑娛樂方式。人們希望使用科技讓生活、工作、學(xué)習(xí)等變得更加便捷,由此催生了大量移動(dòng)應(yīng)用APP。人們的日常生活和移動(dòng)互聯(lián)網(wǎng)息息相關(guān),但關(guān)于娛樂K歌的APP比較少。因此,開發(fā)一款基于Android的K歌娛樂應(yīng)用APP就非常有必要,既可以自?shī)首詷稫歌休閑,又可以利用發(fā)布功能,把錄好的歌曲上傳共享,供大家欣賞評(píng)論、交流互動(dòng)。
參考文獻(xiàn):
[1] Rafael Ufology. GOOGLE ANDROID MARKET [J]. Computer Canada,2009,25(13):24-25.
[2] 袁浩.基于J2EE平臺(tái)的制造業(yè)企業(yè)產(chǎn)品知識(shí)管理系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn) [D].長(zhǎng)沙:湖南大學(xué),2016.
[3] 張劉正.Android系統(tǒng)下軟件的自動(dòng)化測(cè)試框架(本地化平臺(tái))的研究與實(shí)現(xiàn) [D].成都:西南交通大學(xué),2012.
[4] 張娜.Android系統(tǒng)架構(gòu)研究與應(yīng)用 [D].西安:西安科技大學(xué),2013.
[5] 李光革(Ri Kwanghyok).基于Android的物聯(lián)網(wǎng)應(yīng)用結(jié)構(gòu)研究與實(shí)現(xiàn) [D].北京:北京郵電大學(xué),2014.
[6] 徐雪麗.基于Android平臺(tái)的虛擬試衣關(guān)鍵技術(shù)研究 [D].西安:陜西科技大學(xué),2014.
[7] 曾鵬飛.基于Wi-Fi信號(hào)強(qiáng)度與多傳感器信息融合的室內(nèi)定位系統(tǒng)研究 [D].無錫:江南大學(xué),2014.
[8] 容麗.移動(dòng)端家庭理財(cái)系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].天津:天津大學(xué),2015.
[9] 王垚鑫.基于Android平臺(tái)數(shù)字水印的應(yīng)用研究 [D].南京:南京郵電大學(xué),2015.
[10] 葉錦標(biāo).基于Android平臺(tái)的流媒體傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn) [D].南京:南京郵電大學(xué),2015.
作者簡(jiǎn)介:沈旭(1979-),男,漢族,山東單縣人,講師,碩士,CCF會(huì)員(66155M),研究方向:輿情計(jì)算、移動(dòng)應(yīng)用研究等。