Android ใช้ Mediaplayer แล้วพอกดปุ่ม Button ให้เล่นเสียง พอกดซ้อนกันแล้วเสียงมันซ้อน
Code (Android-Java)
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
/**
* Created by Dell on 26/6/2556.
*/
public class gun_fire3 extends Activity implements View.OnClickListener {
ImageView img,img2,img3,img4,img5,img6,img7,img8;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.four_activity);
init();
img.setOnClickListener(this);
img2.setOnClickListener(this);
img3.setOnClickListener(this);
img4.setOnClickListener(this);
img5.setOnClickListener(this);
img6.setOnClickListener(this);
img7.setOnClickListener(this);
}
private void init()
{
img = (ImageView) findViewById(R.id.imageView);
img2 = (ImageView) findViewById(R.id.imageView2);
img3 = (ImageView) findViewById(R.id.imageView3);
img4 = (ImageView) findViewById(R.id.imageView4);
img5 = (ImageView) findViewById(R.id.imageView5);
img6 = (ImageView) findViewById(R.id.imageView6);
img7 = (ImageView) findViewById(R.id.imageView7);
}
@Override
public void onClick(View view) {
MediaPlayer media;
if (view.getId()==R.id.imageView)
{
media = MediaPlayer.create(getBaseContext(),R.raw.sniper_b);
media.start();
}
else if (view.getId()==R.id.imageView2)
{
media = MediaPlayer.create(getBaseContext(),R.raw.sniper_c);
media.start();
}
else if (view.getId()==R.id.imageView3)
{
media = MediaPlayer.create(getBaseContext(),R.raw.bomb_a);
media.start();
}
else if (view.getId()==R.id.imageView4)
{
media = MediaPlayer.create(getBaseContext(),R.raw.laser_a);
media.start();
}
else if (view.getId()==R.id.imageView5)
{
media = MediaPlayer.create(getBaseContext(),R.raw.laser_b);
media.start();
}
else if (view.getId()==R.id.imageView6)
{
media = MediaPlayer.create(getBaseContext(),R.raw.war_a);
media.start();
}
else if (view.getId()==R.id.imageView7)
{
media = MediaPlayer.create(getBaseContext(),R.raw.war_b);
media.start();
}
}
public void onBackPressed() {
Intent obj = new Intent(gun_fire3.this,gun_fire2.class);
startActivity(obj);
}
}
โค้ดตัวอย่าง
หน้าจอผมจะมี 7 รูปภาพ 7 เสียง ให้เลือกกดเสียง แต่พอผมกดเสียงแรกแล้วไปกดเสียงที่สอง เสียงแรกมันก็ยังเล่นอยู่ ทำให้เสียงแรกกับเสียง2 ทับกัน พอกดเสียงที่ 3 ก็ทับกันอีก
สิ่งที่ต้องการ
ผมอยากให้พอกดเสียงต่อไป เสียงแรกที่ยังเล่นไม่จบมันหยุดเล่นไปเลย แล้วเล่นเสียงที่กดเสียงเดียว ทำไงดีอะครับTag : Mobile, Android
Date :
2013-06-27 14:54:34
By :
kenshero
View :
4484
Reply :
3
ใช้การปิดปุ่มครับ คือในขณะที่กดเล่นแล้ว ก็ให้ Disabled ปุ่ม หรือสร้างสถานะ ว่ากำลังเล่นอยู่ แล้วค่อยเอามาตรวจสอบซ้ำครับ
Date :
2013-06-27 15:44:56
By :
mr.win
คือผมต้องการแบบว่า ถ้าต้องการเปลี่ยนเสียง คือกดปุ่มอื่นแล้วให้มันเปลี่ยนเสียงเลย อะครับ ไม่ต้องรอให้เล่นจบก็เปลี่ยนได้ แต่ตอนเปลี่ยนเสียงอยากให้เสียงเก่าหายไปแล้วเสียงใหม่ขึ้นแทนเลย -*- พอจะมีโค้ดคำสั่งแนวนี้ไหมครับ
Date :
2013-06-27 18:31:31
By :
kenshero
ลองดูนะครับ
http://www.akexorcist.com/2013/10/android-code-sound-effect.html
ทความนี้จะต่อเนื่องจากบทความ BGM & Effect นะครับ [Android Code] การเพิ่มเสียงประกอบลงใน Application [BGM & Effect] เมื่อเล่นไฟล์เสียงไปหลายครั้งแล้วอยู่ๆเสียงมันก็ดันไม่เล่นซะงั้นนี้
ปัญหานี้เกิดมาจากการที่คลาส Media Player ที่ใช้เล่นเสียงถูกเรียกใช้ซ้ำเรื่อยๆ โดยไม่ได้มีการเคลียร์ของเก่าทิ้งจึงทำให้เกิดการล้นของบัฟเฟอร์ขึ้น เสียงจึงไม่เล่นและขึ้นข้อความเออเรอร์ที่ LogCat แบบนี้แทน
Date :
2015-01-10 14:20:01
By :
นัท
Load balance : Server 03