1
有没有办法写的Android的Java代码,Android手机,发送蜂鸣音(我想一定频率)通过耳耳机插口和插入左右耳塞,彼此独立。基本上我想发一个嗡嗡声到左耳塞。我想发送一个嗡嗡声到右耳塞。发送嗡嗡声耳塞向左或向右
有没有办法写的Android的Java代码,Android手机,发送蜂鸣音(我想一定频率)通过耳耳机插口和插入左右耳塞,彼此独立。基本上我想发一个嗡嗡声到左耳塞。我想发送一个嗡嗡声到右耳塞。发送嗡嗡声耳塞向左或向右
这是一个很有趣的问题,所以我虽然我给它一去,我已经写了在所需频率上产生音,然后播放它的一类,我不能测试左/右音量的部分,因为我不能找到我的耳机,但它应该工作!
希望这会有所帮助!
肯尼
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioTrack;
public class ToneGen {
int seconds;
int sampleRate = 16000;
double frequency;
double RAD = 2.0 * Math.PI;
AudioTrack aTrack;
/**
* @param frequency The frequency of the tone
* @param duration The duration of the tone in seconds
* @param leftVolume Left volume 0.0f - silent, 1.0f full volume
* @param rightVolume Right volume 0.0f - silent, 1.0f full volume
*/
public ToneGen(double frequency, int duration, float leftVolume, float rightVolume){
this.frequency = frequency;
seconds = duration * 2;
byte[] buffer = new byte[sampleRate * seconds];
for (int i=0; i<buffer.length; i++)
{
buffer[i] = (byte)(Math.sin(RAD * frequency/sampleRate * i) * 127.0);
}
aTrack = new AudioTrack(AudioManager.STREAM_MUSIC,
sampleRate, AudioFormat.CHANNEL_CONFIGURATION_STEREO,
AudioFormat.ENCODING_PCM_16BIT,
buffer.length, AudioTrack.MODE_STATIC);
aTrack.setStereoVolume(leftVolume, rightVolume);
aTrack.write(buffer, 0, buffer.length);
}
public void Play(){
aTrack.play();
}
public void Stop(){
aTrack.stop();
}
}
我已经用你写到这里的类写的代码。但我无法发挥个人的耳朵。你能帮我么? – masad
除非应用程序需要能够实时生成特定的频率,你可以只是预先让与左声道一个频率和右声道另一个音频文件;那么你所有的Android代码将不得不做的就是播放声音样本。 –
你对我如何woud着手做这样的事有什么建议? – DariusSmif
看袜,它适用于所有台式机平台,可以合成各种各样的声音。 –