根据ID播放声音



我一直在完成我的Android项目(供参考,我是一个新手在Android编程),直到我被困在这个…

我做了一个学习法语的Android应用。我成功地制作了整个应用程序,除了声音。

我想做的就是将单词与数据库中的声音连接起来(与字段'_id'连接)

首先,我有一个表名'kata',在英语中是'words'的意思,它包含几个法语单词

表形

  1. _id
  2. 法国
  3. 印尼
  4. baca(意思:如何读取)

然后我在网上搜索了很多参考资料,他们告诉我不要用数字保存声音文件。所以,我有这样的音乐文件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();
            }