播放器中历史播放记录的简单实现和没有网络时加载本地数据进行显示(SQLiteOpenHelper)

播放历史记录的实现原理,很简单-小菜最推荐的就是用本地数据库来实现。对于android端SQLiteOpenHelper的优点我就不多说了,我们来简单了解一下程序逻辑:

历史播放记录,无非就是把用户的相关操作进行本地保存,我这里简单的实现就是,当视频播放完毕或播放界面onPause() 时,判断是否已经有记录(有则改无则加),至于要保存的对象就由你们自己来构建了。我倒也很想和你们一起分享,关键是我都快25了还没有对象,对 就是还没有对象(有什么想法的记得加我啊);

//SQLiteOpenHelper 代码:

  1. public class MyDatabaseHelper extends SQLiteOpenHelper {
  2.     public MyDatabaseHelper(Context context) {
  3.         super(context, "play_history", null, 1);// 创建数据库名
  4.         // TODO Auto-generated constructor stub
  5.     }
  6.     @Override
  7.     public void onCreate(SQLiteDatabase db) {
  8.         // TODO Auto-generated method stub
  9.         db.execSQL("create table videos(id Integer primary key autoincrement,vdId Integer,vdName text,vdUrl text,vdImg text)");// 创建表,数据库语句,非常简单哈
  10.     }
  11.     @Override
  12.     public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) {
  13.         // TODO Auto-generated method stub
  14.         onCreate(db);
  15.     }
  16. }

//增删改查的操作

  1. public class MySQLManager {
  2.     private final SQLiteDatabase db;
  3.     public MySQLManager(Context context) {
  4.         MyDatabaseHelper helper = new MyDatabaseHelper(context);
  5.         db = helper.getWritableDatabase();
  6.     }
  7.      /**
  8.      * 添加方法
  9.      * 
  10.      * @param dataBean
  11.      */
  12.     public void insertData(PlayHistoryInfo dataBean) {
  13.         
  14.         ContentValues values = new ContentValues();
  15.         values.put("vdId", dataBean.getVdId());
  16.         values.put("vdName", dataBean.getVdName());
  17.         values.put("vdUrl", dataBean.getVdUrl());
  18.         values.put("vdImg", dataBean.getVdImg());
  19.     
  20.         db.insert("videos", null, values);
  21.     }
  22.      /**
  23.      * 删表
  24.      */
  25.     public boolean deleteById(String userId) {
  26.         boolean isOk = false;
  27.         db.beginTransaction();//
  28.         try {
  29.             int res = db.delete("videos", "id=?", new String[] { userId });
  30.             if (res > 0) {
  31.                 isOk = true;  
  32.             }
  33.             db.setTransactionSuccessful();
  34.         } catch (Exception e) {
  35.             e.printStackTrace();
  36.         } finally {
  37.             db.endTransaction();
  38.         }
  39.         return isOk;
  40.     }
  41. /**
  42.      * 修改信息
  43.      * 
  44.      * @param item
  45.      * @param cutoff
  46.      */
  47.     public void updata(int vdDuration) {
  48.             db.execSQL("update videos set vdDuration=? where vdId=?",new Object[] { vdDuration, vdId, numId });
  49.             db.close();
  50.     }
  51.  
  52.    /*  * 根据videoId来查询历史数据
  53.      * @param videoId
  54.      * @return
  55.      */
  56. public selectByVideoIdData(String videoId) {
  57.         List<PlayHistoryInfo> list = new ArrayList<>();
  58.         String sql = "select * from videos" + " where vdId = "+ Integer.parseInt(videoId);
  59.         db.beginTransaction();
  60.         try {
  61.             Cursor cursor = db.rawQuery(sql, null);
  62.             while (cursor.moveToNext()) {
  63.                 String vdName = cursor.getString(cursor .getColumnIndex("vdName"));
  64.                 String vdUrl = cursor.getString(cursor.getColumnIndex("vdUrl"));
  65.                 String vdImg = cursor.getString(cursor.getColumnIndex("vdImg")); 
  66.         } catch (Exception e) {
  67.             // TODO Auto-generated catch block
  68.             e.printStackTrace();
  69.         } finally {
  70.             db.endTransaction();
  71.         }}

OK本地数据库的方法已基本完成,下面来说一下如何调用既可了,把MySQLManager new出来就可以了;

  1. MySQLManager manager = new MySQLManager(context);
  2.  manager.selectByVideoIdData(videoId);

标题是随便取的啊!各位大神见笑了,至于怎么去判断是否有网络(下一篇详细讲解),怎么去知道哪个数据是已经播放过的(把本地数据查询出来和后台数据一对比不就知道了);

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

玉念聿辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值