2011-12-07 29 views
3

Android API AudioTrackオブジェクトを使用して生成されたサイン音声信号の再生に問題があります。 サイン信号の振幅が約40(最大16ビットのPCMフォーマットのため、可能な最大振幅値は36535です)の間はすべてがうまく動作しますが、振幅を40未満に設定すると、音量レベルを変更しない限りサウンドは再生されませんサイドアップダウンボタン(私がそれを変更しても問題ありません。 のアップまたはダウン)。Android AudioTrackオブジェクトは静かな正弦波信号(約15db以下)を再生しません

このようにしても、サウンドは1秒間しか表示されず、もう一度消えて10秒間持続するはずです。 私はSGS 2でこの問題を抱えています。問題はOSの中核となるいくつかの制限に起因していると思われます。

誰かが問題の原因を知り、解決方法を教えていただければ幸いです。

答えて

0

私にも同様の問題があります。私は開始時にサイレントプレイしている私のアプリで (正弦波振幅さ0)、その後、2秒後に私が振幅の正弦波を再生= 10000

はしかし、時には、でも私はAudioTrack(静的モードの再生を開始、ストリームはMUSICです)、何も聞こえず、音量を手動で変更した後で初めて自分の音が聞こえます。 サウンドを再生する前に(サイレントでも)、プログラムでストリームの音量をmaxに設定し、出力振幅を信号振幅で制御します。

あなたはこれの理由を理解しましたか?

アップデート:私は、デバイスがこの奇妙な状態にある間、AudioManager.setStreamVolumeへの私の呼び出しが動作しない、奇妙なことを発見した、より深く問題に

ダイビング。私はこれをチェックする:

int max = mAudioManager.getStreamMaxVolume(SoundConfig.outputStreamType); // max = 15 
int v = mAudioManager.getStreamVolume(SoundConfig.outputStreamType); // v = 0 
mAudioManager.setStreamVolume(SoundConfig.outputStreamType, max, 0); 
v = mAudioManager.getStreamVolume(SoundConfig.outputStreamType); // v = 0 

私はlogcat出力を分析するために始めたこの後、どのような私が見つけたことである: - :

12-19 12:45:37.120: D/AudioService(192): getStreamVolume(12) 
12-19 12:45:40.970: D/AudioSystem(192): getParameters() ERROR : can't get parameters 
12-19 12:45:40.970: D/AudioService(192): getStreamVolume(12) 
12-19 12:45:45.680: D/AudioService(192): getStreamVolume(12) 
12-19 12:45:50.120: I/AudioPolicyManager(110): startOutput() output 1, stream 3, session 6 
12-19 12:45:50.120: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4 
12-19 12:45:50.120: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4 
12-19 12:45:50.120: I/AudioFlinger(110): start output streamType (0, 3) for 1 
12-19 12:45:50.120: D/AudioHardware(110): AudioStreamOutALSA::setParameters() start_output_streamtype=3 
12-19 15:25:02.521: D/AudioHardware(110): AudioHardware pcm playback is exiting standby. 

しかし、通常で 奇妙な状態でボリュームを設定し、再生を開始することのように見えます状態(私は上下に音量ボタンを押した後に)、それは次のようになります。私は、ハードウェアが最大にボリュームを設定する方法を参照して、スタンバイ状態を終了後者の場合に

12-19 15:25:02.481: D/AudioSystem(193): getParameters() ERROR : can't get parameters 
12-19 15:25:02.481: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.481: I/AudioService(193): AudioFocus abandonAudioFocus() from android.media.AudioManager#413cbf68com.kinsa.manager.CAndroidManager#414087a0 
12-19 15:25:02.491: I/AudioService(193): AudioFocus requestAudioFocus() from android.media.AudioManager#413cbf68com.kinsa.manager.CAndroidManager#414087a0 
12-19 15:25:02.491: D/AudioSystem(193): getParameters() ERROR : can't get parameters 
12-19 15:25:02.491: D/AudioHardware(110): AudioStreamOutALSA::setParameters() music_volume_index=1 
12-19 15:25:02.491: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.491: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.491: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.491: D/AudioSystem(193): getParameters() ERROR : can't get parameters 
12-19 15:25:02.501: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.501: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.501: D/AudioService(193): getStreamVolume(12) 
12-19 15:25:02.501: D/AudioHardware(110): AudioStreamOutALSA::setParameters() music_volume_index=15 
12-19 15:25:02.521: I/AudioPolicyManager(110): startOutput() output 1, stream 3, session 3 
12-19 15:25:02.521: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4 
12-19 15:25:02.521: I/AudioPolicyManager(110): getDeviceForStrategy() strategy 0, device 4 
12-19 15:25:02.521: I/AudioFlinger(110): start output streamType (0, 3) for 1 
12-19 15:25:02.521: D/AudioHardware(110): AudioStreamOutALSA::setParameters() start_output_streamtype=3 
12-19 15:25:02.521: D/AudioHardware(110): AudioHardware pcm playback is exiting standby. 

が、それは最初のケースでは発生しません。しかし、なぜ? 同じコードですが、唯一の違いは、2番目のケースで音量ボタンを押した後で実行していることです。

+0

まだありません。とにかく、誰かがその状況に気づいたことをうれしく思います。 – eNeLOu

関連する問題