首页>代码>Android高仿手机客户端酷狗音乐播放器>/musicPlayer_liuchunwang/src/com/example/musicplayer/MusicListActivity.java
package com.example.musicplayer;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import com.example.musicPlayer_liuchunwang.R;
import com.example.service.MusicService;
import com.example.tool.MusicListAdapter;
import com.example.tool.ScanSDReicver;

public class MusicListActivity extends Activity {
	/***音乐列表**/
	private ListView listviews;
	/** 设置三个临时变量,分别存放标题,艺术家 **/
	private int _ids[];
	private String _titles[];
	private String _artists[];
	private String _path[];
	private String _alltime[];
	private AlertDialog ad = null;
	private AlertDialog.Builder builder = null;
	MusicListAdapter adapter;// 音乐列表适配器	
	ScanSDReicver receiver;// 扫描SD卡的。

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.music_list);
		init();
	}
	
	private void init(){
		listviews = (ListView) findViewById(R.id.music_list);
		/** 选择子项点击事件 ***/
		listviews.setOnItemClickListener(new MusicListOnClickListener());
		ShowMp3List();
	}
	/** 显示mp3列表*/
	private void ShowMp3List() {
		// 用游标查找媒体信息
		Cursor cursor = this.getContentResolver().query(
				MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
				new String[] { MediaStore.Audio.Media.TITLE,
						MediaStore.Audio.Media.DURATION,
						MediaStore.Audio.Media.ARTIST,
						MediaStore.Audio.Media._ID,
						MediaStore.Audio.Media.DISPLAY_NAME,
						MediaStore.Audio.Media.DATA,
						MediaStore.Audio.Media.ALBUM_ID }, null, null, null);
		/** 判断游标是否为空,有些地方即使没有音乐也会报异常。因为游标不稳定。稍有不慎就出错了,其次,如果用户没有音乐告知用户没有音乐 */
		if (null != cursor && cursor.getCount() == 0) {
			builder = new AlertDialog.Builder(this);
			builder.setMessage(R.string.music_list_tell).setPositiveButton(
					"确定", null);
			ad = builder.create();
			ad.show();
			return;
		}
		/**将游标移到第一位**/
		cursor.moveToFirst();
		/** 分别实例化**/
		_ids = new int[cursor.getCount()];//
		_titles = new String[cursor.getCount()];
		_artists = new String[cursor.getCount()];
		_path = new String[cursor.getCount()];
		_alltime=new String[cursor.getCount()];
		/***用循环把信息查找出来*/
		for (int i = 0; i < cursor.getCount(); i++) {
			_ids[i] = cursor.getInt(3);
			_titles[i] = cursor.getString(0);
			_artists[i] = cursor.getString(2);
			_path[i] = cursor.getString(5).substring(4);
			_alltime[i]=(toTime(cursor.getInt(1)));
			/***一直将游标往下走**/
			cursor.moveToNext();
		}
		listviews.setAdapter(new MusicListAdapter(this, cursor));
	}
	/**
	 * 时间的转换
	 */
	public String toTime(int time) {
		time /= 1000;
		int minute = time / 60;
		int second = time % 60;
		minute %= 60;
		return String.format("%02d:%02d", minute, second);
	}
	/** 音乐列表添加监听器,点击之后播放音乐*/
	private class MusicListOnClickListener implements OnItemClickListener {
		@Override
		public void onItemClick(AdapterView<?> arg0, View view, int position,
				long id) {
			playMusic(position);
		}
	}
	
	/** 根据列表点击的位置开始播放*/
	public void playMusic(int position) {
		Intent intent = new Intent(MusicListActivity.this,
				PlayMusicActivity.class);
		intent.putExtra("_ids", _ids);
		intent.putExtra("_titles", _titles);
		intent.putExtra("_artists", _artists);
		intent.putExtra("position", position);
		startActivity(intent);
		finish();
	}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
	if(keyCode == KeyEvent.KEYCODE_BACK &&event.getRepeatCount() == 0) {
		new AlertDialog.Builder(MusicListActivity.this)
			.setMessage("确定退出吗?")
			.setTitle("提示").setPositiveButton("确定", new DialogInterface.OnClickListener() {				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					Intent mediaServer = new Intent(MusicListActivity.this, 
							MusicService.class);
					stopService(mediaServer);
					finish();
				}
			})
			.setNegativeButton("取消", null)
			.show();
		return false;
	}
	return super.onKeyDown(keyCode, event);
}
}
最近下载更多
WeiZeHui  LV1 2024年5月14日
Mhdpig  LV3 2023年11月18日
微信网友_6503436888428544  LV1 2023年6月3日
微信网友_6372050284417024  LV1 2023年3月2日
快乐的程序员  LV25 2023年1月22日
花无拆  LV2 2022年6月7日
zhuimengren  LV4 2022年5月30日
zx52110  LV1 2022年5月27日
1623096142  LV6 2022年5月27日
5555sd6asd3a2d3  LV6 2022年5月20日
最近浏览更多
652654393  LV5 2024年11月18日
的撒基本大奖  LV8 2024年6月11日
AIWU1234  LV2 2024年6月9日
WeiZeHui  LV1 2024年5月14日
亦是此间少年  LV3 2024年3月7日
666ing  LV2 2023年12月26日
不止是六位数  LV7 2023年12月22日
微笑刺客  LV21 2023年12月12日
Mhdpig  LV3 2023年11月18日
ljwxx郎建伟  LV2 2023年8月10日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友