简单介绍一下自己,二流大学毕业,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> listitems = new ArrayList>();for (int i = 0; i < musicList.size(); i++) {Map item = new HashMap();item.put("name", musicList.get(i).getMusic_name());item.put("author", musicList.get(i).getMusic_author());listitems.add(item);}SimpleAdapter simpleAdapter = new SimpleAdapter(this, listitems,R.layout.line, new String[] { "name", "author" }, new int[] {R.id.textView_name, R.id.textView_author });lv.setAdapter(simpleAdapter);}private void musicEvent() {lv.setOnItemClickListener(new OnItemClickListener() {@Overridepublic void onItemClick(AdapterView<?> parent, View view,int position, long id) {rLayout.setVisibility(View.VISIBLE);music_postion = position;startMediaPlayer(position);}});stopButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Button button = (Button) v;if (mediaPlayer.isPlaying()) {mediaPlayer.pause();button.setText("Start");} else {mediaPlayer.start();button.setText("Stop");}}});forwButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (music_postion == 0) {music_postion=musicList.size() - 1;startMediaPlayer(musicList.size() - 1);} else {music_postion=music_postion - 1;startMediaPlayer(music_postion);}}});nextButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {if (music_postion == musicList.size() - 1) {music_postion=0;startMediaPlayer(music_postion);} else {music_postion=music_postion+1;startMediaPlayer(music_postion);}}});}private void startMediaPlayer(int position) {try {if (mediaPlayer.isPlaying()) {mediaPlayer.stop();}mediaPlayer.reset();mediaPlayer.setDataSource(musicList.get(position).getMusic_path());mediaPlayer.prepare();mediaPlayer.start();} catch (IOException e) {e.printStackTrace();}}}

这个仅仅是开始雏形,我会继续重构,添加代码

更多相关文章

  1. WebView---Android与js交互实例
  2. Android(安卓)消息提示框:五种Toast详解
  3. 实现Android(安卓)Studio JNI开发C/C++使用__android_log_print
  4. Android(安卓)Layout XML属性
  5. android中的资源访问
  6. Android与js交互实例
  7. Android(安卓)TextView文字链接4中方法
  8. Android内核的简单分析
  9. Android(安卓)ADT 离线下载技巧(告别在线安装的麻烦)

随机推荐

  1. 记录android studio 遇到的错误和解决办
  2. Android listview与adapter用法(BaseAdap
  3. android volley json
  4. 博客地址
  5. Android ViewTreeObserver简介
  6. android 交叉编译工具的设置
  7. android AsyncTask 源码跟踪
  8. android把字符串内容保存到指定路径
  9. android 怎么动态设置button 的style
  10. Android Studio报错:Could not download k