Отправка звукового сигнала на наушники влево или вправо - PullRequest
1 голос
/ 23 июня 2011

Есть ли способ написать код Java для Android, для телефона Android, чтобы послать звуковой сигнал (я думаю, определенную частоту) через разъем для наушников и в наушники слева и справа независимо друг от друга.В основном я хочу послать гудение левому наушнику.И я хочу послать гул в правый вкладыш.

1 Ответ

1 голос
/ 24 июня 2011

Это был довольно интересный вопрос, поэтому, хотя я хотел бы попробовать, я написал класс, который генерирует тон на необходимой частоте, а затем воспроизводит его, я не смог протестировать левую / правую часть громкости, потому что я не могунайти мои наушники, но это должно работать!

Надеюсь, это поможет!

Кенни

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();
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...