Android開(kāi)啟新線(xiàn)程播放背景音樂(lè)
在本實(shí)例用,開(kāi)啟一個(gè)新的線(xiàn)程播放背景音樂(lè),在音樂(lè)文件播放完畢后,暫停5秒后重新開(kāi)始播放。
具體實(shí)現(xiàn):
界面(只有一個(gè)"開(kāi)始"按鈕)
res/layout/main.xml:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="開(kāi)始" /> </LinearLayout>
在res/文件夾下創(chuàng)建raw目錄,在raw/下放置需要播放的背景音樂(lè)文件(這里放置的是flower.mp3文件)
MainActivity:
package com.example.test;
import android.app.Activity;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class MainActivity extends Activity{
private Thread thread;//聲明一個(gè)線(xiàn)程對(duì)象
private static MediaPlayer mp=null;//聲明一個(gè)MediaPlayer對(duì)象
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button startButton=(Button)findViewById(R.id.button1);//獲取開(kāi)始按鈕
startButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
((Button)v).setEnabled(false);//設(shè)置按鈕不可用
//創(chuàng)建一個(gè)用于播放背景音樂(lè)的線(xiàn)程
thread=new Thread(new Runnable(){
@Override
public void run() {
playBGSound();//播放背景音樂(lè)
}
});
thread.start();//開(kāi)啟線(xiàn)程
}
});
}
private void playBGSound() {
if(mp!=null){
mp.release();//釋放資源
}
mp=MediaPlayer.create(MainActivity.this, R.raw.flower);
mp.start();
//為MediaPlayer添加播放完成事件監(jiān)聽(tīng)
mp.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
try {
Thread.sleep(5000);//讓線(xiàn)程休眠5秒
<span style="white-space:pre"> </span>playBGSound();//重新播放音樂(lè)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
});
}
@Override
protected void onDestroy() {
if(mp!=null){
mp.stop();
mp.release();
mp=null;
}
if(thread!=null){
thread=null;
}
super.onDestroy();
}
}
運(yùn)行結(jié)果:點(diǎn)擊開(kāi)始按鈕,按鈕將變成不可用狀態(tài),并且開(kāi)始播放背景音樂(lè),界面如圖

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android開(kāi)發(fā)經(jīng)驗(yàn)談:并發(fā)編程(線(xiàn)程與線(xiàn)程池)(推薦)
- Android之線(xiàn)程池ThreadPoolExecutor的簡(jiǎn)介
- Android子線(xiàn)程與更新UI問(wèn)題的深入講解
- Android線(xiàn)程中Handle的使用講解
- Android線(xiàn)程池控制并發(fā)數(shù)多線(xiàn)程下載
- Android 使用AsyncTask實(shí)現(xiàn)多線(xiàn)程斷點(diǎn)續(xù)傳
- Android 使用AsyncTask實(shí)現(xiàn)多任務(wù)多線(xiàn)程斷點(diǎn)續(xù)傳下載
- 完全解析Android多線(xiàn)程中線(xiàn)程池ThreadPool的原理和使用
- 淺談Android中多線(xiàn)程切換的幾種方法
- Android如何調(diào)整線(xiàn)程調(diào)用棧大小
相關(guān)文章
Android使用多線(xiàn)程實(shí)現(xiàn)斷點(diǎn)下載
這篇文章主要介紹了Android使用多線(xiàn)程實(shí)現(xiàn)斷點(diǎn)下載,多線(xiàn)程下載是加快下載速度的一種方式,感興趣的小伙伴們可以參考一下2016-03-03
創(chuàng)建子線(xiàn)程對(duì)Android進(jìn)行網(wǎng)絡(luò)訪問(wèn)
這篇文章介紹了Android中創(chuàng)建子線(xiàn)程進(jìn)行網(wǎng)絡(luò)訪問(wèn)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考2021-11-11
Android關(guān)鍵字persistent詳細(xì)分析
這篇文章主要介紹了Android關(guān)鍵字persistent的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下2021-04-04
Android Studio 安裝配置方法完整教程【小白秒懂】
這篇文章主要介紹了Android Studio 安裝配置方法完整教程,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2020-03-03
Android?如何獲取傳感器的數(shù)據(jù)方法詳解
這篇文章主要介紹了Android?如何獲取傳感器的數(shù)據(jù),傳感器?Sensor?是一種檢測(cè)裝置,能感受到被測(cè)量的信息,并能將感受到的信息,按一定規(guī)律變換成為電信號(hào)或其他所需形式的信息輸出,以滿(mǎn)足信息的傳輸、處理、存儲(chǔ)、顯示、記錄和控制等要求2022-07-07
Android開(kāi)發(fā)之實(shí)現(xiàn)GridView支付寶九宮格
本文給大家介紹android開(kāi)發(fā)之實(shí)現(xiàn)gridview支付寶九宮格,其原理是讓每個(gè)item都設(shè)置成帶有分割線(xiàn)的背景,在這不透漏太多內(nèi)容,感興趣的朋友請(qǐng)閱讀全文2015-11-11
Android基于AudioManager、PhoneStateListener實(shí)現(xiàn)設(shè)置黑名單功能
這篇文章主要介紹了Android基于AudioManager、PhoneStateListener實(shí)現(xiàn)設(shè)置黑名單功能的方法,涉及Android操作手機(jī)通信錄及通話(huà)模式與手機(jī)狀態(tài)的相關(guān)技巧,需要的朋友可以參考下2016-01-01
Android開(kāi)發(fā)之ListView的簡(jiǎn)單用法及定制ListView界面操作示例
這篇文章主要介紹了Android開(kāi)發(fā)之ListView的簡(jiǎn)單用法及定制ListView界面操作,結(jié)合實(shí)例形式分析了Android ListView界面布局相關(guān)操作技巧,需要的朋友可以參考下2019-04-04

