在好例子网,分享、交流、成长!
您当前所在位置:首页Java 开发实例Android平台开发 → android 简单音乐播放器源码下载,实现了播放器基本功能,使用service后台播放音乐,并使用异步线程加载音乐图片

android 简单音乐播放器源码下载,实现了播放器基本功能,使用service后台播放音乐,并使用异步线程加载音乐图片

Android平台开发

下载此实例
  • 开发语言:Java
  • 实例大小:10.33M
  • 下载次数:47
  • 浏览次数:935
  • 发布时间:2016-01-19
  • 实例类别:Android平台开发
  • 发 布 人:luiEmpire
  • 文件格式:.zip
  • 所需积分:2
 相关标签: 播放器 图片 线程 异步 音乐

实例介绍

【实例简介】简单音乐播放器,实现了播放器基本功能,使用service后台播放音乐,并使用异步线程加载音乐图片

【实例截图】




【核心代码】


package com.music.activity;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentResolver;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore;
import android.text.TextUtils;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import com.music.R;
import com.music.application.MyApplication;
import com.music.bean.Album;
import com.music.bean.Mp3;
import com.music.service.MusicPlayService;
import com.music.util.MusicUtils;

public class MusicMainActivity extends Activity {

	private ListView listView;
	private Button btn_playlist, btn_allSongs, btn_singers, btn_albums;
	private TextView tv_newPlaylist;
	private SimpleAdapter adapter;
	boolean isReturePlaylist;
	private int type = -1;
	private List<Mp3> songs;// 歌曲集合
	private List<String> singers;// 歌手集合
	private List<String> al_playlist;// 播放列表集合
	private List<Album> albums;// 专辑集合
	private MusicPlayService mService;
	public static final int PLAYLIST = 1;//适配器加载的数据是歌曲列表
	public static final int SONGS_LIST = 2;//适配器加载的数据是歌曲列表
	public static final int ALL_SINGERS_LIST = 3;//适配器加载的数据是歌手列表
	public static final int ALL_ALBUMS_LIST = 4;//适配器加载的数据是专辑列表
	private MyApplication application;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.music_main_activity);
		application = (MyApplication) getApplication();
		initView();
		initListener();
	}

	public void initView() {
		listView = (ListView) this.findViewById(R.id.listview);
		btn_playlist = (Button) this.findViewById(R.id.btn_playlist);
		btn_allSongs = (Button) this.findViewById(R.id.btn_allSongs);
		btn_singers = (Button) this.findViewById(R.id.btn_singers);
		btn_albums = (Button) this.findViewById(R.id.btn_albums);
		tv_newPlaylist = (TextView) this.findViewById(R.id.tv_newPlaylist);
	}

	public void initListener() {
		//新增列表
		tv_newPlaylist.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				addplaylist();
			}
		});
		//列出所有列表
		btn_playlist.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				tv_newPlaylist.setVisibility(View.VISIBLE);
				al_playlist = MusicUtils.PlaylistList(MusicMainActivity.this);
				List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
				for (int i = 0; i < al_playlist.size(); i  ) {
					Map<String, Object> map = new HashMap<String, Object>();
					map.put("id", "");
					map.put("songName", al_playlist.get(i));
					map.put("singerName", "");
					listItems.add(map);
				}
				adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
						R.id.tv_songName, R.id.tv_singerName });
				type = PLAYLIST;
				listView.setAdapter(adapter);
			}
		});
		//列出所有歌曲
		btn_allSongs.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				tv_newPlaylist.setVisibility(View.GONE);
				songs = MusicUtils.getAllSongs(MusicMainActivity.this);
				List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
				for (int i = 0; i < songs.size(); i  ) {
					Map<String, Object> map = new HashMap<String, Object>();
					map.put("id", songs.get(i).getSqlId());
					map.put("songName", songs.get(i).getName());
					if (songs.get(i).getSingerName().equals("<unknown>")) {
						map.put("singerName", "----");
					} else {
						map.put("singerName", songs.get(i).getSingerName());
					}
					listItems.add(map);
				}
				adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
						R.id.tv_songName, R.id.tv_singerName });
				type = SONGS_LIST;
				listView.setAdapter(adapter);
			}
		});
		//列出所有歌手
		btn_singers.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				tv_newPlaylist.setVisibility(View.GONE);
				List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
				singers = MusicUtils.MusicSingerList(MusicMainActivity.this);
				for (int i = 0; i < singers.size(); i  ) {
					Map<String, Object> map = new HashMap<String, Object>();
					map.put("id", "");
					map.put("songName", singers.get(i));
					map.put("singerName", "");
					listItems.add(map);
				}
				adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
						R.id.tv_songName, R.id.tv_singerName });
				type = ALL_SINGERS_LIST;
				listView.setAdapter(adapter);
			}
		});
		//列出所有专辑
		btn_albums.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				tv_newPlaylist.setVisibility(View.GONE);
				albums = MusicUtils.MusicAlbumList(MusicMainActivity.this);
				List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
				for (int i = 0; i < albums.size(); i  ) {
					Map<String, Object> map = new HashMap<String, Object>();
					map.put("id", "");
					map.put("songName", albums.get(i).getName());
					map.put("singerName", "");
					listItems.add(map);
				}
				adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
						R.id.tv_songName, R.id.tv_singerName });
				type = ALL_ALBUMS_LIST;
				listView.setAdapter(adapter);
			}
		});
		listView.setOnItemClickListener(new OnItemClickListener() {
			private List<Map<String, Object>> listItems;
			Intent it = new Intent();
			@Override
			public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
				switch (type) {
				case PLAYLIST:
					isReturePlaylist = true;
					it.putExtra("position", position);
					it.setClass(MusicMainActivity.this, PlaylistSongActivity.class);
					startActivity(it);
					break;
				case SONGS_LIST:
					if(null == mService){
						mService = application.getmService();
					}
					mService.setCurrentListItme(position);
					mService.setSongs(songs);
					mService.playMusic(songs.get(position).getUrl());
					it.setClass(MusicMainActivity.this, MusicPlayActivity.class);
					startActivity(it);
					break;
				case ALL_SINGERS_LIST:
					songs = MusicUtils.MusicMp3ListbySinger(MusicMainActivity.this, singers.get(position));
					listItems = new ArrayList<Map<String, Object>>();
					for (int i = 0; i < songs.size(); i  ) {
						Map<String, Object> map = new HashMap<String, Object>();
						map.put("id", "");
						map.put("songName", songs.get(i).getName());
						map.put("singerName", "");
						listItems.add(map);
					}
					adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
							R.id.tv_songName, R.id.tv_singerName });
					type = SONGS_LIST;
					listView.setAdapter(adapter);
					break;
				case ALL_ALBUMS_LIST:
					songs = MusicUtils.MusicMp3ListbyAlbum(MusicMainActivity.this, albums.get(position).getName());
					listItems = new ArrayList<Map<String, Object>>();
					for (int i = 0; i < songs.size(); i  ) {
						Map<String, Object> map = new HashMap<String, Object>();
						map.put("id", "");
						map.put("songName", songs.get(i).getName());
						map.put("singerName", "");
						listItems.add(map);
					}
					adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
							R.id.tv_songName, R.id.tv_singerName });
					type = SONGS_LIST;
					listView.setAdapter(adapter);
					break;
				}
			}
		});
	}

	/**
	 * 新建列表
	 */
	public void addplaylist() {
		final EditText inputServer = new EditText(MusicMainActivity.this);
		AlertDialog.Builder builder = new AlertDialog.Builder(MusicMainActivity.this);

		builder.setTitle("Input Name").setIcon(android.R.drawable.ic_dialog_info).setView(inputServer).setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
			@Override
			public void onClick(DialogInterface dialog, int which) {
				dialog.dismiss();
			}
		}).setPositiveButton("Save", new DialogInterface.OnClickListener() {
			public void onClick(DialogInterface dialog, int which) {
				String name = inputServer.getText().toString().trim();
				if (!TextUtils.isEmpty(name)) {
					ContentResolver resolver = getContentResolver();
					int id = idForplaylist(name);
					Uri uri;
					if (id >= 0) {
						uri = ContentUris.withAppendedId(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, id);
						MusicUtils.clearPlaylist(MusicMainActivity.this, id);
					} else {
						ContentValues values = new ContentValues(1);
						values.put(MediaStore.Audio.Playlists.NAME, name);
						uri = resolver.insert(MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, values);
					}
					setResult(RESULT_OK, (new Intent()).setData(uri));

					isReturePlaylist = true;
					Intent it = new Intent();
					it.putExtra("playListName", name);
					it.putExtra("autoAddSong", true);
					it.setClass(MusicMainActivity.this, PlaylistSongActivity.class);
					startActivity(it);
				} else {
					Toast.makeText(getApplicationContext(), "Name cannot be empty", Toast.LENGTH_SHORT).show();
					return;
				}
			}
		});
		builder.create().show();
	}

	/**
	 * 通过列表名得到列表id
	 */
	private int idForplaylist(String name) {
		Cursor c = MusicUtils.query(this, MediaStore.Audio.Playlists.EXTERNAL_CONTENT_URI, new String[] { MediaStore.Audio.Playlists._ID }, MediaStore.Audio.Playlists.NAME   "=?",
				new String[] { name }, MediaStore.Audio.Playlists.NAME);
		int id = -1;
		if (c != null) {
			c.moveToFirst();
			if (!c.isAfterLast()) {
				id = c.getInt(0);
			}
			c.close();
		}
		return id;
	}

	@Override
	protected void onResume() {
		super.onResume();
		//这里要重新刷新列表,因为跳到列表歌曲界面时可能把这个列表删了,
		//所有再跳回来当然要刷新,另外新建列表再回来肯定要刷新的
		if (isReturePlaylist) {
			al_playlist = MusicUtils.PlaylistList(MusicMainActivity.this);
			List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
			for (int i = 0; i < al_playlist.size(); i  ) {
				Map<String, Object> map = new HashMap<String, Object>();
				map.put("id", al_playlist.get(i));
				map.put("songName", "");
				map.put("singerName", "");
				listItems.add(map);
			}
			adapter = new SimpleAdapter(MusicMainActivity.this, listItems, R.layout.item4music_main_activity, new String[] { "id", "songName", "singerName" }, new int[] { R.id.tv_id,
					R.id.tv_songName, R.id.tv_singerName });
			listView.setAdapter(adapter);
			isReturePlaylist = false;
		}
	}

}


实例下载地址

android 简单音乐播放器源码下载,实现了播放器基本功能,使用service后台播放音乐,并使用异步线程加载音乐图片

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警