Это моя попытка: при нажатии кнопки появляется другое случайное изображение (эта часть работает). То, что я не могу получить, - это другая часть, которую я бы хотел сделать. В зависимости от того, какое изображение будет отображаться, будет зависеть от того, какой звук будет воспроизводиться. т. е. если изображение является черным автомобилем, есть два отдельных файла, которые будут воспроизводиться; один, который говорит черный, а другой скажет автомобиль. Любая помощь приветствуется. Вот мой код:Добавить звук при изменении изображения
public class Black extends Activity {
ImageView imageView;
MediaPlayer mp;
int sound=525,sound1=525;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.black);
Button Button1 = (Button) findViewById(R.id.button1);
imageView= (ImageView)findViewById(R.id.image1);
Button1.setOnClickListener(new OnClickListener(){
public void onClick(View v){
onClickImageView(v);
}
});
}
public void onClickImageView(View view) {
int[] picture= {
R.drawable.black,R.drawable.blackairplane,R.drawable.blackbear,R.drawable.blackcar,R.drawable.blackcircle,
R.drawable.blackkite,R.drawable.blacksquare,R.drawable.blacktriangle};
Random r = new Random();
int n=r.nextInt(7);
imageView.setImageResource(picture[n]);
switch (picture[n]) {
case R.drawable.black:
sound = R.raw.sayblack;
sound1 = R.raw.sayblack;
break;
case R.drawable.blackairplane:
sound = R.raw.sayblack;
sound1= R.raw.sayairplane;
break;
case R.drawable.blackbear:
sound = R.raw.sayblack;
sound1 = R.raw.saybear;
break;
case R.drawable.blackcar:
sound = R.raw.sayblack;
sound1= R.raw.saycar;
break;
case R.drawable.blackcircle:
sound = R.raw.sayblack;
sound1=R.raw.saycircle;
break;
case R.drawable.blackkite:
sound = R.raw.sayblack;
sound1 = + R.raw.saykite;
break;
case R.drawable.blacksquare:
sound = R.raw.sayblack;
sound1 = R.raw.saysquare;
break;
case R.drawable.blacktriangle:
sound = R.raw.sayblack;
sound1= R.raw.saytriangle;
break;
}
if(mp!=null){
mp.release();
}
if(sound!=0){
mp = MediaPlayer.create(getBaseContext(), sound);
mp.start();
}
mp.setOnCompletionListener (new MediaPlayer.OnCompletionListener(){
@Override
public void onCompletion(MediaPlayer arg0) {
// TODO Auto-generated method stub
if(sound1!=0 && sound!=0){
mp= MediaPlayer.create(getBaseContext(),sound1);
mp.start();
sound=sound1=525;
}}
});
}
}
и вот мой файл .xml:
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="40dp"
android:background="@color/white"
android:text="@string/black" />
<ImageView
android:id="@+id/image1"
android:layout_width="320dp"
android:layout_height="250dp"
android:scaleType="fitXY"
android:contentDescription="@string/black" />
... и это правильный код.
вы забыли добавить, если (tпл! = NULL) {т p.stop();} перед mp.start(), чтобы предотвратить дублирование звуков;) –
thnks для внесения изменений –
Я внес изменения, которые вы предложили. Он все еще не работает, и я опубликовал файл Logcat. Есть идеи? (потому что я потерян) – jsollo2