`
一口三个汉堡
  • 浏览: 112885 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

实例11--播放按键声音

阅读更多

  实例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

0
4
分享到:
评论

相关推荐

    344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)

    344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码)344-矩阵式键盘按键音(51单片机...

    单片机C语言实例--344-矩阵式键盘按键音.zip

    单片机C语言实例--344-矩阵式键盘按键音.zip

    单片机C语言实例-矩阵式键盘按键音.zip

    单片机C语言实例-矩阵式键盘按键音.zip

    J2ME手机游戏实例之--俄罗斯方块

    《J2ME手机游戏实例之--俄罗斯方块》 Java Micro Edition(J2ME)是Java平台的一个子集,主要用于嵌入式设备和移动设备,如早期的智能手机。本实例将探讨如何使用J2ME开发经典游戏——俄罗斯方块。在手机上实现这个...

    C#做的一个按键有声音(自定义声音)的一个很好的软件

    开发者可以预先准备一系列不同按键对应的声音文件,并在事件处理程序中根据不同的按键调用不同的`SoundPlayer`实例播放对应的声音。 再者,自定义皮肤功能体现了C#界面设计的灵活性。在Windows Forms或WPF应用中,...

    344-矩阵式键盘按键音(51单片机C语言实例Proteus仿真和代码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    手机按键音频

    在手机中,按键音频是声音设计的一个实例,它为用户提供反馈,确认操作已被系统接收。这些音频通常需要精心设计,以确保与设备的整体风格和用户体验相匹配,同时不会过于刺耳或打扰到用户。 2. **音频合成**:音频...

    单片机C语言实例78:矩阵式键盘按键音.txt

    单片机C语言实例78:矩阵式键盘按键音.txt

    c# 2008 语音播放实例

    除了基础的文本播放,System.Speech库还支持更复杂的操作,如添加语音暂停、插入声音效果、读取文本文件等。例如,可以使用`SpeakAsync()`方法异步播放语音,或者使用`SpeakProgress`事件监听语音播放的进度。 六、...

    贺兰_电子钢琴 2.0.5(源代码)

    2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...

    Silverlight1.0实例-〖大钢琴〗

    这个实例是一个互动的键盘应用,用户可以通过键盘在浏览器上模拟弹奏钢琴,实现了视觉效果与声音的同步,展现了Silverlight在交互性和多媒体处理上的强大功能。 在Silverlight 1.0中,开发者可以使用XAML...

    1-2-7-MIDI音乐播放程序_STM32F103.zip

    6. **用户界面**:如果项目包含用户交互,可能会有按键输入处理和LED指示等功能,用于选择曲目或控制播放状态。 7. **编译和调试工具**:开发过程中通常会用到STM32CubeMX进行初始化配置,Keil uVision或者GCC进行...

    贺兰_电子钢琴 2.0.4(简单发布)

    2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...

    51单片机c语言实例100

    //实例78:矩阵式键盘按键音 85 实例79:简易电子琴 86 实例80:矩阵式键盘实现的电子密码锁 92 ************************************************************************ **液晶显示LCD*********液晶显示LCD ***...

    贺兰_电子钢琴 2.0.3(简单发布)

    2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...

    DTMF合成与识别MatlabGUI实例-DTMF.zip

    DTMF合成与识别MatlabGUI实例-DTMF.zip 本帖最后由 oieve 于 2015-7-30 17:03 编辑 利用GUI 图形用户界面设计工具制作电话拨号面板,把DTMF 信号和电话机的键盘矩阵对应起来。其中选用我们熟悉的 10个...

    贺兰_电子钢琴 2.0.2(简单发布)

    2.0.1 2013-10-31, 2013-11-01~02 ------------------------------------------------------------------------- 1、再增加调试信息,播放、录制时显示按键时间。(2013-10-31) 2、添加几个乐谱。(2013-10-31) 3、...

Global site tag (gtag.js) - Google Analytics