Это был довольно интересный вопрос, поэтому, хотя я хотел бы попробовать, я написал класс, который генерирует тон на необходимой частоте, а затем воспроизводит его, я не смог протестировать левую / правую часть громкости, потому что я не могунайти мои наушники, но это должно работать!
Надеюсь, это поможет!
Кенни
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();
}
}