日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

android+多米音乐+自动播放,android 高仿多米音乐播放器

發布時間:2025/3/21 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android+多米音乐+自动播放,android 高仿多米音乐播放器 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

半年前寫了個音樂播放器,仿的是多米的UI界面

之前發表在eoe社區,今天也發到csdn上來

不羅嗦,先上效果圖:

下面簡單介紹下代碼:

MusicPlayer?播放音樂的核心類,該類有以下成員變量

private?final?static?String?TAG?=?"MusicPlayer";

private?final?String?BROCAST_NAME?=?"com.genius.musicplay.brocast";

private?MediaPlayer?mMediaPlayer;???????????????????//?播放器對象

private?List?mMusicFileList;???????????????//?音樂文件列表

private?int?mCurPlayIndex;??????????????????????????//?當前播放索引

private?int?mPlayState;?????????????????????????????//?播放器狀態

private?int?mPLayMode;??????????????????????????????//?歌曲播放模式

private?Random?mRandom;

private?Context?mContext;

其實該類就是將MediaPlayer做了一層封裝,提供出一些播放音樂的相關操作如播放,暫停,上一曲,下一曲等等

MusicService?是播放音樂的服務繼承自service,MediaPlayer作為它的成員變量

所以對MediaPlayer的操作就委托給了MusicService

ServiceManager,管理服務的對象,采用AIDL接口方式實現遠程操作,對AIDL熟悉的童鞋你懂得

private?final?static?String?TAG?=?"ServiceManager";

private?final?static?String?SERVICE_NAME?=?"com.genius.service.musicservices";

private?Boolean?mConnectComplete;

private?ServiceConnection?mServiceConnection;

private?MusicConnect?mMusicConnect;

private?IOnServiceConnectComplete?mIOnServiceConnectComplete;

private?Context?mContext;

MusicConnect就是AIDL接口對象

MusicConnectMusicConnectMusicConnectMusicConnectMusicConnectMusicConnectMusicConnectMusicConnectMusicConnectMusicData?音樂歌曲的信息,由于要在AIDL接口傳遞,所以需要實現Parcelable接口

public?class?MusicData?implements?Parcelable{

public?final?static?String?KEY_MUSIC_DATA?=?"MusicData";

private?final?static?String?KEY_MUSIC_NAME?=?"MusicName";

private?final?static?String?KEY_MUSIC_TIME?=?"MusicTime";

private?final?static?String?KEY_MUSIC_PATH?=?"MusicPath";

private?final?static?String?KEY_MUSIC_ARITST?=?"MusicAritst";

public?String?mMusicName;

public?int??mMusicTime;

public?String?mMusicPath;

public?String?mMusicAritst;

public?MusicData()

{

mMusicName?=?"";

mMusicTime?=?0;

mMusicPath?=?"";

mMusicAritst?=?"";

}

@Override

public?int?describeContents()?{

//?TODO?Auto-generated?method?stub

return?0;

}

@Override

public?void?writeToParcel(Parcel?dest,?int?flags)?{

//?TODO?Auto-generated?method?stub

Bundle?mBundle=new?Bundle();

mBundle.putString(KEY_MUSIC_NAME,?mMusicName);

mBundle.putInt(KEY_MUSIC_TIME,?mMusicTime);

mBundle.putString(KEY_MUSIC_PATH,?mMusicPath);

mBundle.putString(KEY_MUSIC_ARITST,?mMusicAritst);

dest.writeBundle(mBundle);

}

public?static?final?Parcelable.Creator?CREATOR?=?new?Parcelable.Creator()

{

@Override

public?MusicData?createFromParcel(Parcel?source)?{

//?TODO?Auto-generated?method?stub

MusicData?Data?=?new?MusicData();

Bundle?mBundle=new?Bundle();

mBundle?=?source.readBundle();

Data.mMusicName?=?mBundle.getString(KEY_MUSIC_NAME);

Data.mMusicTime?=?mBundle.getInt(KEY_MUSIC_TIME);

Data.mMusicPath?=?mBundle.getString(KEY_MUSIC_PATH);

Data.mMusicAritst?=?mBundle.getString(KEY_MUSIC_ARITST);

return?Data;

}

@Override

public?MusicData[]?newArray(int?size)?{

//?TODO?Auto-generated?method?stub

return?new?MusicData[size];

}

};

}

音樂播放模式類

public?class?MusicPlayMode?{

public?static?final?int?MPM_SINGLE_LOOP_PLAY?=?0;???//?單曲循環

public?static?final?int?MPM_ORDER_PLAY?=?1;?????????//?順序播放

public?static?final?int?MPM_LIST_LOOP_PLAY?=?2;?????//?列表循環

public?static?final?int?MPM_RANDOM_PLAY?=?3;????????//?隨即播放

}

音樂播放狀態類

public?class?MusicPlayState?{

public?static?final?int?MPS_NOFILE?=?-1;????????????//?無音樂文件

public?static?final?int?MPS_INVALID?=?0;????????????//?當前音樂文件無效

public?static?final?int?MPS_PREPARE?=?1;????????????//?準備就緒

public?static?final?int?MPS_PLAYING?=?2;????????????//?播放中

public?static?final?int?MPS_PAUSE?=?3;??????????????//?暫停

public?static?final?String?PLAY_STATE_NAME?=?"PLAY_STATE_NAME";

public?static?final?String?PLAY_MUSIC_INDEX?=?"PLAY_MUSIC_INDEX";

public?static?final?String?MUSIC_INVALID?=?"MUSIC_INVALID";

public?static?final?String?MUSIC_PREPARE?=?"MUSIC_PREPARE";

public?static?final?String?MUSIC_PLAY?=?"MUSIC_PLAY";

public?static?final?String?MUSIC_PAUSE?=?"MUSIC_PAUSE";

public?static?final?String?MUSIC_STOP?=?"MUSIC_STOP";

}

MusicPlayActivity,應用程序主界面,該類代碼也最多,不過里面細分了幾個內部類,如UIManager里面就包含了很多控件對象以及對它們的操作

private?final?static?String?TAG?=?"MusicPlayActivity";

private?final?String?BROCAST_NAME?=?"com.genius.musicplay.brocast";

private?final?static?int?REFRESH_PROGRESS_EVENT?=?0x100;

private?final?static?int?ABOUT_DIALOG_ID?=?1;

private?Handler?mHandler;

private?UIManager?mUIManager;

private?ServiceManager?mServiceManager;?????????????????????????????????//?本地服務管理

private?MusicTimer?mMusicTimer;?????????????????????????????????????????//?檢測歌曲進度的定時器

private?MusicPlayStateBrocast?mPlayStateBrocast;????????????????????????//?音樂播放狀態的廣播接收器

private?SDStateBrocast?mSDStateBrocast;?????????????????????????????????//?SD卡變化接收器

private?List?m_MusicFileList;??????????????????????????????//?音樂列表

private?ListViewAdapter?mListViewAdapter;

private?boolean?mIsSdExist?=?false;?????????????????????????????????????//?SD卡是否存在

private?boolean?mIsHaveData?=?false;????????????????????????????????????//?是否有音樂文件

private?int?mCurMusicTotalTime?=?0;

private?int?mCurPlayMode?=?MusicPlayMode.MPM_LIST_LOOP_PLAY;

MySlidingDrawer,自定義抽屜控件,屬于UIManager的一部分

MusicTimer,用于定時獲取歌曲進度的定時器

其它的東東就不多說了,有興趣的童鞋自個兒下代碼(有注釋)看吧

總結

以上是生活随笔為你收集整理的android+多米音乐+自动播放,android 高仿多米音乐播放器的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。