room的使用-以demo为例

本文通过一个demo详细介绍了如何使用Room数据库,包括环境配置、Entity定义、DAO操作、数据库初始化、与ContentProvider结合、类型转换器的使用、数据库迁移,并探讨了从原生SQLite到Room的迁移以及JSON转实体与Entity的关系。提供了完整的代码示例和注意事项。
摘要由CSDN通过智能技术生成

前言

本文是以demo为例介绍,所以部分内容和解释会在demo里以注释的形式给出。
下载链接

数据库的构建

环境配置

在app模块的build.gradle添加以下内容:


    compile 'android.arch.lifecycle:extensions:1.0.0-alpha5'

    compile 'android.arch.lifecycle:runtime:1.0.0-alpha5'

    compile 'android.arch.persistence.room:runtime:1.0.0-alpha5'

    testCompile 'junit:junit:4.12'

    annotationProcessor 'android.arch.lifecycle:compiler:1.0.0-alpha5'

    annotationProcessor "android.arch.persistence.room:compiler:1.0.0-alpha5"



    //数据库迁移的时候使用

    compile "android.arch.persistence.room:testing:1.0.0-alpha5"

在项目的build.gradle中添加


allprojects {

    repositories {

        jcenter()

        maven {

            url "https://dl.google.com/dl/android/maven2/"

            //官方给出的链接是maven.google.com,但是这个网站连不上

        }

    }

}

entity

当一个类用@Entity注解并且被@Database注解中的entities属性所引用,Room就会在数据库中为那个entity创建一张表。

默认Room会为entity中定义的每一个field都创建一个column。如果一个entity中有你不想持久化的field,那么你可以使用@Ignore来注释它们,在项目的db/entities目录下:

student.java


//也可以使用组合主键,使用@Entity注解的primaryKeys属性

//@Entity(primaryKeys = {"firstName", "lastName"})



//也可以使用索引或者组合索引

//@Entity(indices = {@Index("name"), @Index("name", "student_id")})



@Entity(tableName = Student.TABLE_NAME)

public class Student {
   

    //静态成员并不会被转换为数据库中的条目

    /** 表名 */

    public static final String TABLE_NAME = "students";

    public static final String COLUMN_NAME = "student_name";

    public static final String COLUMN_ID = "student_id";



    //每个表必须要有一个主键

    @PrimaryKey

    @ColumnInfo(index = true, name = COLUMN_ID)

    private long uid;



    //自己定义列名

    @ColumnInfo(name = COLUMN_NAME)

    private String name;



    private int age;



    private String subject;



    @Ignore

    Bitmap picture;



    ...

}

DAOs

dao文件中主要存放对数据库的操作,在项目的db/dao目录下

StudentDao



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于在Matlab中实现Room-FFT(室内快速傅里叶变换),您可以按照以下步骤进行操作: 1. 准备音频信号:首先,您需要获取或生成要进行FFT的音频信号。您可以使用`audioread`函数从音频文件中读取信号,或者使用Matlab提供的生成函数(如`sin`或`rand`)创建一个信号。确保信号的采样率与您的应用场景相匹配。 2. 加载房间响应:获取或模拟房间的冲击响应(即房间的频率响应)。这可以从真实环境中测量获得,或者使用声学模拟软件进行模拟。将冲击响应加载到Matlab中。 3. 执行FFT:使用Matlab中的FFT函数对音频信号和房间冲击响应进行傅里叶变换。可以使用`fft`函数或`fft2`函数,具体取决于您的信号是一维还是二维。如果信号是一维的,则使用一维FFT;如果信号是二维的(如音频信号为立体声),则使用二维FFT。 4. 频率响应处理:通过将音频信号的频域表示与房间冲击响应的频域表示相乘(逐点乘法),可以获得经过房间响应的音频信号的频域表示。这相当于在时域中将信号与冲击响应进行卷积操作。 5. 反变换:对经过频率域处理的信号进行反傅里叶变换,以获得时域中的输出信号。使用`ifft`函数或`ifft2`函数进行逆FFT操作。 6. 分析结果:分析反变换后的信号以了解音频在房间内的效果。您可以计算信号的频谱特征,比如声音的能量分布、频率响应曲线等。 请注意,上述步骤是一个基本框架,您可能需要根据具体情况进行修改或添加其他处理步骤。希望这对您有所帮助!如果您还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值