如何使用sqlite从原始文件夹读取文件?

时间:2018-08-03 08:39:00

标签: android file android-sqlite

我有这样的数据库音频文件

id音频

1个音频1

2个音频2

3个音频3

我有一个列表视图,它将根据id调用上面的一行数据

在“ res / raw /”目录中,我有3个音频文件,名称分别为“ audio1,audio2和audio3”

如果我只是手动输入这样的音频名称,我就可以播放所有音频

mp = MediaPlayer.create(this, R.raw.audio1);

但是我要根据数据库上的ID调用音频文件。

该怎么做? 我尝试过这样的代码

mp = MediaPlayer.create(this, R.raw.cursor.getString(1));

但是它的代码错误

1 个答案:

答案 0 :(得分:0)

如果您尝试编码:-

Log.d("RAWAUDIOID","ID of raw audio file is " + String.valueOf(R.raw.audio1));

您将得到如下结果:-

08-03 22:07:44.926 1233-1233/pra.playrawaudio D/RAWAUDIOID: ID of raw audio file is 2131427328

R.raw.audio1是在编译程序时赋予 R 资源的ID(整数)(因为它们是在之前生成的,所以不太准确)。该ID可能永远不会是1、2或3,也不会是您可以可靠地存储在数据库中的任何数字,并且即使与生成的 ID 相关联,也很少。

相反,您应该将文件名存储在数据库中,并根据文件名提取文件的ID。

例如

    mp = MediaPlayer.create(this,
            getResources().getIdentifier("audio1","raw",getPackageName()
            )
    );

假设光标(在代码中使用的 )有效且位置适当,并且所有列均使用SELECT * ....rest of the underlying query....选择,因此偏移量为 1的列是文件名(例如,检索到的值可能是 audio1 ),则上面的名称可能是:-

    mp = MediaPlayer.create(this,
            getResources().getIdentifier(
                    cursor.getString(1),
                    "raw",
                    getPackageName()
            )
    );