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
看襪,它適用於所有臺式機平臺,可以合成各種各樣的聲音。 –