我有这样的数据库音频文件
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));
但是它的代码错误
答案 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()
)
);