0

ユーザーが設定した間隔までカウントアップまたはカウントダウンするタイマーを表示するクロスプラットフォームプログラムを作成しています。そのインターバルの終わりに、私は音を鳴らしたいと思います。私は次のようなものを使用すると思いました:

System.Media.SystemSounds.Beep.Play();

動作します。Macで音が出ない以外に、障害の兆候はありません。「ビープ音」を鳴らす「ボタン」を使って小さなテストコードを書いたところ、再生されませんでした。ただし、上記のコードスニペットは、妻のWindows Vistaマシン(MonoDevelop 2.8.8.4も使用)では正常に機能します。皮肉なことに、VirtualBoxを介してMacでサンドボックス化したサンドボックス化されたUbuntu 12.04 linux(MonoDevelop 2.8.6.3)でも正常に動作します。

私はSOやインターネットを見回しましたが、このパズルに対する満足のいく答えは見つかりませんでした。もう一度質問させてください。「MacのプログラムでMacが「ビープ」サウンドを再生できないのはなぜですか。同じMacのサンドボックス化されたLinuxで問題なくサウンドを再生できますか?」

これについて助けてくれてありがとう。

4

1 に答える 1

1

MonoのSystem.Mediaの実装を見ると、ALSA(Linuxサウンドシステムの1つ)とWindowsにのみ実装されているようです。System.Mediaは非常にシンプルなサウンドAPIであり、あまり機能しないため、ほとんど使用されないためだと思います。

プラットフォームにとらわれない優れたサウンドプレーヤーAPIは考えられません。GTK#UIツールキット(MonoDevelopで使用)には、Display.Beep()AFAIKがすべてのプラットフォームで機能する機能があると思います。アプリがターミナルアプリの場合は、試してみることもできますSystem.Console.Beep ()

于 2012-12-02T22:45:03.490 に答える