我有类似的数据库音频文件
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 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()
)
);