นี่เป็นส่วนที่สำคัญที่สุดในโค้ดที่ให้ไว้ในโพสต์ต้นฉบับ
Button one = (Button) this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
เพื่ออธิบายทีละขั้นตอน:
Button one = (Button) this.findViewById(R.id.button1);
อันดับแรกคือการเริ่มต้นของปุ่มที่จะใช้ในการเล่นเสียง เราใช้กิจกรรมfindViewById
ส่งรหัสที่เรากำหนดให้ (ในกรณีตัวอย่างนี้ :) R.id.button1
เพื่อรับปุ่มที่เราต้องการ เราโยนมันเป็นButton
เพื่อให้ง่ายต่อการกำหนดให้กับตัวแปรone
ที่เรากำลังเริ่มต้น การอธิบายเพิ่มเติมว่าการทำงานนี้อยู่นอกเหนือขอบเขตสำหรับคำตอบนี้ ข้อมูลนี้ให้ข้อมูลเชิงลึกสั้น ๆ เกี่ยวกับวิธีการทำงาน
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
นี่คือวิธีการเริ่มต้นไฟล์MediaPlayer
. MediaPlayer ตามรูปแบบวิธีการคงการออกแบบโรงงาน ในการรับอินสแตนซ์เราเรียกcreate()
วิธีการและส่งผ่านบริบทและรหัสทรัพยากรของเสียงที่เราต้องการเล่นในกรณีR.raw.soho
นี้ เราประกาศเป็นfinal
. จอน Skeet ให้คำอธิบายที่ดีเกี่ยวกับเหตุผลที่เราทำเช่นนั้นที่นี่
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
สุดท้ายเราตั้งค่าว่าปุ่มเริ่มต้นก่อนหน้านี้จะทำอะไร เล่นเสียงเมื่อคลิกปุ่ม! การทำเช่นนี้เราตั้งค่าปุ่มของเราOnClickListener
one
ภายในเป็นเพียงหนึ่งในวิธีการonClick()
ที่มีสิ่งที่คำแนะนำปุ่มควรทำเมื่อมีการคลิก
public void onClick(View v) {
mp.start();
}
ในการเล่นเสียงเราเรียกว่าstart()
วิธีการของ MediaPlayer วิธีนี้จะเริ่มเล่นเสียง
ตอนนี้คุณสามารถเล่นเสียงเมื่อคลิกปุ่มใน Android ได้แล้ว!
ส่วนโบนัส:
ตามที่ระบุไว้ในความคิดเห็นด้านล่างขอบคุณ Langusten Gustel! และตามที่แนะนำในข้อมูลอ้างอิงสำหรับนักพัฒนาซอฟต์แวร์ Androidสิ่งสำคัญคือต้องเรียกใช้release()
วิธีการเพิ่มทรัพยากรที่จะไม่ใช้อีกต่อไป โดยปกติจะเกิดขึ้นเมื่อเสียงที่จะเล่นเสร็จสิ้นการเล่น ในการทำเช่นนั้นเราเพิ่มสิ่งOnCompletionListener
ที่เราmp
ชอบ:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
ภายในonCompletion
วิธีการเราปล่อยมันดังนี้:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
นอกจากนี้เห็นได้ชัดว่าวิธีการที่ดีในการดำเนินการนี้ ตัวอย่างเช่นคุณสามารถกำหนดให้ MediaPlayer เป็นตัวแปรคลาสและจัดการวงจรชีวิตพร้อมกับวงจรชีวิตของFragment
หรือActivity
ที่ใช้งานได้ อย่างไรก็ตามนี่เป็นหัวข้อสำหรับคำถามอื่น เพื่อให้ขอบเขตของคำตอบนี้มีขนาดเล็กที่ฉันเขียนมันก็แสดงให้เห็นถึงวิธีการเล่นเสียงที่ปุ่มคลิก Android
โพสต์ต้นฉบับ
อันดับแรก คุณควรใส่ข้อความของคุณไว้ในบล็อกและในกรณีนี้คือเมธอด onCreate
ประการที่สอง. คุณเริ่มต้นปุ่มเป็นตัวแปรหนึ่งจากนั้นคุณใช้ตัวแปรศูนย์และตั้งค่า onClickListener เป็น onClickListener ที่ไม่สมบูรณ์ ใช้ตัวแปรหนึ่งสำหรับ setOnClickListener
ประการที่สามใส่ตรรกะเพื่อเล่นเสียงภายใน onClick
สรุป:
import android.app.Activity;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
public class BasicScreenActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_basic_screen);
Button one = (Button)this.findViewById(R.id.button1);
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
mp.start();
}
});
}
}
MusicManager.getInstance().play(this, R.raw.my_sound);
ได้ ถ้าเป็นเช่นนั้นห้องสมุดนี้อาจเหมาะสำหรับคุณ: github.com/delight-im/Android-Audio