如何在单击列表视图项目时播放声音?

时间:2011-01-17 20:23:36

标签: android

我是Java和Android开发的新手,似乎无法找到我追求的东西。我有一个基本列表设置,每个列表项具有不同的标题,描述和图标。我想要的是当点击一个列表项,播放声音时,每个列表项的声音会有所不同。

到目前为止,这是我的代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.widget.SimpleAdapter;

public class TestingList extends ListActivity {

    private static final String ICON_KEY = "icon";
    private static final String TITLE_KEY = "title";
    private static final String DETAIL_KEY = "detail";

    private static final int[] ICONS = new int[] { R.drawable.lista,
                    R.drawable.listb, R.drawable.listc, R.drawable.listd };
    private static final String[] TITLES = new String[] { "List 1", "List 2",
                    "List 3", "List 4" };
    private static final String[] DETAILS = new String[] {
                    "List 1 description",
                    "List 2 description",
                    "List 3 description",
                    "List 4 description" };

    @Override
    public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);

            List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
            for (int i = 0; i < ICONS.length; i++) {
                    rows.add(createListItemMap(ICONS[i], TITLES[i],
                                    DETAILS[i]));
            }

            String[] fromKeys = new String[] { ICON_KEY, TITLE_KEY, DETAIL_KEY };
            int[] toIds = new int[] { R.id.icon, R.id.text1, R.id.text2 };
            setListAdapter(new SimpleAdapter(this, rows,
                            R.layout.icon_detail_list_item, fromKeys, toIds));
    }

    public static Map<String, Object> createListItemMap(int icon,
                    CharSequence title, CharSequence detail) {
            Map<String, Object> row = new HashMap<String, Object>();
            row.put(ICON_KEY, icon);
            row.put(TITLE_KEY, title);
            row.put(DETAIL_KEY, detail);
            return row;
    }

    public static void showView(Context c) {
          c.startActivity(new Intent(c, TestingList.class));
    }
}

非常感谢,谢谢。

2 个答案:

答案 0 :(得分:4)

Android文档介绍了各种播放方式audio

答案 1 :(得分:3)

你已经完成了一半,你必须添加的内容如下:

1.您需要选择要播放音频文件的位置,  你有两个选项可以将你的音频文件嵌入到应用程序中  资源或将音频文件放在外部文件存储器上。

2.Override onListItemClick事件,如下所示

    @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
    // TODO Auto-generated method stub
    super.onListItemClick(l, v, position, id);


            //Place your code here


   }

3.Option one在您的资源目录中创建原始文件夹并将您的所有音频导入此目录,您将获得像“R.raw.audio1”这样的资源。并将此代码放在上面的事件中。

       MediaPlayer  mPlayer = MediaPlayer.create(this, R.raw.audio1);
       mPlayer .start();

4.选择外部存储上的两个创建文件夹并放入音频文件,您将使用环境变量按路径获取音频文件。

    File externalStorage= Environment.getExternalStorageDirectory();
String path=externalStorage.getAbsolutePath() + "/your_audio_directory/adio1.mp3";
     MediaPlayer   mPlayer = new MediaPlayer();
     mPlayer .setDataSource(path);
     mPlayer .prepare();
     mPlayer .start();
  1. 享受,不要忘记点击回答谢谢