Android音乐播放器--播放列表之实现

本文介绍了一个简单的音乐播放列表实现方案,包括自定义数据库的创建、歌曲信息的增删查改以及列表展示等功能。未使用mediaStore多媒体数据库,而是通过自建数据库存储歌曲地址。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

经过一上午的时间,播放列表算是初步搞定了,不过一定还有很多Bug要慢慢解决,下面是代码,希望大家指出不足和错误。。(我没有用到mediaStore多媒体数据库,算是最大的不足,只是用自己建的数据库,来保存歌曲的地址)

public class DBService {
public static void save(String name,Context context){ //把歌曲添加到数据库
MusicDBOpenHelper helper=new MusicDBOpenHelper(context);
SQLiteDatabase db= helper.getReadableDatabase();
db.execSQL("insert into music(music_name)values(?)",new Object[]{name});
db.close();
}
public static List<Music> findAll(Context context){ //查找出数据库中的所有列表
List<Music> musics =new ArrayList<Music>();
MusicDBOpenHelper helper=new MusicDBOpenHelper(context);
SQLiteDatabase db= helper.getReadableDatabase();
Cursor cursor=db.rawQuery("select * from music", null);
while(cursor.moveToNext()){
Music music=new Music();
music.setId(cursor.getInt(0));
music.setMusicName(cursor.getString(1));
musics.add(music);
}
return musics;
}
}
这个类操作数据库的,用来添加和查找歌曲的地址。(没有完善。。。)

public class MusicDBOpenHelper extends SQLiteOpenHelper {
private static final String name="musics";
private static final int version=1;
public MusicDBOpenHelper(Context context) {
super(context, name, null, version);
// TODO Auto-generated constructor stub
}

@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
db.execSQL("create table IF NOT EXISTS music (id integer primary key autoincrement,music_name char(20))");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
db.execSQL("drop table IF EXISTS student");
onCreate(db);
}

}

用来建数据库和版本控制。。

public void addList() //把数据库中的音乐信息加入播放列表。
{
List<Music> musics =new ArrayList<Music>();
musics=DBService.findAll(MusicPalyerActivity.this);
List<HashMap<String,String>> data=new ArrayList<HashMap<String,String>>();

for(Music music:musics){
HashMap<String,String> map=new HashMap<String,String>();
map.put("id",String.valueOf(music.getId()));
map.put("music_name", music.getMusicName());
data.add(map);
}

SimpleAdapter adapter=new SimpleAdapter(MusicPalyerActivity.this, data, R.layout.music_items, new String[]{"id","music_name"}, new int[]{R.id.musicId,R.id.musicName});


listView.setAdapter(adapter);


listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
ListView listView=(ListView)parent;
HashMap<String,String> map=(HashMap<String,String>)listView.getItemAtPosition(position);


playMusic(map.get("music_name")); //播放单击选择的歌曲

}

});

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值