文章目录
安卓数据库示例:使用SQLite数据库存储手机录制的音频文件,实现增删改查功能。
安卓数据库示例 手机录制音频
简介
在安卓系统中,我们可以使用SQLite数据库来保存和管理数据,本文将介绍如何使用SQLite数据库来记录和存储手机录制的音频文件。
创建数据库表
我们需要创建一个数据库表来存储音频文件的信息,可以使用以下代码创建一个简单的音频表:
public class AudioTable { private String id; // 音频ID private String filePath; // 音频文件路径 private long duration; // 音频时长(单位:毫秒) // 构造函数、getter、setter等省略 }
创建数据库帮助类
接下来,我们创建一个数据库帮助类来处理与数据库相关的操作,以下是一个简单的示例:
import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class AudioDatabaseHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "audio.db"; // 数据库名称 private static final int DATABASE_VERSION = 1; // 数据库版本号 private static final String TABLE_NAME = "audio"; // 表名 private static final String COLUMN_ID = "id"; // 列名:音频ID private static final String COLUMN_FILEPATH = "filepath"; // 列名:音频文件路径 private static final String COLUMN_DURATION = "duration"; // 列名:音频时长 private static final String CREATE_TABLE_SQL = "CREATE TABLE IF NOT EXISTS " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY," + COLUMN_FILEPATH + " TEXT," + COLUMN_DURATION + " INTEGER)"; private static final String DROP_TABLE_SQL = "DROP TABLE IF EXISTS " + TABLE_NAME; public AudioDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_TABLE_SQL); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL(DROP_TABLE_SQL); onCreate(db); } }
插入音频数据到数据库中
现在,我们可以在需要的时候将音频文件的信息插入到数据库中,以下是一个简单的示例:
AudioDatabaseHelper audioDatabaseHelper = new AudioDatabaseHelper(this); // 获取数据库帮助类实例 SQLiteDatabase db = audioDatabaseHelper.getWritableDatabase(); // 获取可写的数据库实例 String filePath = "/path/to/audio/file"; // 音频文件路径 long duration = audioFile.length(); // 音频时长(单位:字节) ContentValues contentValues = new ContentValues(); // 用于存储键值对的对象 contentValues.put(AudioTable.COLUMN_FILEPATH, filePath); // 设置音频文件路径 contentValues.put(AudioTable.COLUMN_DURATION, duration); // 设置音频时长(单位:毫秒) db.insert(AudioTable.TABLE_NAME, null, contentValues); // 插入数据到表中(null表示不指定主键) db.close(); // 关闭数据库连接
查询音频数据从数据库中检索音频文件的信息,可以使用以下代码
AudioDatabaseHelper audioDatabaseHelper = new AudioDatabaseHelper(this); // 获取数据库帮助类实例 SQLiteDatabase db = audioDatabaseHelper.getReadableDatabase(); // 获取可读的数据库实例 String selection = AudioTable.COLUMN_ID + "=?"; // 根据主键进行筛选的条件语句(此处为示例,实际应用中可能需要其他条件) String[] selectionArgs = {"1"}; // 根据条件语句提供参数的值数组(此处为示例,实际应用中根据需要提供参数值) Cursor cursor = db.query(AudioTable.TABLE_NAME, null, selection, selectionArgs, null, null, null); // 根据条件执行查询操作,返回一个游标对象(Cursor)来遍历查询结果集(ResultSet) while (cursor.moveToNext()) { // 如果游标中有数据,则逐行遍历结果集并输出信息 int id = cursor.getInt(cursor.getColumnIndex(AudioTable.COLUMN_ID)); // 根据列名获取对应的整数值(索引从0开始) String filePath = cursor.getString(cursor.getColumnIndex(AudioTable.COLUMN_FILEPATH)); // 根据列名获取对应的字符串值(索引从0开始) long duration = cursor.getLong(cursor.getColumnIndex(AudioTable.COLUMN_DURATION)); // 根据列名获取对应的长整数值(索引从0开始) // TODO: 根据需要处理查询到的音频信息,例如显示在UI界面上或进行其他操作。 } cursor.close(); // 关闭游标对象,释放资源,注意在finally块中调用,确保一定会被调用。 db.close(); // 关闭数据库连接,注意在finally块中调用,确保一定会被调用。