android音樂播放器案例,Android MediaPlayer實現音樂播放器實例代碼

Android MediaPlayer實現音樂播放器

1、布局文件

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:orientation="vertical" >

android:id="@+id/hint"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:padding="10px"

android:text="單擊“開始”按鈕播放音頻" />

android:id="@+id/linearLayout1"

android:layout_width="match_parent"

android:layout_height="wrap_content" >

android:id="@+id/button1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="播放" />

android:id="@+id/button2"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:enabled="false"

android:text="暫停" />

android:id="@+id/button3"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:enabled="false"

android:text="停止" />

2、MainActivity的成員變量

private MediaPlayer player;//MediaPlayer對象

private boolean isPause = false;//是否暫停

private File file;//要播放的音頻文件

private TextView hint;//聲明顯示提示信息的文本框

3、onCreate()方法中獲取組件

final Button button1 = (Button)findViewById(R.id.button1);//獲取“播放”按鈕

final Button button2 = (Button)findViewById(R.id.button2);//獲取“暫停/繼續”按鈕

final Button button3 = (Button)findViewById(R.id.button3);//獲取“停止”按鈕

hint = (TextView)findViewById(R.id.hint);//獲取用于顯示提示信息的文本框

file = new File("/storage/emulated/0/qqmusic/song/喬維怡 - 白月光[mqms2].mp3");//獲取要播放的文件

if(file.exists()){

player = MediaPlayer.create(this, Uri.parse(file.getAbsolutePath()));//創建MediaPlayer獨享

}else{

hint.setText("要播放的音頻文件不存在!");

button1.setEnabled(false);

return;

}

4、編寫play()方法

private void play(){

try {

player.reset();

player.setDataSource(file.getAbsolutePath());//重新設置要播放的音頻

player.prepare();//預加載音頻

player.start();//開始播放

hint.setText("正在播放音頻.....");

} catch (Exception e) {

e.printStackTrace();

}

}

5、為MediaPlayer對象添加監聽事件,播完重新播放

player.setOnCompletionListener(new OnCompletionListener() {

@Override

public void onCompletion(MediaPlayer mp) {

play();//重新開始播放

}

});

6、為播放添加單擊事件監聽器

button1.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

play();//開始播放音樂

if(isPause){

button2.setText("暫停");

isPause = false;//設置暫停標記變量的值為false

}

button2.setEnabled(true);//“暫停/繼續”按鈕可用

button3.setEnabled(true);//"停止"按鈕可用

button1.setEnabled(false);//“播放”按鈕不可用

}

});

7、在“暫停/繼續”按鈕添加單擊事件監聽器

button2.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

if(player.isPlaying()&&!isPause){

player.pause();//暫停播放

isPause = true;

((Button)v).setText("繼續");

hint.setText("暫停播放音頻...");

button1.setEnabled(true);//“播放”按鈕可用

}else{

player.start();//繼續播放

((Button)v).setText("暫停");

hint.setText("正在播放音頻...");

isPause = false;

button1.setEnabled(false);//“播放”按鈕不可用

}

}

});

8、停止按鈕

button3.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

player.stop();//停止播放

hint.setText("停止播放音頻...");

button2.setEnabled(false);//“暫停/繼續”按鈕不可用

button3.setEnabled(false);//“停止”按鈕不可用

button1.setEnabled(true);//“播放”按鈕可用

}

});

9、重寫Activity的onDestroy()方法

@Override

protected void onDestroy() {

if(player.isPlaying()){

player.stop();//停止音頻的播放

}

player.release();//釋放資源

super.onDestroy();

}

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/530087.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/530087.shtml
英文地址,請注明出處:http://en.pswp.cn/news/530087.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

單邊指數信號的特點_今日股市分析:上證指數若能守住3400,蓄力反彈就有戲...

昨日整體概況上漲:848只 下跌:3009只漲停:69只 跌停:12只昨天的上證指數低開低走,午后沖紅又回落,另一邊的創業板卻是單邊下行跌超3%,板塊方向農業、洪水概念股、還有電力板塊較強。按照昨日置頂…

萬豐科技機器人排名_機器人系統集成“7宗最”

摘要:對于眾多集成商而言,作為典型的“夾心餅奧利奧”,面對客戶的各種要求,“不敢勉強你,只好為難自己”系真實寫照。1、企業數量最多GGII統計數據顯示,截至2019年年底,中國工業機器人產業企業數…

android 電池高溫關機,Android 關機問題分析指南

本篇文章主要介紹 Android 開發中的 關機 部分知識點,通過閱讀本篇文章,您將收獲以下內容:1 . 確認是亮屏關機還是滅屏關機?關機時是否有播放關機動畫?2 . 是直接關機還是關機后會自動重啟?3.異常關機時,連…

android switch 未定義,在switch語句中初始化時未定義的變量?

