Android中的音乐播放
生活随笔
收集整理的這篇文章主要介紹了
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; } ? }總結
以上是生活随笔為你收集整理的Android中的音乐播放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 反恐精英起源服务器文件在哪,反恐精英:起
- 下一篇: python模块实例化_python中z