首页

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

java

2020-7-30

简单音乐播放器,实现了播放器基本功能,使用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;
		}
	}

}
资源下载此资源下载价格为3D币(VIP免费),请先
资源文件列表
MusicPlayerDemo/.classpath , 459
MusicPlayerDemo/.project , 851
MusicPlayerDemo/.settings/org.eclipse.core.resources.prefs , 57
MusicPlayerDemo/AndroidManifest.xml , 1608
MusicPlayerDemo/bin/AndroidManifest.xml , 1608
MusicPlayerDemo/bin/classes.dex , 688384
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity$1.class , 875
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity$2.class , 912
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity$3.class , 3521
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity$4.class , 853
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity$5.class , 850
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity$6.class , 2196
MusicPlayerDemo/bin/classes/com/music/activity/AddSong2PlaylistActivity.class , 6009
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$1.class , 813
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$2.class , 2671
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$3.class , 2996
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$4.class , 2676
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$5.class , 2751
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$6.class , 4789
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$7.class , 891
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity$8.class , 3368
MusicPlayerDemo/bin/classes/com/music/activity/MusicMainActivity.class , 8224
MusicPlayerDemo/bin/classes/com/music/activity/MusicPlayActivity$1.class , 1697
MusicPlayerDemo/bin/classes/com/music/activity/MusicPlayActivity$2.class , 1224
MusicPlayerDemo/bin/classes/com/music/activity/MusicPlayActivity$3.class , 956
MusicPlayerDemo/bin/classes/com/music/activity/MusicPlayActivity$4.class , 957
MusicPlayerDemo/bin/classes/com/music/activity/MusicPlayActivity$5.class , 1306
MusicPlayerDemo/bin/classes/com/music/activity/MusicPlayActivity.class , 4132
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$1.class , 851
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$2.class , 888
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$3.class , 1128
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$4$1.class , 1348
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$4$2.class , 938
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$4.class , 1819
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$5$1.class , 1717
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$5$2.class , 938
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$5.class , 1827
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$6.class , 1237
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$7.class , 1128
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$8.class , 826
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$9$1.class , 2600
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$9$2.class , 981
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity$9.class , 3301
MusicPlayerDemo/bin/classes/com/music/activity/PlaylistSongActivity.class , 8429
MusicPlayerDemo/bin/classes/com/music/adapter/ListViewAdapter$ViewHolder.class , 874
MusicPlayerDemo/bin/classes/com/music/adapter/ListViewAdapter.class , 4657
MusicPlayerDemo/bin/classes/com/music/application/MyApplication$1.class , 1780
MusicPlayerDemo/bin/classes/com/music/application/MyApplication.class , 1691
MusicPlayerDemo/bin/classes/com/music/bean/Album.class , 1000
MusicPlayerDemo/bin/classes/com/music/bean/Mp3.class , 2870
MusicPlayerDemo/bin/classes/com/music/BuildConfig.class , 327
MusicPlayerDemo/bin/classes/com/music/R$attr.class , 313
MusicPlayerDemo/bin/classes/com/music/R$dimen.class , 434
MusicPlayerDemo/bin/classes/com/music/R$drawable.class , 788
MusicPlayerDemo/bin/classes/com/music/R$id.class , 1510
MusicPlayerDemo/bin/classes/com/music/R$layout.class , 662
MusicPlayerDemo/bin/classes/com/music/R$menu.class , 361
MusicPlayerDemo/bin/classes/com/music/R$string.class , 445
MusicPlayerDemo/bin/classes/com/music/R$style.class , 404
MusicPlayerDemo/bin/classes/com/music/R.class , 583
MusicPlayerDemo/bin/classes/com/music/service/MusicPlayService$1.class , 871
MusicPlayerDemo/bin/classes/com/music/service/MusicPlayService$LocalBinder.class , 647
MusicPlayerDemo/bin/classes/com/music/service/MusicPlayService.class , 4774
MusicPlayerDemo/bin/classes/com/music/util/ImageLoader$BitmapDisplayer.class , 1297
MusicPlayerDemo/bin/classes/com/music/util/ImageLoader$PhotosLoader.class , 1984
MusicPlayerDemo/bin/classes/com/music/util/ImageLoader$PhotoToLoad.class , 684
MusicPlayerDemo/bin/classes/com/music/util/ImageLoader.class , 6336
MusicPlayerDemo/bin/classes/com/music/util/MemoryCache.class , 3634
MusicPlayerDemo/bin/classes/com/music/util/MusicUtils.class , 13244
MusicPlayerDemo/bin/dexedLibs/android-support-v4-a2eb397eeb6c519009396122cd48a25c.jar , 211326
MusicPlayerDemo/bin/jarlist.cache , 120
MusicPlayerDemo/bin/MusicPlayerDemo.apk , 4760988
MusicPlayerDemo/bin/resources.ap_ , 4523339
MusicPlayerDemo/bin/res/drawable-hdpi/audioplayernoartwork.png , 163875
MusicPlayerDemo/bin/res/drawable-hdpi/bat_up.png , 33188
MusicPlayerDemo/bin/res/drawable-hdpi/bg2.png , 133855
MusicPlayerDemo/bin/res/drawable-hdpi/button_back.png , 5003
MusicPlayerDemo/bin/res/drawable-hdpi/button_start.png , 9503
MusicPlayerDemo/bin/res/drawable-hdpi/delete_01.png , 1547
MusicPlayerDemo/bin/res/drawable-hdpi/ic_launcher.png , 9355
MusicPlayerDemo/bin/res/drawable-hdpi/music_add.png , 2549
MusicPlayerDemo/bin/res/drawable-hdpi/music_add_disable.png , 2549
MusicPlayerDemo/bin/res/drawable-hdpi/next_bt.png , 652
MusicPlayerDemo/bin/res/drawable-hdpi/pause_bt.png , 140
MusicPlayerDemo/bin/res/drawable-hdpi/play_bt.png , 771
MusicPlayerDemo/bin/res/drawable-hdpi/previous_bt.png , 656
MusicPlayerDemo/bin/res/drawable-mdpi/ic_launcher.png , 3112
MusicPlayerDemo/bin/res/drawable-xhdpi/ic_launcher.png , 9355
MusicPlayerDemo/bin/res/drawable-xxhdpi/ic_launcher.png , 17889
MusicPlayerDemo/gen/com/music/BuildConfig.java , 151
MusicPlayerDemo/gen/com/music/R.java , 5488
MusicPlayerDemo/ic_launcher-web.png , 51394
MusicPlayerDemo/libs/android-support-v4.jar , 556198
MusicPlayerDemo/proguard-project.txt , 781
MusicPlayerDemo/project.properties , 563
MusicPlayerDemo/res/drawable-hdpi/audioplayernoartwork.png , 168448
MusicPlayerDemo/res/drawable-hdpi/bat_up.png , 29045
MusicPlayerDemo/res/drawable-hdpi/bg2.png , 136611
MusicPlayerDemo/res/drawable-hdpi/button_back.png , 11502
MusicPlayerDemo/res/drawable-hdpi/button_start.png , 12206
MusicPlayerDemo/res/drawable-hdpi/delete_01.png , 2856
MusicPlayerDemo/res/drawable-hdpi/ic_launcher.png , 12516
MusicPlayerDemo/res/drawable-hdpi/music_add.png , 3815
MusicPlayerDemo/res/drawable-hdpi/music_add_disable.png , 3799
MusicPlayerDemo/res/drawable-hdpi/next_bt.png , 3399
MusicPlayerDemo/res/drawable-hdpi/pause_bt.png , 2927
MusicPlayerDemo/res/drawable-hdpi/play_bt.png , 3489
MusicPlayerDemo/res/drawable-hdpi/previous_bt.png , 3386
MusicPlayerDemo/res/drawable-mdpi/ic_launcher.png , 3777
MusicPlayerDemo/res/drawable-xhdpi/ic_launcher.png , 12516
MusicPlayerDemo/res/drawable-xxhdpi/ic_launcher.png , 24777
MusicPlayerDemo/res/layout/addsong2playlist.xml , 3433
MusicPlayerDemo/res/layout/item4music_main_activity.xml , 1166
MusicPlayerDemo/res/layout/item4playlist_song_activity.xml , 1585
MusicPlayerDemo/res/layout/musicitme.xml , 390
MusicPlayerDemo/res/layout/music_main_activity.xml , 1911
MusicPlayerDemo/res/layout/music_play.xml , 3240
MusicPlayerDemo/res/layout/playlist_songs.xml , 5000
MusicPlayerDemo/res/layout/pl_songs_add.xml , 2540
MusicPlayerDemo/res/menu/main.xml , 263
MusicPlayerDemo/res/values-sw600dp/dimens.xml , 203
MusicPlayerDemo/res/values-sw720dp-land/dimens.xml , 277
MusicPlayerDemo/res/values-v11/styles.xml , 334
MusicPlayerDemo/res/values-v14/styles.xml , 391
MusicPlayerDemo/res/values/dimens.xml , 220
MusicPlayerDemo/res/values/strings.xml , 232
MusicPlayerDemo/res/values/styles.xml , 697
MusicPlayerDemo/src/com/music/activity/AddSong2PlaylistActivity.java , 6050
MusicPlayerDemo/src/com/music/activity/MusicMainActivity.java , 11961
MusicPlayerDemo/src/com/music/activity/MusicPlayActivity.java , 4138
MusicPlayerDemo/src/com/music/activity/PlaylistSongActivity.java , 9651
MusicPlayerDemo/src/com/music/adapter/ListViewAdapter.java , 3935
MusicPlayerDemo/src/com/music/application/MyApplication.java , 1385
MusicPlayerDemo/src/com/music/bean/Album.java , 560
MusicPlayerDemo/src/com/music/bean/Mp3.java , 2011
MusicPlayerDemo/src/com/music/service/MusicPlayService.java , 4907
MusicPlayerDemo/src/com/music/util/ImageLoader.java , 5428
MusicPlayerDemo/src/com/music/util/MemoryCache.java , 2544
MusicPlayerDemo/src/com/music/util/MusicUtils.java , 16316
没有账号? 忘记密码?

社交账号快速登录