Корпус переключателя с двумя счетчиками и аудиоплеером

В моей деятельности у меня есть два счетчика, один вид изображения и две кнопки. в зависимости от первого счетчика, второй счетчик должен меняться. и при выборе птиц в первом вертушке второй вертолет должен показывать павлина попугая и т. д. При выборе попугая во втором вертушке я должен получить изображение попугая. до этого я получаю. но теперь я хочу, пока я нажимаю кнопку, я должен услышать голос попугая. в этом коде, когда я нажимаю кнопку, я получаю один и тот же голос для каждого изменения изображения во втором счетчике

public class MainActivity extends Activity {


ImageView displayIV;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
;
    Button b1;
    b1=(Button)findViewById(R.id.button1);


    Spinner friend = (Spinner) findViewById(R.id.spinner1);
    final Spinner subFriend = (Spinner) findViewById(R.id.spinner2);

    displayIV=(ImageView)findViewById(R.id.imageView1);


    final ArrayList<String> friend_options = new ArrayList<String>();
    final ArrayList<String> subfriend_options = new ArrayList<String>();

    friend_options.add("Nuz");
    friend_options.add("Dur");
    friend_options.add("Tara");
    friend_options.add("Sama");

    ArrayAdapter<String> friendAdapter = new ArrayAdapter<String>(
            getApplicationContext(), android.R.layout.simple_spinner_item,
            friend_options);
    friend.setAdapter(friendAdapter);

    ArrayAdapter<String> subFriendAdapter = new ArrayAdapter<String>(
            getApplicationContext(), 
  android.R.layout.simple_spinner_item,subfriend_options);   
    subFriend.setAdapter(subFriendAdapter);

    friend.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View view,
                int position, long id) {

            String friendName = 
 friend_options.get(position).toString();
            resetFriend(friendName);

// subFriend.setAdapter(null);

        }

        private void resetFriend(String friendName) {
            subfriend_options.removeAll(subfriend_options);
            if (friendName.equals("Nuz")) {
                subfriend_options.add("Nuz_1");
                subfriend_options.add("Nuz_2");
                subfriend_options.add("Nuz_3");
                subfriend_options.add("Nuz_4");

            } else if (friendName.equals("Dur")) {
                subfriend_options.add("Dur_1");
                subfriend_options.add("Dur_2");
                subfriend_options.add("Dur_3");
                subfriend_options.add("Dur_4");

            } else if (friendName.equals("Tara")) {
                subfriend_options.add("Tara_1");
                subfriend_options.add("Tara_2");
                subfriend_options.add("Tara_3");
                subfriend_options.add("Tara_4");

            } else {
                subfriend_options.add("Sama_1");
                subfriend_options.add("Sama_2");
                subfriend_options.add("Sama_3");
                subfriend_options.add("Sama_4");

            }
            ArrayAdapter<String> subFriendAdapter = new 
    ArrayAdapter<String>(               getApplicationContext(),
                    android.R.layout.simple_spinner_item, 
  subfriend_options);
            subFriend.setAdapter(subFriendAdapter);

        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {

        }

    });

    subFriend.setOnItemSelectedListener(new OnItemSelectedListener() {

        @Override
        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
             arg0.getItemAtPosition(arg2);
            final ImageView im = 
(ImageView)findViewById(R.id.imageView1);
            String s=((TextView)arg1).getText().toString();
            if(s.equals("Tara_1")){

 im.setImageDrawable(getResources().getDrawable(R.drawable.crow));
            }

            if(s.equals("Tara_2"))

im.setImageDrawable(getResources().getDrawable(R.drawable.india1));
            if(s.equals("Tara_3"))

im.setImageDrawable(getResources().getDrawable(R.drawable.peacock));

            if(s.equals("Tara_4"))

im.setImageDrawable(getResources().getDrawable(R.drawable.robin1)); 


        }


        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }
    });



    b1.setOnClickListener(new View.OnClickListener() {
         @Override
         public void onClick(View v) {
            //MediaPlayer mMediaPlayer = MediaPlayer.create(this, 
R.raw.Kalimba);  
        MediaPlayer mp = MediaPlayer.create(MainActivity.this, R.raw.abc);  
          mp.start();
         }
        });


}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

}

1 ответ

В методе setOnClickListener вашей кнопки, b1, вы должны знать, какое изображение было выбрано на счетчике (ваше описание немного сбивает с толку, поэтому я не знаю точно, какой счетчик изменит звук вашего приложения воспроизвести).

В любом случае, давайте подумаем, что спиннер - это "friend_options".

В вашем setOnClickListener мы должны знать, какой элемент был выбран для пользователя при нажатии на кнопку, верно? И в зависимости от того, какой предмет был выбран, мы будем воспроизводить один конкретный звук.

Так....

Другой важный момент заключается в том, что вы должны создать переменную медиаплеера вне onclickListener, например, переменную класса:

 //Class variable:
 public MediaPlayer mp;

В методе onCreate вы должны инициализировать компонент MediaPlayer:

 public void onCreate()
 {
    MediaPlayer.create(MainActivity.this,  R.raw.abc);  //Default sound, it is not 
                                                        //importat because we are going 
                                                        //to chain the value of the 
                                                        //file to reproduce in the next 
                                                        //step.
 }



 b1.setOnClickListener(new View.OnClickListener() 
 {
     @Override
     public void onClick(View v) 
     {
         //Here we are going to take the item selected:
         String itemSelected = spinner.getSelectedItem().toString();

         int soundToPlayId=0;

         if(itemSelected.equals("Nuz"))
         { 
            soundToPlayId = R.raw.Kalimba ; 
         }
         else if(itemSelected.equals("Dur"))
         { 
            soundToPlayId = R.raw.abc; 
         }
         // etc etc etc  --> you should put all the sound associated to all the 
         // friends

         //And now you only have to reproduce if the item was selected properly:

         if(soundToPlayId !=0)  //if the id is different to 0:
         {        
              mp = MediaPlayer.setDataSource(MainActivity.this, soundToPlayId);  
              mp.start();
         }
     }
 });

Давайте посмотрим, работает ли это!!! Спросите меня, если у вас есть какие-либо сомнения... и если ответ правильный, проголосуйте за меня и проверьте правильность!!! (Мне нужны очки, спасибо!)

Другие вопросы по тегам