开关盒有两个旋转器和音频播放器

时间:2014-06-05 09:39:13

标签: android android-spinner audio-player

在我的活动中,我有两个微调器,一个图像视图和两个按钮。 取决于第一个旋转器,第二个旋转器应该改变。当在第一个旋转器中选择鸟类时,第二个旋转器应该显示鹦鹉孔雀等,而在第二个旋转器中选择鹦鹉我应该得到鹦鹉的图像。 直到我得到了。 但现在我想要的是当我按下按钮然后我应该得到鹦鹉的声音。  在这段代码中,当我按下按钮时,我为第二个微调器中的每个图片更改获得相同的声音

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 个答案:

答案 0 :(得分:0)

在你的按钮b1的setOnClickListener方法中,你需要知道在微调器上选择了哪个图像(你的描述有点令人困惑,所以我不清楚哪个微调器会改变声音你的应用程序必须重现)。

无论如何,让我们认为微调器是“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();
         }
     }
 });

让我们看看它是否正常工作!问我是否有任何疑问......如果答案是正确的,请投票给我并检查是否正确! (我需要积分,谢谢!)