問題本身就是一個明顯的答案.無論如何,這是我的代碼片段......switch(cSet)...case 8:{ //Special CharactersfinalSet special;char* charSet new char[special.size() 1];charSet[special.size()] 0; //Append null terminatormemcpy(charSet, special.c_str(), special.…

android 克隆對象,克隆會破壞單例對象嗎?

假設有這樣一個場景,如果復制的目標對象恰好是單例對象,那會不會破壞單例對象呢?當然,我們在已知的情況下肯定不會這么干,但如果發生了意外怎么辦?不防來修改一下代碼。public class ConcretePrototype imp…

轉網口顯示未識別的網絡_已有1700萬用戶攜號轉網 超99%用戶1小時內辦結

攜號轉網是利國利民的大舉措,受到了很多電信用戶的擁護和支持。12月15日,工信部副部長劉烈宏在某會議上進行報告指出,目前我國 “攜號轉網”服務已經累計有 1700 萬用戶完成攜轉,一小時攜轉成功辦結率超過 99%。已有1700萬用戶攜號…

adb 更新 android sdk,[轉載]安裝Android時SDK?AVD?MANAGER時更新報錯的解決辦法

最近安裝Android SDK時,發現更新時出現“A folder failed to be renamed ormoved.”等類似錯誤。經過測試和G后發現解決辦法目前有兩種情況:1、確實是因為打開了相關目錄或者其他程序占用率文件夾句柄。關閉相關資源管理器或者關閉相關程序即可&#xff…

2020.2idea怎么創建html項目_陳肆橫項目日記:百度百科怎么創建自己的名字

百度百科是一個介紹人物很好的平臺,很多的都想創造屬于自己的百度百科。而人物百科詞條,是百度百科專門為知名人物提供個人信息展示的平臺。創建一個屬于自己的百度百科詞條,就相當于擁有了一張名片,不僅有著影響力與知名度的傳播…

android c++ gizp 調用 so,使用ndk-build編譯 android調用的so庫

前沿編譯so的方法有兩種方法第一種就是編寫原生的makefile文件利用gcc進行編譯,這里我講解的是另外一種。采用NDK提供的ndk-build編譯。簡介使用ndk編譯的時候需要介紹它的腳本文件,Android.mk和Application.mk,但是Application.mk是可選的,用…

elctron項目_electron項目結構介紹

#項目結構my-project├─ .electron-vue(webpack配置文件)│ └─ build.js(生產環境構建代碼)│ └─ dev-client.js(熱加載相關)│ └─ dev-runner.js(開發環境啟動入口)│ └─ webpack.main.config.js(主進程配置文件)│ └─ webpack.renderer.config.js(渲染進程配…

無法啟動mysqll1006_CentOS7下MySQL服務啟動失敗原因及解決方法

在重啟阿里的CentOS7服務器后,重啟MySQL 出現錯誤Starting mysqld (via systemctl):Job for mysqld.service failed because the control process exited with error code.See "systemctl status mysqld.service" and "journalctl -xe" fordetails.[FAILED…

html5判斷多選框是否選擇的函數,復選框(checkbox)、多選框

1、需求分析可同時選中多個選項,實現全選、全不選、反選等功能。2、技術分析基礎的HTML、CSS、JavaScript。3、詳細分析3.1 HTML部分圖示是一個列表加底部一段文字說明,列表包含三個部分,整體是一個多選列表,上部是總的選項&#…

layer調用父頁面方法_Ruby for SketchUp之圖層【Layer】

我們學習了群組、組件及組件定義,今天來看看圖層【Layer】,在Sketchup2020版本中已經更名為“標記”,如圖那么圖層在我們建模過程中能帶來哪些便利呢?可以快速的隱藏同一圖層內所有東西,而不需要逐一選擇并右鍵點擊隱藏…

html盒子有哪些屬性,盒子模型有哪些屬性 在html5中哪些元素具有盒子模型

HTML盒模型基本屬性有哪些CSS盒子模型就是在CSS技術所使用的一種思維模型。CSS假定所有的HTML文檔元素都生成一個描述該元素在HTML文檔布局中所占空間的矩形元素框,可以形象地將其看作是一個盒子。通過定義一系列與盒子相關的屬性,可極大地豐富和促進各個…

huffman編碼的程序流程圖_F28379D之CLB解碼多摩川編碼器2——LIB版例程講解(原創)...

我在第一篇文章中已經跟大家介紹過379解碼多摩川編碼器的一些入手小知識,鏈接如下TMS320F28379D之CLB解碼多摩川編碼器1——入手小知識(原創)請大家一定要看入手小知識,再來看例程分析。今天跟大家分析一下TI的官方例程。首先&…

html統計表合并單元格的快捷鍵,word怎樣設置合并單元格快捷鍵

word2010中合并單元格的快捷鍵是什么?求解答。合并單元格沒有快捷鍵,不過有個f4是重復上一步操作,所以你要合并多個單元格,那么你可以先點一合并單元格,然后選定你要合并的區域。WORD合并單元格的快捷鍵怎么設置word合并單元格快…

fcm 服務器接入 golang_Golang 寫的即時通訊服務器 im(服務組件形式)

簡要介紹im是一個即時通訊服務器,代碼全部使用golang完成。主要功能1.支持tcp,websocket接入2.離線消息同步3.單用戶多設備同時在線4.單聊,群聊,以及超大群聊天場景5.支持服務水平擴展gim和im有什么區別?gim可以作為一…

html 手機分辨率,移動端各種分辨率手機屏幕----適配方法集錦

1.使用viewport,html文件中在內添加meta,簡單粗暴:2.加判斷復雜點的viewport,可以封裝成一個js,每次新建html時調用.js即可:var phoneWidth parseInt(window.screen.width);var phoneScale phoneWidth/75…

橡膠支座抗壓彈性模量計算公式_隔震支座的這些力學特性您都掌握了嗎?

隔震支座疊層橡膠隔震支座,是隔震設計中應用最為廣泛的隔震裝置。了解隔震支座的力學特性,在軟件中設置正確的參數,是做好隔震設計最基本的前提。那么,隔震支座的這些特性您都掌握了嗎?疊層橡膠隔震支座疊層橡膠隔震支…

綜合基礎知識計算機,計算機綜合基礎知識總結.doc

計算機綜合基礎知識總結計算機專業知識試題計算機專業知識試題1.???? 一個字節包含的二進制位數是(?? )。A. 8位???? B. 16位???????????????? C. 32位???????????????? D. 256位2.???? 既可作為輸入又可作為輸出設備的是(???…