android初学者的探索之路(Android音乐播放器)
16lz
2021-12-04
简单介绍一下自己,二流大学毕业,cs专业,为了找工作学习android,一直不能入门,觉得光看书不行,还是的写代码。
于是我想到一个项目可以把android的知识点串联起来,音乐播放器。
1.activity ,各种界面
2.contentprovider,从手机上读取本地音乐
3.service,音乐播放写在service中,即使没有界面也可以放
4.broadcastreceiver,activity和service的数据传递,用intent,但是的用sendbroadcast传送最好
5.mediaplay,实现音乐的播放暂停,等操作
由于本人水品有限,一切都在摸索中,先贴上没有用service和broadcastreceiver的音乐播放器的代码。
public class MainActivity extends ActionBarActivity {ListView lv;RelativeLayout rLayout;Button forwButton;Button nextButton;Button stopButton;MediaPlayer mediaPlayer = new MediaPlayer();ArrayList musicList = new ArrayList();// 当前点击音乐内容的时间轴位置int music_content_postion;// 当前点击音乐的位置int music_postion;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);initView();putMusicToList();setMusicListToAdapter();musicEvent();}// 当当前activity状态破坏时保存变量,以便恢复时使用@Overrideprotected void onSaveInstanceState(Bundle outState) {super.onSaveInstanceState(outState);outState.putInt("music_postion", music_postion);outState.putInt("music_content_postion", music_content_postion);}// 以便恢复时使用@Overrideprotected void onRestoreInstanceState(Bundle savedInstanceState) {super.onRestoreInstanceState(savedInstanceState);this.music_postion = savedInstanceState.getInt("music_postion");this.music_content_postion = savedInstanceState.getInt("music_content_postion");}@Overrideprotected void onPause() {super.onPause();if (mediaPlayer.isPlaying()) {music_content_postion = mediaPlayer.getCurrentPosition();mediaPlayer.stop();}}@Overrideprotected void onResume() {super.onResume();if (music_content_postion > 0) {if (music_postion == 0) {startMediaPlayer(1);} else {startMediaPlayer(music_postion);mediaPlayer.seekTo(music_content_postion);music_content_postion = 0;}}}@Overrideprotected void onDestroy() {super.onDestroy();mediaPlayer.release();}private void initView() {lv = (ListView) findViewById(R.id.listView_show_music);forwButton = (Button) findViewById(R.id.button_forward);nextButton = (Button) findViewById(R.id.button_next);stopButton = (Button) findViewById(R.id.button_show_music);rLayout = (RelativeLayout) findViewById(R.id.con_music);}private void putMusicToList() {// 用contentresolver获得音乐Cursor cursor = getContentResolver().query(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, null, null, null,null);while (cursor.moveToNext()) {Music music = new Music();String musicName = cursor.getString(cursor.getColumnIndex(Media.DISPLAY_NAME));music.setMusic_name(musicName);byte[] musicPath = cursor.getBlob(cursor.getColumnIndex(Media.DATA));music.setMusic_path(new String(musicPath, 0, musicPath.length - 1));String musicAut = cursor.getString(cursor.getColumnIndex(Media.ARTIST));music.setMusic_author(musicAut);musicList.add(music);}}private void setMusicListToAdapter() {List
这个仅仅是开始雏形,我会继续重构,添加代码
更多相关文章
- WebView---Android与js交互实例
- Android(安卓)消息提示框:五种Toast详解
- 实现Android(安卓)Studio JNI开发C/C++使用__android_log_print
- Android(安卓)Layout XML属性
- android中的资源访问
- Android与js交互实例
- Android(安卓)TextView文字链接4中方法
- Android内核的简单分析
- Android(安卓)ADT 离线下载技巧(告别在线安装的麻烦)