在Android平臺(tái)下,要實(shí)現(xiàn)聲音的播放是十分容易實(shí)現(xiàn)的,只要生成一個(gè)MediaPlayer對(duì)象,并調(diào)用它的相關(guān)方法,就能改變對(duì)聲音播放進(jìn)行控制。MediaPlayer對(duì)象有一下各種狀態(tài):
創(chuàng)新互聯(lián)建站是一家專業(yè)提供景寧畬族自治企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、外貿(mào)營銷網(wǎng)站建設(shè)、HTML5、小程序制作等業(yè)務(wù)。10年已為景寧畬族自治眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
熟悉了MediaPlayer對(duì)象的各種狀態(tài)后以及轉(zhuǎn)換條件,就能很好的控制媒體播放。
例如:播放res/raw文件夾中的歌曲十分簡單,只需寫如下代碼:
MediaPlayer mp = MediaPlayer.create(context, R.raw.sound_file_1);
mp.start();
也可以指定音樂文件的位置來進(jìn)行播放,例如,在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();
? ?}
建議在播放音樂的時(shí)候把MediaPlayer放在Service中,因?yàn)槿绻旁贏ctivity中會(huì)使得界面特別卡。而且音樂不能放到后臺(tái)里播放,一旦退出Activity,音樂就會(huì)暫停播放。
可以在Activity中布局相關(guān)的界面,例如按鈕等。然后通過這個(gè)Activitiy來啟動(dòng)這個(gè)Service。要通過UI與Service交互,可以通過Intent對(duì)象傳遞消息。更復(fù)雜一些,要實(shí)現(xiàn)Service向Activity發(fā)送消息,并利用這些消息來更新UI,這可以用廣播機(jī)制,例如告訴Activity是否正在播放,播放進(jìn)度,當(dāng)前播放歌曲條目等信息。
例如以下實(shí)例代碼:
/*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;
}
}
安卓 音樂發(fā)燒友必備:
poweramp音樂播放器,支持安卓musicfx音效插件進(jìn)入軟件音頻設(shè)置開啟musicfx。立體聲效果附帶自定義設(shè)置,立體聲效果長按按鈕旁字體進(jìn)入自定義界面。支持音調(diào),可進(jìn)一步放大低音和高音。附帶專業(yè)的音頻壓限器。支持自定義EQ設(shè)置。(ROOT權(quán)限下用幸運(yùn)破解器可完美破解)
Rockbox音樂播放器,擁有最為強(qiáng)大而復(fù)雜的EQ自定義設(shè)置,專業(yè)級(jí)音樂播放器,普通人慎用,由于其用法設(shè)置過于復(fù)雜,不適合新手使用。
以上兩款是音質(zhì)最強(qiáng)的安卓音樂播放器。建議使用:poweramp音樂播放器
其他的天天動(dòng)聽,酷狗音樂,酷我音樂盒,多米音樂,是國產(chǎn)的音樂播放器,雖有華麗的界面但音質(zhì)被poweramp和Rockbox完全秒殺。
你打開播放器,然后退出,在頂端任務(wù)欄里不是有一個(gè)正在播放的圖標(biāo)嗎,那就是沒退出。 打開播放器后,只要你暫停播放,再退出,就不會(huì)有那個(gè)圖標(biāo)了,也就是退出了。