版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
張霞深圳職業(yè)技術(shù)學(xué)院Android應(yīng)用開發(fā)案例教程(AndroidStudio第二版)
0103020405AndroidUI設(shè)計圖像和動畫數(shù)據(jù)存儲廣播Broadcast與服務(wù)Service媒體播放與錄制Activity與多個用戶界面07網(wǎng)絡(luò)編程技術(shù)書目錄06第3章
多媒體播放與錄制Android應(yīng)用開發(fā)案例教程(AndroidStudio第二版)3.1音頻播放3.2視頻播放 3.3錄音與拍照章目錄3.1音頻播放Android系統(tǒng)提供了針對常見多媒體格式的API,可以非常方便操作圖片、音頻、視頻等多媒體文件,也可以操控Android終端的錄音攝像設(shè)備。這些多媒體處理API均位于android.media包。3.1.1多媒體處理包3.1.2媒體播放器MediaPlayer-÷×+MediaPlayer是Android系統(tǒng)多媒體android.media包中的類,主要用于控制音頻文件,視頻文件和流媒體的播放。通常把一個對象從創(chuàng)建、使用、釋放的過程稱為該對象的生命周期,把MediaPlayer對象的創(chuàng)建、初始化、同步處理、釋放、結(jié)束的運(yùn)行過程稱為MediaPlayer的生命周期。MediaPlayer對象的生命周期:3.1.2媒體播放器MediaPlayerMediaPlayer對象的生命周期3.1.3播放音頻文件存儲在應(yīng)用程序的res資源中的音樂文件,使用create()方法創(chuàng)建MediaPlayer對象。由于create()方法中已經(jīng)封裝了初始化及同步的方法,故不需要再進(jìn)行setDataSource()初始化以及prepare()操作。案例: MediaPlayermplayer=MediaPlayer.create(this,R.raw.music);3.1.3播放音頻文件播放音頻文件,調(diào)用start()方法。例如:mplayer.start();暫停,調(diào)用pause()方法。停止,調(diào)用stop()方法。播放123-+音頻播放結(jié)束,調(diào)用release()釋放播放器占用的系統(tǒng)資源。重新播放音頻,需調(diào)用reset()返回到空閑狀態(tài)。釋放占用資源3.1.3播放音頻文件【例3-1】設(shè)計一個音樂播放器,播放項目資源中的音樂音樂播放器運(yùn)行效果3.1.3播放音頻文件停止播放的事件可作如下改進(jìn),以便于用戶再次選擇播放。
@Override
publicvoidonClick(Viewv){
mp.stop();//或mp.reset();
Start.setImageResource(R.drawable.music_play);
try{
mp=MediaPlayer.create(Localmp3Activity.this,R.raw.abc);
mp.setLooping(true);
}catch(Exceptione){
Log.e("mp3""playerror");
}
}3.1.4播放SDcard的文件播放存儲在SD卡中的多媒體文件,須先調(diào)用new()方法創(chuàng)建MediaPlayer對象,再調(diào)用setDataSource()方法設(shè)置多媒體數(shù)據(jù)來源。示例:MediaPlayermplayer=newMediaPlayer();Stringstr=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/music.mp3";mplayer.setDataSource(str);mplayer.prepare();3.1.4播放SDcard的文件模擬器啟動后,使用DeviceFileExplorer”查看sd卡的文件。在AndroidStudio的一級菜單“View”,找到“ToolWindows”的“DeviceFileExplorer”3.1.4播放SDcard的文件DeviceFileExplorer的目錄結(jié)構(gòu),這時可以Upload文件到SD卡。3.1.4播放SDcard的文件默認(rèn)情況下無法顯示emulated下面的子目錄,需要用adbroot命令,然后才能訪問文件和子目錄,以及刪除文件。請按以下步驟操作:打開androidstudio項目,打開模擬器運(yùn)行app。找到android-sdk目錄,默認(rèn)是C:\Users\Administrator\AppData\Local\找到platform-tools文件夾,打開cmd窗口,執(zhí)行下列命令:>cdC:\Users\Administrator\AppData\Local\Android\Sdk\platform-tools>adbroot如果adbroot執(zhí)行失敗,請改模擬器的規(guī)格,選擇非“GooglePlay”的版本即可。3.1.4播放SDcard里的文件動態(tài)申請權(quán)限//StoragePermissions
privatestaticfinalintREQUEST_EXTERNAL_STORAGE=1;
privatestaticString[]PERMISSIONS_STORAGE={
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE
};
publicstaticvoidverifyStoragePermissions
(Activityactivity){
//Checkifwehavereadpermission
intpermission=ActivityCompat.checkSelfPermission(activity,Manifest.permission.READ_EXTERNAL_STORAGE);
if(permission!=PackageManager.PERMISSION_GRANTED){
//Wedon'thavepermissionsoprompttheuser
ActivityCompat.requestPermissions(
activity,
PERMISSIONS_STORAGE,
REQUEST_EXTERNAL_STORAGE
);
}}Android6.0后的版本,文件讀寫權(quán)限不但要在清單中加入,而且要在運(yùn)行時動態(tài)申請??梢詣?chuàng)建一個成員方法,例如verifyStoragePermissions(),在里面檢查是否已經(jīng)擁有讀權(quán)限,沒權(quán)限的話請用戶同意授權(quán),甚至把寫權(quán)限一并打包進(jìn)去
。在Actitvity的onCreate()方法中調(diào)用上述的verifyStoragePermissions()方法。3.1.4播放SDcard里的文件在AndroidManifest.xml清單中申請權(quán)限。<uses-permissionandroid:name="android.permission.READ_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permissionandroid:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>3.1.4播放SDcard里的文件【例3-2】設(shè)計一個音樂播放器,播放SD卡中的音樂將音頻文件abc.mp3復(fù)制到SD卡中。音樂播放器運(yùn)效果3.1音頻播放3.2視頻播放 3.3錄音與拍照章目錄12MediaPlayer+SurfaceViewMediaController+VideoView3.2視頻播放Android實(shí)現(xiàn)視頻播放的應(yīng)用程序有兩種:第一種方法是基礎(chǔ),可以編程控制播放器的大小和位置。第二種方法使用起來更方便,但由于是Android封裝好的類,播放器的大小、位置等都不接受編程控制。3.2.1應(yīng)用媒體播放器播放視頻【例3-3】應(yīng)用媒體播放器組件MediaPlayer設(shè)計一個視頻播放器,將SurfaceView和MediaPlayer配合使用。3.2.1應(yīng)用媒體播放器播放視頻SurfaceView和MediaPlayer配合,完成視頻的播放SurfaceViewsurfaceView=(SurfaceView)findViewById(R.id.surfaceView);SurfaceHoldersh=surfaceView.getHolder();根據(jù)視頻文件的位置,分為2種實(shí)現(xiàn)方式:下面是訪問項目資源res的視頻:mediaPlayer=MediaPlayer.create(this,R.raw.sample);//設(shè)置數(shù)據(jù)源mediaPlayer.setDisplay(sh);mediaPlayer.start();下面是訪問Sdcard、網(wǎng)絡(luò)的視頻:path=Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)+"/sample.3gp";mMediaPlayer=newMediaPlayer();mMediaPlayer.setDataSource(path);//設(shè)置數(shù)據(jù)源mMediaPlayer.setDisplay(sh);mMediaPlayer.prepare();mMediaPlayer.start();3.2.2應(yīng)用視頻視圖播放視頻VideoView是系統(tǒng)自帶的視頻播放控件,自帶進(jìn)度條、暫停、播放等功能,使用起來十分簡單,只需要為控件設(shè)置好播放路徑,判斷監(jiān)聽是否準(zhǔn)備就緒,直接播放即可。3.2.2應(yīng)用視頻視圖播放視頻MediaController+VideoViewMediaController的方法setMediaPlayer()并非指定VideoView,而是指定一個接口MediaPlayerControl,接口內(nèi)部定義了一些播放相關(guān)的播放、暫停、停止等操作。VideoView是系統(tǒng)自帶的視頻播放控件,自帶進(jìn)度條、暫停、播放等功能,使用起來十分簡單,VideoView實(shí)現(xiàn)了MediaPlayerControl。3.1音頻播放3.2視頻播放 3.3錄音與拍照章目錄3.3錄音和拍照Android系統(tǒng)提供了兩種API用于實(shí)現(xiàn)錄音功能:AudioRecord和MediaRecorder。MediaRecorder已實(shí)現(xiàn)大量的封裝,操作起來簡單,而AudioRecord比較靈活,能實(shí)現(xiàn)更多的功能。MediaRecorder可以實(shí)現(xiàn)錄音和錄像,需要嚴(yán)格遵守API說明中的函數(shù)調(diào)用先后順序。MediaRecoeder已經(jīng)集成了錄音、編碼、壓縮等,優(yōu)點(diǎn)是大部分已經(jīng)集成,直接調(diào)用相關(guān)接口即可,代碼量小。3.3.1MediaRecorder類3.3.1MediaRecorder類創(chuàng)建錄音對象。MediaRecordermr=newMediaRecorder();設(shè)置錄音文件。AMR格式多用于人聲,適合通話錄音。例如:FilesoundFile=new
File(Environment.getExternalStorageDirectory(),System.currentTimeMillis()+".amr");if(!soundFile.exists()){
try{
soundFile.createNewFile();
}catch(IOExceptione){}
}mr.setOutputFile(soundFile.getAbsolutePath());3.3.2錄音示例應(yīng)用MediaRecorder進(jìn)行錄音的主要步驟如下:12創(chuàng)建錄音對象設(shè)置錄音對象345準(zhǔn)備錄制開始錄制結(jié)束錄制3.3.2錄音示例<uses-permissionandroid:name="and
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 江西省南昌2024-2025學(xué)年八年級上學(xué)期期末考試英語試卷(含解析無聽力原文及音頻)
- 2024年高端裝備制造居間合同
- 2024新車購車簡單的協(xié)議書范本
- 2024收養(yǎng)孤殘兒童協(xié)議書范本參考3篇
- 中國青年政治學(xué)院《審計學(xué)原理及實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江中醫(yī)藥大學(xué)濱江學(xué)院《酒店規(guī)劃與管理》2023-2024學(xué)年第一學(xué)期期末試卷
- 昭通衛(wèi)生職業(yè)學(xué)院《三筆字訓(xùn)練》2023-2024學(xué)年第一學(xué)期期末試卷
- 《畜禽中毒病防制》課件
- 旅游行業(yè)人力資源總結(jié)
- 2024連鎖店保密合同
- 二年級數(shù)學(xué)兩位數(shù)加兩位數(shù)計算題同步檢測訓(xùn)練題
- 2025的委托拍賣合同范本
- 彈性模量自動生成記錄
- 老年癡呆患者安全護(hù)理
- 管理制度醫(yī)療器械質(zhì)量管理制度
- 顱腦損傷的高壓氧治療
- 2025新外研社版英語七年級下Unit 1 The secrets of happiness單詞表
- 醫(yī)療機(jī)構(gòu)病歷管理規(guī)定(2024 年版)
- 遼寧盤錦浩業(yè)化工“1.15”泄漏爆炸著火事故警示教育
- 廢品管理流程圖
- 安全文明施工檢查評分標(biāo)準(zhǔn)計分
評論
0/150
提交評論