实例11播放按键声音,在java me中有playTone的方法,可以指定一些特定的频率播放,在android中,我没找到相应的方法,所以就用了另一种方法,但是播放出来的生硬不是音乐的音符,只是其他的一些声音,下面给出源代码。因为简单,也没有涉及到界面,所以就不给出效果图,也没有MainView,就单单一个acitivity.
package com.wjh.test_tone;
import android.app.Activity;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.os.Bundle;
import android.view.KeyEvent;
public class TestTone extends Activity {
/** Called when the activity is first created. */
ToneGenerator tonePlayer = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tonePlayer = new ToneGenerator(AudioManager.STREAM_MUSIC, 70);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
switch(keyCode)
{
case KeyEvent.KEYCODE_0:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_0,100);
break;
case KeyEvent.KEYCODE_1:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_1,100);
break;
case KeyEvent.KEYCODE_2:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_2,100);
break;
case KeyEvent.KEYCODE_3:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_3,100);
break;
case KeyEvent.KEYCODE_4:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_4,100);
break;
case KeyEvent.KEYCODE_5:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_5,100);
break;
case KeyEvent.KEYCODE_6:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_6,100);
break;
case KeyEvent.KEYCODE_7:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_7,100);
break;
case KeyEvent.KEYCODE_8:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_8,100);
break;
case KeyEvent.KEYCODE_9:
tonePlayer.startTone(ToneGenerator.TONE_DTMF_9,100);
break;
}
return super.onKeyDown(keyCode, event);
}
}
在想playtone的时候,我在csdn发问了,fontlose回答了一种方法,我觉得还不错,有发出那7个声音,下面给出他提供的方法源码:
private final int duration = 1; // seconds
private final int sampleRate = 8000;
private final int numSamples = duration * sampleRate;
private final double sample[] = new double[numSamples];
private final double freqOfTone[] ={262, 294,330,349,392,440,494,524}; // do,rui,mi,fa,so,la,xi,dou的频率
private final byte generatedSnd[] = new byte[2 * numSamples];
private int freqCnt=0;
class PlayThread extends Thread
{
private int playfreq;//播放频率
public PlayThread(int cnt)
{
playfreq=cnt%8;
}
@Override
public void run() {
// TODO Auto-generated method stub
for (int i = 0; i < numSamples; ++i) {
sample[i] = Math.sin(2 * Math.PI * i / (sampleRate/freqOfTone[playfreq]));
}
int idx = 0;
for (final double dVal : sample) {
// scale to maximum amplitude
final short val = (short) ((dVal * 32767));
// in 16 bit wav PCM, first byte is the low order byte
generatedSnd[idx++] = (byte) (val & 0x00ff);
generatedSnd[idx++] = (byte) ((val & 0xff00) >>> 8);
}
final AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO,
AudioFormat.ENCODING_PCM_16BIT, numSamples,
AudioTrack.MODE_STATIC);
audioTrack.write(generatedSnd, 0, generatedSnd.length);
audioTrack.play();
super.run();
}
}
new PlayThread(0).start(); //0播发duo 1播放rui 2播放mi ......
apk文件(将后缀改为 apk):Demon_11.zip
源代码文件:Demon_11.rar
分享到:
相关推荐
344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)344-矩阵式键盘按键音(51单片机...
单片机C语言实例--344-矩阵式键盘按键音.zip
单片机C语言实例-矩阵式键盘按键音.zip
免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...
单片机C语言实例78:矩阵式键盘按键音.txt
2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...
2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...
//实例78:矩阵式键盘按键音 85 实例79:简易电子琴 86 实例80:矩阵式键盘实现的电子密码锁 92 ************************************************************************ **液晶显示LCD*********液晶显示LCD ***...
2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...
DTMF合成与识别MatlabGUI实例-DTMF.zip 本帖最后由 oieve 于 2015-7-30 17:03 编辑 利用GUI 图形用户界面设计工具制作电话拨号面板,把DTMF 信号和电话机的键盘矩阵对应起来。其中选用我们熟悉的 10个...
2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...
51单片机C语言程序实例-按键发音(按下不同的按键会使SOUND发出不同频率的声音)。
//实例78:矩阵式键盘按键音 实例79:简易电子琴 实例80:矩阵式键盘实现的电子密码锁 液晶显示LCD*液晶显示LCD *液晶显示LCD * *液晶显示LCD*液晶显示LCD *液晶显示LCD */ 实例81:用LCD显示字符'A' 实例82:...
11:自动ping. 12:连接到搜索引擎. 13:自动报告bug,建议等. 14:宏功能. 15:自动同步文件夹. 16:保存加载任务. 17:计划任务. 18:单线程下载时不能创建临时文件. 19:下载流文件(rm,Media Player). Notepad++ V5.6.8 ...
微信小程序silk语音文件实例,用作语音识别,转码操作等
D:\实例\步进电机\步进电机按键控制\C语言\XLKEYDJ.HEX D:\实例\步进电机\步进电机按键控制\汇编 D:\实例\步进电机\步进电机按键控制\汇编\XLKEYDJ.ASM D:\实例\步进电机\步进电机按键控制\汇编\XLKEYDJ.HEX D:\实例...
实例 78:矩阵式键盘按键音...........................................................................81 实例 79:简易电子琴 ................................................................................