Đây là phần quan trọng nhất trong mã được cung cấp trong bài đăng gốc.
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();
}
});
Để giải thích nó từng bước:
Button one = (Button) this.findViewById(R.id.button1);
Đầu tiên là khởi tạo nút được sử dụng để phát âm thanh. Chúng tôi sử dụng Activity findViewById
, chuyển Id mà chúng tôi đã gán cho nó (trong trường hợp của ví dụ này R.id.button1
:), để lấy nút mà chúng tôi cần. Chúng tôi ép kiểu nó Button
để có thể dễ dàng gán nó cho biến one
mà chúng tôi đang khởi tạo. Giải thích thêm về cách hoạt động của điều này nằm ngoài phạm vi cho câu trả lời này. Điều này cung cấp một cái nhìn sâu sắc ngắn gọn về cách nó hoạt động.
final MediaPlayer mp = MediaPlayer.create(this, R.raw.soho);
Đây là cách khởi tạo a MediaPlayer
. MediaPlayer tuân theo Mẫu thiết kế phương pháp nhà máy tĩnh . Để lấy một thể hiện, chúng tôi gọi create()
phương thức của nó và chuyển cho nó ngữ cảnh và Id tài nguyên của âm thanh mà chúng tôi muốn phát, trong trường hợp này R.raw.soho
. Chúng tôi tuyên bố nó là final
. Jon Skeet đã cung cấp một lời giải thích tuyệt vời về lý do tại sao chúng tôi làm như vậy ở đây .
one.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
//code
}
});
Cuối cùng, chúng tôi đặt những gì nút đã khởi tạo trước đó của chúng tôi sẽ thực hiện. Phát âm thanh khi nhấp vào nút! Để làm điều này, chúng tôi đặt OnClickListener
nút của chúng tôi one
. Bên trong chỉ có một phương pháp, onClick()
chứa các hướng dẫn mà nút phải thực hiện khi nhấp .
public void onClick(View v) {
mp.start();
}
Để phát âm thanh, chúng tôi gọi MediaPlayer start()
phương pháp . Phương pháp này bắt đầu phát lại âm thanh.
Ở đó, bây giờ bạn có thể phát âm thanh khi nhấp vào nút trong Android!
Phần thưởng:
Như đã lưu ý trong bình luận bên dưới Cảm ơn Langusten Gustel! và như được khuyến nghị trong Tài liệu tham khảo dành cho nhà phát triển Android , điều quan trọng là gọi release()
phương thức để giải phóng các tài nguyên sẽ không còn được sử dụng nữa. Thông thường, điều này được thực hiện sau khi âm thanh được phát đã hoàn tất quá trình phát. Để làm như vậy, chúng tôi thêm một OnCompletionListener
vào tương tự như vậy của chúng tôi mp
:
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//code
}
});
Bên trong onCompletion
phương thức, chúng tôi phát hành nó như sau:
public void onCompletion(MediaPlayer mp) {
mp.release();
}
Rõ ràng là có nhiều cách tốt hơn để thực hiện điều này. Ví dụ: bạn có thể đặt MediaPlayer thành một biến lớp và xử lý vòng đời của nó cùng với vòng đời của Fragment
hoặc Activity
sử dụng nó. Tuy nhiên, đây là một chủ đề cho một câu hỏi khác. Để giữ phạm vi nhỏ của câu trả lời này, tôi đã viết nó chỉ để minh họa cách phát âm thanh khi nhấp vào nút trong Android .
Bài gốc
Đầu tiên. Bạn nên đặt các câu lệnh của mình bên trong một khối và trong trường hợp này là phương thức onCreate.
Thứ hai. Bạn đã khởi tạo nút dưới dạng một biến , sau đó bạn sử dụng một biến 0 và đặt onClickListener của nó thành onClickListener không hoàn chỉnh. Sử dụng biến một cho setOnClickListener.
Thứ ba, đặt logic để phát âm thanh bên trong onClick.
Tóm tắt:
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);
. Nếu vậy, thư viện này có thể dành cho bạn: github.com/delight-im/Android-Audio