Android 超简单音乐播放器(十一)将获取的歌词存入数据库
2017-10-27 17:28
344 查看
关于数据库
Android自带了一种轻量级数据库SQLite.敲贴心啊有木有~用起来也很简单。
首先,创建数据库嘛
新建一个LrcData 这里要继承SQLiteOpenHelper 并重写两个方法。OnCreate 在创建时会调用,所以我们建表的逻辑就写在这里面。onUpgrade则是更新数据库时调用。public void onCreate(SQLiteDatabase db) 1、在第一次打开数据库的时候才会走 2、在清除数据之后再次运行-->打开数据库,这个方法会走 3、没有清除数据,不会走这个方法 4、数据库升级的时候这个方法不会走 public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 1、第一次创建数据库的时候,这个方法不会走 2、清除数据后再次运行(相当于第一次创建)这个方法不会走 3、数据库已经存在,而且版本升高的时候,这个方法才会调用 public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) 1、只有新版本比旧版本低的时候才会执行 2、如果不执行降级操作,会抛出异常
public class LrcData extends SQLiteOpenHelper { private static final String DB_NAME = "LRC.DB"; private static final int DB_VERSION = 1; public LrcData(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } public LrcData(Context context) { super(context, DB_NAME, null, DB_VERSION); }//创建时,只需传入context即可。 @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { String NewSQL = LrcTable.getCreatSONGLRCSQL(); sqLiteDatabase.execSQL(NewSQL); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { } public static final class LrcTable { public static final String TBL_NAME = "SONGLRC"; public static final String COL_ID = "ID"; public static final String COL_SONG = "SONG"; public static final String COL_LRC = "LRC"; public static String getCreatSONGLRCSQL(){ String sql = "CREATE TABLE " + TBL_NAME +"(" + COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COL_LRC + " TEXT," + COL_SONG + " VARCHAR(50)"//注意这里没有“,"!! +")"; return sql; } } }
然后,新建一个操作数据库的工具类
主要就是两个,首先是添加相应的歌曲名和歌词内容进去。第二个就是歌曲名去查找有没有歌词。感觉关于增删查改 第一行代码已经写得非常清楚了。根据自己的需要去写就好啦~public class LrcDataUtil { private LrcData lrcData; public LrcDataUtil (Context context){ this.lrcData = new LrcData(context); } //判断数据库中是否有该歌曲歌词数据 public String findLrc(Song song){ SQLiteDatabase db = lrcData.getReadableDatabase(); Cursor cursor = db.query(LrcData.LrcTable.TBL_NAME,null,null,null,null,null,null,null); for (cursor.moveToFirst();!cursor.isAfterLast(); cursor.moveToNext()) { if (cursor.getString(cursor.getColumnIndex(LrcData.LrcTable.COL_SONG)).equals(song.getALLName())){ return cursor.getString(cursor.getColumnIndex(LrcData.LrcTable.COL_LRC)); } } return ""; } //将歌词存入数据库 public void addLrc(String lrc,Song song){ if (!lrc.equals("")){ SQLiteDatabase db = lrcData.getReadableDatabase(); ContentValues contentValues = new ContentValues(); contentValues.put(LrcData.LrcTable.COL_LRC,lrc); contentValues.put(LrcData.LrcTable.COL_SONG,song.getALLName()); db.insert(LrcData.LrcTable.TBL_NAME,null,contentValues); } } }
最后,就是修改获取歌词的代码。
主要就是两个,首先是添加相应的歌曲名和歌词内容进去。第二个就是歌曲名去查找有没有歌词。感觉关于增删查改 第一行代码已经写得非常清楚了。根据自己的需要去写就好啦~public void initLRC(final Song songName) { lrc = lrcDataUtil.findLrc(songName);//先判断数据库里有没有歌词,如果有就直接显示,没有则通过API去获取。 if (lrc.equals("")) { HttpUtil.requstLrcData(songName.getSong(), new Callback() { @Override public void onFailure(Call call, IOException e) { lrc = ""; Log.i("fali", "fali" + lrc); runOnUiThread(new Runnable() { @Override public void run() { Log.i("fali", "fali" + lrc + "2"); ILrcBulider bulider = new DefaultLrcBulider(); List<LrcRow> rows = bulider.getLrcRows(lrc); Log.i("fali", "fali" + rows + "3"); mLrcView.setLrc(rows); } }); } @Override public void onResponse(Call call, Response response) throws IOException { lrc = LrcUtil.getLrcFromAssets(LrcJsonUtil.parseJOSNWithGSON(response, 1)); Log.i("Response", "Response1" + lrc + "1"); runOnUiThread(new Runnable() { @Override public void run() { lrcDataUtil.addLrc(lrc, songName);//获取到的歌词存入数据库 Log.i("Response", "Response1" + lrc + "2"); ILrcBulider bulider = new DefaultLrcBulider(); List<LrcRow> rows = bulider.getLrcRows(lrc); Log.i("Response", "Response1" + rows + "2"); mLrcView.setLrc(rows); } }); } }); } else { ILrcBulider bulider = new DefaultLrcBulider(); List<LrcRow> rows = bulider.getLrcRows(lrc); mLrcView.setLrc(rows); } }
相关文章推荐
- Android 超简单音乐播放器(十)歌词的实现
- Android中怎么获取系统时间并存入数据库
- android之访问网络获取网页数据并存入数据库
- Android调用相机和相册获取图片并存入数据库(反思)
- Android客服端, 服务器和数据库简单交互之获取图片
- Android 超简单音乐播放器(十二)换个歌词和删除歌曲
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!!!
- 简单的AJAX获取数据库表数据
- Android中LocationManager的简单使用,获取当前位置
- Android高手进阶教程(十一)之----Android 通用获取Ip的方法(判断手机是否联网的方法)!
- 使用htmlparser简单抓取京东图书信息存入数据库的小例子
- android 音乐播放器----歌词在线下载
- Android 中短信数据库的简单操作
- 展示一个简单的Android天气查询,获取的是Google的XML。
- android之bitmap存入数据库发生内存溢出
- 【Based Android】Location获取地理位置信息(中)Criteria类的简单使用
- Android获取操作数据库的SQLiteDatabase实例
- WPF将图片存入数据库再从数据库获取显示
- 【Android笔记 三】Location获取地理位置信息(中)Criteria类的简单使用
- 无组件图片与文本同步存入数据库的最简单的办法