android初学者的探索之路(Android音乐播放器)
16lz
2021-01-23
简单介绍一下自己,二流大学毕业,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
这个仅仅是开始雏形,我会继续重构,添加代码
更多相关文章
- android通过代码来开启和关闭移动网络
- [android][利用JNI技术在Android中调用、调试C++代码]
- 【Android 开发】: Android 消息处理机制之三: Handler 中 sendM
- 获取Android SDK 源代码并在Eclipse中关联查看的方法