2012-06-04 37 views
3

我对android还不熟悉,目前我正在开发一个项目,我必须指导一个使用音频信号的人。 我实际上想要做的只是在一个耳朵上发出一个声音,告诉他要么左转,要么右转。当直线指挥时,双耳会发出哔哔声。如何让android只发一个耳朵?

我在这里找到了很多关于如何在android上生成嘟嘟声的例子。

下面是如何生成任意蜂鸣声的例子: Playing an arbitrary tone with Android

我要的仅仅是一个见机行事,并在任一耳朵播放之间切换。任何人都知道如何做到这一点?

+2

所以你将不得不使用CHANNEL_OUT_STEREO格式和编码三个阵列一个为左耳,一个为右,和两个耳朵 – L7ColWinters

+1

http://stackoverflow.com/questions/6458780/sending-a-buzz-sound-to-ear-bud-left-or-right duplicate – L7ColWinters

+0

你究竟是什么意思,通过编码为不同的耳朵?我曾尝试切换耳朵之间的音量水平,但它不起作用。你能解释一下如何为不同的耳朵编码吗? – masad

回答

1

你可以做,你有声音在左,右三个不同的立体声soundclips并且两个信道,然后打他们与SoundPool

+0

到目前为止,我还没有成功生成音调。我想我将不得不使用你的方法。你能告诉我,如果你知道如何在PC上生成这些soundclip? – masad

+1

我刚用了大胆 - 一个超级soundtool:http://audacity.sourceforge.net/ –

+0

我最后也使用了大胆。它是一个非常方便的工具来创建声音,使用android我没有任何成功地在飞行中产生嘟嘟声。 – masad

1

查看文档,您可以使用AudioFormat控制输出。不知道这是否给你你需要的精度。

final AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 
       sampleRate, AudioFormat.CHANNEL_CONFIGURATION_MONO, 
       AudioFormat.ENCODING_PCM_16BIT, numSamples, 
       AudioTrack.MODE_STATIC); 

更改以此为左声道输出:

final AudioTrack audioTrack = new AudioTrack(AudioManager.STREAM_MUSIC, 
       sampleRate, AudioFormat.CHANNEL_OUT_FRONT_LEFT, 
       AudioFormat.ENCODING_PCM_16BIT, numSamples, 
       AudioTrack.MODE_STATIC); 

文档:http://developer.android.com/reference/android/media/AudioFormat.html

+0

使用CHANNEL_OUT_FRONT_LEFT和CHANNEL_OUT_FRONT_RIGHT我无法在一只耳朵中播放音调。这没有明显的影响。所有的音调听起来都一样,而且它们都来自两个耳机。我只需要一个耳机就可以在任何方向引导一个人的情况下工作。 – masad