Symbol 製のデバイスを対象としたモバイル アプリケーションを開発しています。これらのデバイスでは、Windows Mobile がシステムです。
私たちのアプリケーションはサウンドを再生します (実際には単純なビープ音です): サウンドを再生するために、Symbol が提供する開発者キットを使用してデバイスのサウンド カードにアクセスします。
使用するコードは次のとおりです。
Symbol.Audio.Device MyDevice = (Symbol.Audio.Device)Symbol.StandardForms.SelectDevice.Select(
Symbol.Audio.Controller.Title,
Symbol.Audio.Device.AvailableDevices);
Symbol.Audio.Controller sound_card = new Symbol.Audio.StandardAudio(MyDevice);
int Duration = 15;
int Frequency = 3000;
sound_card.PlayAudio(Duration, Frequency);
持続時間はミリ秒、周波数はヘルツです。
ほとんどの場合、サウンドは正しく再生されます (つまり、サウンドは適切な長さで再生されます)。
ただし、サウンドがより長く再生される場合があります (約 1 秒間再生されます)。
このようなことは、ユーザーの耳にかなり邪魔になるので避けたいと思います。
この動作が存在する理由がわかりません。アプリケーションでは、短い音と長い音の間で何も変わりません。アプリケーション データは同じであり、他のタスクやバックグラウンド タスクはアプリケーションによって実行されません。
このビープ音は、特定の画面がユーザーに表示されるときに再生されます (つまり、フォーム オブジェクトが作成され、その初期化中にビープ音が再生されます)。ということで、デバイスのCPU使用率が高い時に音が出るのではないかと思います。また、CPU がビジーであるため、サウンドを適切な時間だけ再生することができません。
この問題は、Symbol Developer Kit に固有のものでしょうか?
このような長いビープ音を避けるにはどうすればよいですか?
編集
ctacke ソリューションを実装しました。ビープ音を別のスレッドで優先度を高くして再生します。また、サウンドの長さを増やしました (15 ミリ秒ではなく 30 ミリ秒にしました。持続時間が長いほど、システムが正しい時間内にサウンドを再生できるようになる可能性があります)。
この実装がこの問題を解決するかどうかはまだわかりません。バグの不確定性のため、問題が確実に解決されるまでには時間がかかります。