1

まず、昨日Androidプログラミングを始めました。私は弦を作っています、そしてそれぞれの選択で私は異なる音を演奏したいです。わかりました、私は1つを持っていますが、他の選択では、それを行う方法がわからないため、同じサウンドを再生します。多分異なるケースのスイッチ?おかげで今私はこのコードを持っています。`

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();
                }
        }
   }
}
4

2 に答える 2

0

次のように書く必要があります。

public void onListItemClick(ListView parent, View v, long id){

MediaPlayer sound = null;
switch (id) { // argument 'id' is the row of the clicked item

     case FIRST_ROW:
         sound = MediaPlayer.create(sonidos.this, R.raw.dtrain);
     break;

     case SECOND_ROW: 
         sound = MediaPlayer.create(sonidos.this, R.raw.bell);
     break;

    // and so on ...
}

  if (sound.isPlaying()) {

   sound.stop();

  } else {

   try {

    sound.start();

   } catch (IllegalStateException e) {

    e.printStackTrace();

   }
  }
 }
于 2012-11-06T08:13:43.613 に答える
0

フォルダからのサウンドを使用する場合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();
            }
        }
}

お役に立てれば。

于 2012-11-06T08:16:50.477 に答える