android - 如何在弦乐选择中播放不同的声音?

标签 android arrays audio

首先,我昨天开始使用Android编程。我正在制作一个String,在每个选择中我都想播放不同的声音。好的,我有一个,但是在另一个选择中播放相同的声音,因为我不知道该怎么做。也许有不同情况的开关?谢谢
现在我有此代码。

import android.app.ListActivity;    
import android.media.AudioManager;    
import android.media.MediaPlayer;    
import android.os.Bundle;    
import android.view.View;    
import android.widget.ArrayAdapter;    
import android.widget.ListView;

public class sonidos extends ListActivity { 
   public String[] frases = {
        "cake",
        "butter",
        "apple",

   };
   @Override
   public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1, frases));
   }
   public void onListItemClick(ListView parent, View v){
        this.setVolumeControlStream(AudioManager.STREAM_MUSIC);
        setContentView(R.layout.sonidos);
   }
   public void onListItemClick(ListView parent, View v, long id){
        MediaPlayer sound = MediaPlayer.create(sonidos.this, R.raw.dtrain);
        if (sound.isPlaying()) {
          sound.stop();
        } else {
                try {
                     sound.start();
                } catch (IllegalStateException e) {          
                     e.printStackTrace();
                }
        }
   }
}

最佳答案

如果您使用assets文件夹中的声音,则可以使用以下内容:

public void onListItemClick(ListView parent, View v, long id){
    MediaPlayer player = new MediaPlayer();
    AssetFileDescriptor afd;
    try {
        switch(id)
        {
            case 1: afd = getAssets().openFd("cake.mp3"); break;
            case 2: afd = getAssets().openFd("butter.mp3"); break;
            default : afd = getAssets().openFd("apple.mp3"); break;
        };
        player.setDataSource(afd.getFileDescriptor(),afd.getStartOffset(),afd.getLength());
        player.prepare();

    } catch (IOException e) {
        e.printStackTrace();
        SM.Exception("## Exception playing sound!");
    }

    if (player.isPlaying()) {
          player.stop();
        } 
    else {
            try {
                 player.start();
            } catch (IllegalStateException e) {          
                 e.printStackTrace();
            }
        }
}

希望这可以帮助。

关于android - 如何在弦乐选择中播放不同的声音?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13246438/

相关文章:

javascript - 控制 YouTube 视频播放器中的左/右音频 channel 音量

android - 蓝牙抽象设备 ping

c - 通过另一个指针分配二维数组时整数指针不起作用?

javascript - 连续循环数组以创建水平滚动条

java - 如何将变量数组传递给android中的REST URL?

audio - sox 文件.wav -r 10 文件.dat

android - 解析 GCM 事件中的时间戳时出错 - Null Android(未调用 onMessageReceived)

android - Unity android中的水平面检测

android - 在没有后端的 Android 应用程序中接收云端硬盘内容通知

c++ - 除 44.1kHz 之外的任何速率的 WAV 文件都会使声音变得困惑