2011-06-23 7 views
1

アンドロイドの携帯電話用のアンドロイドのJavaコードを書き込む方法は、イヤホンジャックを使用してバズ音(特定の周波数と思っています)を送信する方法ですか?互いに独立して左右のイヤホンに接続します。基本的に、私は左の耳芽にバズを送りたい。そして、私は右の耳芽にバズを送りたい。左または右のイヤホンにバズ音を送信

+1

アプリはその場で特定の周波数を生成できるようにする必要がない限り、あなただけの左チャンネル1つの周波数と別の右チャンネルとオーディオファイルを事前に作ることができます。あなたのAndroidのコードはすべて、サウンドサンプルを再生するだけです。 –

+0

あなたはそのようなことをして私がどのように動くかについて何か提案していますか? – DariusSmif

+0

soxを見ると、すべてのデスクトッププラットフォームで使用でき、さまざまなサウンドを合成できます。 –

答えて

1

これは非常に興味深い質問でしたので、私はそれをやっていますが、私は必要な周波数でトーンを生成し、それを演奏するクラスを書いた、私は左/右のボリューム部分をテストできませんでした私のヘッドホンを見つけることができませんが、それは動作するはずです!

希望すると便利です。

ケニー

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(); 
    } 
} 
+0

ここで書いたクラスを使ってコードを書いています。しかし、私は個々の耳に遊ぶことができません。手伝ってくれませんか? – masad

関連する問題