如何在我的自定义键盘上播放用户拨号盘音调?

时间:2016-03-15 11:21:10

标签: java android android-audiomanager android-keypad

在我的应用程序中,我有一个自定义键盘,并希望在按键时播放刻度音。下面的代码给了我声音。

TextView nameView = new TextView(this);
nameView.setText(contact.getName());
contactInfoWrapper.addView(nameView, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));

但我希望播放当用户触摸拨号盘时出现的相同音调。我如何实现它?

1 个答案:

答案 0 :(得分:4)

我在Michael评论的帮助下找到了解决方案。在这里发布,因为它可以帮助其他人:)

AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int volume_level= am.getStreamVolume(AudioManager.STREAM_RING); // Highest Ring volume level is 7, lowest is 0
final ToneGenerator mToneGenerator = new ToneGenerator(AudioManager.STREAM_MUSIC, volume_level * 14); // Raising volume to 100% (For eg. 7 * 14 ~ 100)
mToneGenerator.stopTone();
mToneGenerator.startTone(ToneGenerator.TONE_DTMF_1, 100); // play sound for 100ms

对于其他键,请从ToneGenerator.TONE_DTMF_0ToneGenerator.TONE_DTMF_9

选择音色