音頻音效Audio
作者:wgcq
音頻聲效Audio,適合拿來(lái)學(xué)習(xí)
源碼簡(jiǎn)介:音頻聲效Audio,適合拿來(lái)學(xué)習(xí)
源碼效果:
源碼片段:
- package com.example.shiyan;
- import java.util.ArrayList;
- import java.util.List;
- import android.app.Service;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.BitmapFactory;
- import android.graphics.drawable.BitmapDrawable;
- import android.media.MediaPlayer;
- import android.media.MediaPlayer.OnCompletionListener;
- import android.net.Uri;
- import android.os.Handler;
- import android.os.IBinder;
- import android.view.animation.AnimationUtils;
- import android.widget.Toast;
- /**
- * 類說(shuō)明:音樂(lè)播放服務(wù)類
- * @author LiangAn
- * @version 創(chuàng)建時(shí)間:2015年3月18日 上午10:24:17
- */
- public class ControlPlay extends Service {
- public static MediaPlayer myMediaPlayer;
- public static MainActivity c_ma;
- public static int playing_id = 0;
- // 初始化歌曲播放時(shí)間的變量
- private int CurrentTime = 0;
- // 初始化歌曲總時(shí)間的變量
- private int CountTime = 0;
- public static Music_infoAdapter m_in;
- public Thread thread;
- Handler handler = new Handler();
- public boolean playFlag = true;
- public int vTemp = 0;
- @Override
- public IBinder onBind(Intent intent) {
- return null;
- }
- @Override
- public void onCreate() {
- super.onCreate();
- initMediaSource(initMusicUri(0));
- }
- @Override
- public void onDestroy() {
- super.onDestroy();
- if (myMediaPlayer != null) {
- myMediaPlayer.stop();
- myMediaPlayer.release();
- myMediaPlayer = null;
- }
- }
- @Override
- public void onStart(Intent intent, int startId) {
- super.onStart(intent, startId);
- String playFlag = intent.getExtras().getString("control");
- if ("play".equals(playFlag)) {
- playMusic();
- } else if ("next".equals(playFlag)) {
- playNext();
- } else if ("front".equals(playFlag)) {
- playFront();
- } else if ("listClick".equals(playFlag)) {
- playing_id = intent.getExtras().getInt("musicId_1");
- initMediaSource(initMusicUri(playing_id));
- playMusic();
- } else if ("gridClick".equals(playFlag)) {
- playing_id = intent.getExtras().getInt("musicId_2");
- initMediaSource(initMusicUri(playing_id));
- playMusic();
- }
- }
- /**
- * 初始化媒體對(duì)象
- *
- * @param mp3Path
- * mp3路徑
- */
- public void initMediaSource(String mp3Path) {
- Uri mp3Uri = Uri.parse(mp3Path);
- if (myMediaPlayer != null) {
- myMediaPlayer.stop();
- myMediaPlayer.reset();
- myMediaPlayer = null;
- }
- // 為myMediaPlayer創(chuàng)建對(duì)象
- myMediaPlayer = MediaPlayer.create(this, mp3Uri);
- //myMediaPlayer = MediaPlayer.create(this, R.raw.aaaa);
- // c_ma.startRhythm(myMediaPlayer);
- }
- /**
- * 返回列表第幾行的歌曲路徑
- *
- * @param _id
- * 表示歌曲序號(hào),從0開始
- */
- public String initMusicUri(int _id) {
- playing_id = _id;
- String s;
- // 判斷列表和列表長(zhǎng)度不為空時(shí)才獲取
- if (Music_infoAdapter.musicList != null
- && Music_infoAdapter.musicList.size() != 0) {
- s = Music_infoAdapter.musicList.get(_id).getMusicPath();
- return s;
- } else {
- // 否則返回空字符串
- return "";
- }
- }
- /**
- * 音樂(lè)播放方法,并且?guī)в袝和7椒?/span>
- */
- public void playMusic() {
- // 判斷歌曲不能為空
- System.out.println("sfajfdsa");
- if (myMediaPlayer != null && Music_infoAdapter.musicList.size() != 0) {
- if (myMediaPlayer.isPlaying()) {
- // 歌曲暫停
- myMediaPlayer.stop();
- // 更換播放按鈕背景
- MainActivity.play_ImageButton
- .setBackgroundResource(R.drawable.play_button);
- // 取消通知
- MainActivity.mNotificationManager.cancel(1);
- } else {
- System.out.println("sfajfdsa2");
- // myMediaPlayer.start();
- try {
- if(myMediaPlayer != null)
- {
- myMediaPlayer.stop();
- }
- myMediaPlayer.prepare();
- myMediaPlayer.start();
- } catch (Exception e) {
- e.printStackTrace();
- }
- // /////////////////////// 初始化歌詞配置 /////////////////////// //
- // 更換背景-
- MainActivity.play_ImageButton
- .setBackgroundResource(R.drawable.pause_button);
- // 啟動(dòng)線程更新SeekBar
- startSeekBarUpdate();
- // 更新歌曲播放第幾首
- int x = playing_id + 1;
- MainActivity.music_number.setText("" + x + "/"
- + Music_infoAdapter.musicList.size());
- // 截取.mp3字符串
- String a = Music_infoAdapter.musicList.get(playing_id)
- .getMusicName();
- // int b = a.indexOf(".mp3");
- // String c = a.substring(0, b);
- // 切換帶動(dòng)畫更新歌曲名
- MainActivity.music_Name.setText(a);
- MainActivity.music_Name.setAnimation(AnimationUtils
- .loadAnimation(ControlPlay.this, R.anim.translate_z));
- // 帶動(dòng)畫更新專輯名
- MainActivity.music_Album
- .setText(Music_infoAdapter.musicList.get(playing_id)
- .getMusicAlbum());
- MainActivity.music_Album.setAnimation(AnimationUtils
- .loadAnimation(ControlPlay.this, R.anim.alpha_y));
- // 更新歌曲時(shí)間
- MainActivity.time_right.setText(Music_infoAdapter
- .toTime(Music_infoAdapter.musicList.get(playing_id)
- .getMusicTime()));
- }
- /**
- * 監(jiān)聽播放是否完成
- */
- myMediaPlayer.setOnCompletionListener(new OnCompletionListener() {
- @Override
- public void onCompletion(MediaPlayer mp) {
- // TODO Auto-generated method stub
- // 播放完當(dāng)前歌曲,自動(dòng)播放下一首
- playNext();
- }
- });
- } else {
- Toast.makeText(ControlPlay.this, "木有在手機(jī)里找到歌曲啊...",
- Toast.LENGTH_SHORT).show();
- }
- }
- /**
- * 播放下一首
- */
- public void playNext() {
- // 判斷歌曲不能為空
- if (Music_infoAdapter.musicList.size() != 0) {
- // 如果到了***一首則一直播放***一首
- if (playing_id == Music_infoAdapter.musicList.size() - 1) {
- playing_id = Music_infoAdapter.musicList.size() - 1;
- Toast.makeText(ControlPlay.this, "已經(jīng)是***一首啦!",
- Toast.LENGTH_SHORT).show();
- MainActivity.play_ImageButton
- .setBackgroundResource(R.drawable.play_button);
- MainActivity.mNotificationManager.cancel(1);
- } else {
- initMediaSource(initMusicUri(++playing_id));
- playMusic();
- }
- } else {
- Toast.makeText(ControlPlay.this, "木有找到歌曲啊!", Toast.LENGTH_SHORT)
- .show();
- }
- }
- /**
- * 播放上一首
- */
- public void playFront() {
- // 判斷歌曲不能為空
- if (Music_infoAdapter.musicList.size() != 0) {
- // 如果到了***首則一直播放***首
- if (playing_id == 0) {
- playing_id = 0;
- Toast.makeText(ControlPlay.this, "現(xiàn)在就是***首哦!",
- Toast.LENGTH_SHORT).show();
- } else {
- initMediaSource(initMusicUri(--playing_id));
- playMusic();
- }
- } else {
- Toast.makeText(ControlPlay.this, "木有找到歌曲?。?quot;, Toast.LENGTH_SHORT)
- .show();
- }
- }
- public void startSeekBarUpdate() {
- handler.post(start);
- }
- Runnable start = new Runnable() {
- @Override
- public void run() {
- // TODO Auto-generated method stub
- handler.post(updatesb);
- }
- };
- Runnable updatesb = new Runnable() {
- @Override
- public void run() {
- // 獲取SeekBar走動(dòng)到那的時(shí)間
- MainActivity.play_time = myMediaPlayer
- .getCurrentPosition();
- // 設(shè)置填充當(dāng)前獲取的進(jìn)度
- MainActivity.seekbar
- .setProgress(MainActivity.play_time);
- // SeekBar的***值填充歌曲時(shí)間
- MainActivity.seekbar.setMax(Music_infoAdapter.musicList
- .get(playing_id).getMusicTime());
- // 線程延遲1000毫秒啟動(dòng)
- handler.postDelayed(updatesb, 1000);
- }
- };
- Handler mHandler = new Handler();
- }
責(zé)任編輯:倪明
來(lái)源:
devstore