2015-02-01 9 views
1

В моем проекте есть 2 аудиофайла, «dog.mp3» и «cat.mp3», и поэтому приведенный ниже код позволяет мне воспроизводить звук на основе отдельных кликов элемента списка, однако как я могу изменить код, чтобы я хотел достичь следующего:Воспроизведение звука при каждом нажатии кнопки

  • Когда играет «cat.mp3», если я коснусь элемента списка для «dog.mp3», я хочу файл «cat.mp3» для остановки воспроизведения и звука «dog.mp3» для воспроизведения.
  • Когда играет «dog.mp3», если я коснусь элемента списка для «cat.mp3», я хочу, чтобы файл «dog.mp3» прекратил воспроизведение и звук «cat.mp3» для воспроизведения.

Вся помощь будет оценена по достоинству.

mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
      if (position == 0) { 
      mp = MediaPlayer.create(Test.this, R.raw.cat); 
      mp.start(); 
      } 

      if (position == 1) { 
      mp = MediaPlayer.create(Test.this, R.raw.dog); 
      mp.start(); 
      } 
     } 
    }); 

ОШИБКА

import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.support.v7.app.ActionBarActivity; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 


public class MainActivity extends ActionBarActivity { 

    ListView mainList; 

    String[] listContent = { 
      "chimes", "chord", "ding", 
      "notify", "recycle", "ringin", 
      "ringout", "tada" 
    }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     mainList = (ListView)findViewById(R.id.main_listView); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,listContent); 
     mainList.setAdapter(adapter); 

     int[] resID = { R.raw.chimes, R.raw.chord, R.raw.ding, 
       R.raw.notify, R.raw.recycle, R.raw.ringin, R.raw.ringout, R.raw.tada }; 

     mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) { 
       playSong(position); 

      } 
     }); 


     public void playSong(int songIndex) { 
      // Play song 
      mp.reset(); 
      mp.setDataSource(resID[songIndex]); 

      mp.start(); 
      mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 

       @Override 
       public void onCompletion(MediaPlayer mp) { 
        // TODO Auto-generated method stub 
        mp.release(); 
       } 
      }); 
     } 
    } 
} 

error

ответ

1
import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

public class MainActivity extends Activity { 

    // variable declaration 
    private ListView mainList; 
    private MediaPlayer mp; 
    private final String[] listContent = { "chimes", "chord", "ding", "notify", 
      "recycle", "ringin", "ringout", "tada" }; 

    private final int[] resID = { R.raw.chimes, R.raw.chord, R.raw.ding, 
      R.raw.notify, R.raw.recycle, R.raw.ringin, R.raw.ringout, 
      R.raw.tada }; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     // Initializing variables 
     mp = new MediaPlayer(); 
     mainList = (ListView) findViewById(R.id.main_listView); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_1, listContent); 
     mainList.setAdapter(adapter); 

     mainList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> adapterView, View view, 
        int position, long id) { 
       playSong(position); 

      } 
     }); 

    } 

    public void playSong(int songIndex) { 
     // Play song 
     mp.reset();// stops any current playing song 
     mp = MediaPlayer.create(getApplicationContext(), resID[songIndex]);// create's 
                      // new 
                      // mediaplayer 
                      // with 
                      // song. 
     // if you don't know what is getApplicationContext() here better use 
     // MainActivity.this or yourclassname.this 
     mp.start(); // starting mediaplayer 
     // setting up what to do if current song completes. 
     /* 
     * mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { 
     * 
     * @Override public void onCompletion(MediaPlayer mp) { // TODO 
     * Auto-generated method stub 
     * 
     * } }); 
     */ 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     mp.release(); 
    } 
} 
+0

У меня по-прежнему возникают ошибки после использования вашего кода. Проверьте скриншот и обновленный код выше. – MacaronLover

+0

Добавьте этот приватный MediaPlayer mp; поверх onCreate() и этого mp = new MediaPlayer(); после setContentView() – chiru

+0

OK. Осталось еще 1 ошибка 'Невозможно разрешить символ 'resID''. – MacaronLover

Смежные вопросы