2011-10-27 37 views
12

Tôi muốn kết nối âm thanh đánh dấu mặc định của hệ điều hành Android (ví dụ: âm thanh bạn nghe khi bạn bấm nút Home và chọn ứng dụng trước đó để bắt đầu) với nút bấm của tôi. Tôi biết cách chơi âm thanh qua MediaPlayer, nhưng tôi không biết tìm kiếm âm thanh đánh dấu mặc định ở đâu. Nó phải ở trong một số tài nguyên mặc định, nhưng tôi không thể tìm thấy nó.Làm thế nào để phát âm thanh TICK mặc định?

MediaPlayer mp = MediaPlayer.create(getBaseContext(), sound); 
mp.setLooping(false); 
mp.start(); 

Bất kỳ ai cũng có thể trợ giúp?

PS. âm thanh này sẽ được kích hoạt bên trong phương thức onClick.
PPS. Tôi biết tôi có thể sử dụng/nguyên dir, nhưng tôi không nghĩ rằng có một nhu cầu cho nó. Không phải để nói, nó mát hơn để chơi âm thanh đánh dấu này chuẩn bị cho điện thoại của người dùng.

Trả lời

1

LƯU Ý: Đây là câu trả lời khá cũ. Kiểm tra câu trả lời của Roberto Tyley dưới đây.

Tôi nghĩ rằng âm thanh mà bạn đang tìm kiếm là và đang trong - /system/media/audio/ui/KeypressStandard.ogg

Tôi nghĩ rằng bạn có thể cho con đường đó đến SetDataSource API của MediaPlayer. Nhưng tôi không thực sự chắc chắn nếu nó sẽ có cùng tên trong tất cả các điện thoại Android.

Có thể có một cách tốt hơn để truy vấn cho âm thanh nhấp chuột mặc định ..

+1

Bạn sẽ được phục vụ tốt hơn sao chép tệp đó vào dự án của riêng bạn. Tệp đó không phải là một phần của Android SDK. Tôi không biết một cách trong SDK để yêu cầu phát lại âm thanh nhấp chuột đó. – CommonsWare

+1

True, vì không có garuntee rằng OEM sẽ giữ lại âm thanh click từ nguồn Android. Nhưng liệu pháp lý cho tôi có thể sao chép âm thanh nhấp từ nguồn Android vào dự án của riêng tôi không? – bluefalcon

+0

Vâng, bây giờ thật khó để trả lời, vì android.git.kernel.org vẫn còn hơi lộn xộn. Tuy nhiên, nếu tệp là một phần của Dự án nguồn mở Android, nó phải được cấp phép theo Giấy phép Apache 2.0, giống như phần còn lại của mã và nội dung. – CommonsWare

53

Bạn có thể chơi âm thanh mặc định Android 'đánh dấu' bằng cách sử dụng phương pháp view.playSoundEffect() trên bất kỳ View - đáng ngạc nhiên đủ, tất cả quan điểm có thể đóng một lựa chọn 'hệ thống' âm thanh:

view.playSoundEffect(SoundEffectConstants.CLICK); 

Đây có lẽ là câu trả lời đơn giản nhất để vấn đề của bạn :)

+0

Tính năng này hoạt động tốt trên ICS. –

+1

Vì lý do nào đó, điều này đã ngừng hoạt động. Bất kỳ đầu mối nào có thể là vấn đề? Xin hãy xem mã của tôi: 'out.setOnTouchListener (new View.OnTouchListener() {public boolean onTouch (Xem v, MotionEvent event) {out.playSoundEffect (SoundEffectConstants.CLICK); ...}}}' Cảm ơn !! –

+4

Được giải quyết bằng cách thêm 'android: soundEffectsEnabled =" true "' vào bố cục. –

5

câu trả lời Roberto Tyley là đúng.

Bạn có thể chơi một âm thanh từ tất cả các quan điểm chỉ bằng cách gọi nó theo cách này:

Button01.setOnClickListener(new View.OnClickListener() 
     { 
      public void onClick(View v) 
      { 
       v.playSoundEffect(SoundEffectConstants.CLICK); 
      } 
     }); 

Chỉ cần lưu ý rằng âm thanh sẽ không chơi nếu cảm ứng âm thanh được tắt theo mặc định. Cài đặt này được đặt trong tùy chọn âm thanh chung của thiết bị (Cài đặt -> Âm thanh -> Âm thanh hoặc trên Hệ điều hành mới hơn: Tùy chọn> Âm thanh> Chạm)

Ngoài ra, nếu cài đặt này được đặt, hầu hết các sự kiện nhấp sẽ kích hoạt âm thanh nhấp dù sao!

7

Nếu bạn muốn kiểm soát âm lượng của âm thanh, hãy sử dụng dịch vụ hệ thống AudioManager. Ngoài ra, điều này có thể được sử dụng từ một Dịch vụ nếu bạn không có chế độ xem tiện dụng.

// get the AudioManager once onCreate or similar 
audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 

... 
// Play a System Sound 
audioManager.playSoundEffect(SoundEffectConstants.CLICK); 

// OR at 50% Volume 
audioManager.playSoundEffect(SoundEffectConstants.CLICK, 0.5F); 

Nếu bạn đang trên Google KÍNH bạn có thể sử dụng com.google.android.glass.media.Sounds hằng

audioManager.playSoundEffect(Sounds.TAP); 

Sau đây là bao gồm trong Sounds

không được phép, KHÔNG CÓ LỖI, THÀNH CÔNG, TAP, CHỌN, miễn nhiệm

1

Bạn có thể sử dụng đánh dấu, tiếng bíp hoặc bất kỳ loại âm thanh sẵn có nào bằng cách Tone Generator

ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 100); 
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); 
Các vấn đề liên quan