當前位置:首頁 » 安卓系統 » android播放代碼

android播放代碼

發布時間: 2025-04-05 07:02:54

① android 如何實現音樂播放

在Android平台下,要實現聲音的播放是十分容易實現的,只要生成一個MediaPlayer對象,並調用它的相關方法,就能改變對聲音播放進行控制。MediaPlayer對象有一下各種狀態:

熟悉了MediaPlayer對象的各種狀態後以及轉換條件,就能很好的控制媒體播放。

例如:播放res/raw文件夾中的歌曲十分簡單,只需寫如下代碼:

MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);

mp.start();
也可以指定音樂文件的位置來進行播放,例如,在sdcard根目錄下有有一首歌曲:test.mp3。則可以這樣播放:
MediaPlayer mp = new MediaPlayer();
String song = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "test.mp3";
try {
mp.setDataSource(song);
mp.prepare();
mp.start();
} catch (Exception e) {
e.printStackTrace();
}

建議在播放音樂的時候把MediaPlayer放在Service中,因為如果放在Activity中會使得界面特別卡。而且音樂不能放到後台里播放,一旦退出Activity,音樂就會暫停播放。

可以在Activity中布局相關的界面,例如按鈕等。然後通過這個Activitiy來啟動這個Service。要通過UI與Service交互,可以通過Intent對象傳遞消息。更復雜一些,要實現Service向Activity發送消息,並利用這些消息來更新UI,這可以用廣播機制,例如告訴Activity是否正在播放,播放進度,當前播放歌曲條目等信息。

例如以下實例代碼:

/*Activity中*/

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
btnPlay = (Button)findViewById(R.id.btnPlay);
btnPause = (Button)findViewById(R.id.btnPause);
btnPlay.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SoundService.class);
intent.putExtra("playing", true);
startService(intent);
}
});

btnPause.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SoundService.class);
intent.putExtra("playing", false);
startService(intent);
}
});
}
}

播放音樂的Service代碼:

package com.yzy.sound;

import android.app.Service;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.IBinder;

public class SoundService extends Service {
private MediaPlayer mp;

@Override
public void onCreate() {
super.onCreate();
mp = MediaPlayer.create(this, R.raw.test);
}

@Override
public void onDestroy() {
super.onDestroy();
mp.release();
stopSelf();
}

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
boolean playing = intent.getBooleanExtra("playing", false);
if (playing) {
mp.start();
} else {
mp.pause();
}
return super.onStartCommand(intent, flags, startId);
}

@Override
public IBinder onBind(Intent intent) {
return null;
}

}

熱點內容
玩和平精英的時候伺服器發呆了怎麼辦 發布:2025-04-05 11:02:40 瀏覽:380
怎麼把蘋果的號轉到安卓手機上 發布:2025-04-05 10:39:05 瀏覽:532
存儲核心架構瓶頸已被攻破 發布:2025-04-05 10:38:27 瀏覽:308
空間新演算法 發布:2025-04-05 10:33:21 瀏覽:707
蜀門和遠征哪個配置低 發布:2025-04-05 10:23:50 瀏覽:287
linux下jdk的安裝 發布:2025-04-05 10:12:20 瀏覽:69
單機江湖腳本 發布:2025-04-05 10:08:32 瀏覽:767
愛奇藝離線緩存怎麼傳藍牙 發布:2025-04-05 10:00:48 瀏覽:142
阿里雲伺服器內存超頻 發布:2025-04-05 10:00:48 瀏覽:578
如何登錄pubg國際服安卓手機 發布:2025-04-05 09:40:07 瀏覽:413