我一直在完成我的 Android 项目(仅供引用,我是 android 编程的新手),直到我被这个卡住了..
我制作了一个用于学习法语的 Android 应用程序。
我成功地制作了除声音之外的整个应用程序。
我要做的就是将单词与数据库中的声音连接起来(与字段'_id'连接)
首先,我有一个表名“kata”,它在英语中的意思是“单词”,其中包含几个法语单词
表型
然后我在互联网上搜索了很多引用资料,他们告诉我不要用数字保存声音文件。
所以,我有这样的 a.mp3、b.mp3、c.mp3 等音乐文件。
然后我连接了这段代码..
public class LazyAdapter extends BaseAdapter implements OnClickListener {
private Activity activity;
private List<List<String>> data;
private static LayoutInflater inflater = null;
private MediaPlayer mp;
public LazyAdapter(Activity a, List<List<String>> d) {
activity = a;
data = d;
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
public int getCount() {
return data.size();
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
if (convertView == null)
vi = inflater.inflate(R.layout.detail, null);
speaker.setOnClickListener(this);
List<String> kata = new ArrayList<String>();
kata = data.get(position); //try to fetch records
final String ambil = kata.get(0); //try to fetch the word's id
}
然后我不知道该怎么办:(
我试过了
speaker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = new MediaPlayer();
String name="a";
try {
mp.setDataSource("android.resource://com.mroring.belajarperancis/raw/"+name);
mp.prepare();
mp.start();
} catch (IllegalArgumentException | SecurityException
| IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
它给了我错误
07-15 21:39:05.469: E/MediaPlayer(25717): error (1, -2147483648)
请帮助我:(我一直在尽我所能
最佳答案
你能提供更多关于你的错误的细节吗?你能告诉我你的声音在你的数据库或文件 Raw 中的位置吗?
如果您的声音 (a.mp3) 位于文件 Raw 中以重现该声音,则您需要此代码。
MediaPlayer mp = MediaPlayer.create(this, R.raw.a);
mp.start();
在你的代码中试试这个。
speaker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MediaPlayer mp = new MediaPlayer();
//String name="a";
try {
MediaPlayer mp = MediaPlayer.create(activity, R.raw.a);
mp.start();
} catch (IllegalArgumentException | SecurityException
| IllegalStateException | IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
关于android - 根据 ID 播放声音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24761555/