bsp; 4698
Ring freq E4b 4978
Ring freq E4 5274
Ring freq F4 5588
Ring freq G4b 5920
Ring freq G4 6272
Ring freq A5b 6644
Ring freq A5 7040
Ring freq B5b 7458
Ring freq B5 7902
Ring freq C5 8372
Ring freq D5b 8870
Ring freq D5 9396
Ring freq E5b 9956
Ring freq E5 10548
Ring freq F5 11176
Ring freq G5b 11840
Ring freq G5 12544
Ring freq A6b 13288
下面我们编写一个小程序来讲述如何使用Nokia UI来处理声音问题,我们的目的是当用户按下按键的时候开始播放声音,当用户释放按键的时候停止播放,我们提供一个ToneCanvas类来显示用户按下的键,并通过TonePlayer类来播放适当频率的声音。
package com.j2medev.tone;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import com.nokia.mid.ui.FullCanvas;
public class TonesCanvas extends FullCanvas
{
private TonesMIDlet midlet;
private int pressNum;
private int currentKey;
private TonePlayer player = new TonePlayer();
private static int freq[][] = { { 523, 554 }, { 587, 622 }, { 659, 659 },
{ 698, 740 }, { 784, 831 }, { 880, 932 }, { 988, 988 },
{ 1047, 1109 }, { 1175, 1245 }, { 1319, 1319 }, { 1397, 1480 } };
public static final int NAT = 0;
public static final int SHARP = 1;
private int x = this.getWidth() / 2;
private int y = this.getHeight() / 2;
private boolean sharp = false;
public TonesCanvas(TonesMIDlet midlet)
{
super();
this.midlet = midlet;
// TODO Auto-generated constructor stub
}
public void paint(Graphics g)
{
if (pressNum == -1)
{
return;
}
String note = (sharp == true) ? "#" : "";
g.setColor(128, 255, 18);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(124, 124, 0);
g.drawString(pressNum + note, x, y, Graphics.LEFT | Graphics.TOP);
}
public void keyPressed(int keyCode)
{
if (keyCode == Canvas.KEY_POUND)
{
sharp = !sharp;