如何使用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));

但是编码错误

如果您尝试编码:-

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 is2131427328

也就是说,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()
)
);

最新更新