4

Monoを使用してOSX10.6用のシンプルなタイマーアプリを書いています。アラーム音 (wav/mp3 ファイルなど) を再生するにはどうすればよいですか?

私はいくつかの方法を試しましたが、残念ながらどれもうまくいきませんでした:

  1. NSSoundは Mono ではまだサポートされていないようです。

    MonoMac.AppKit.NSSound alarm = new MonoMac.AppKit.NSSound("alarm.wav");
    alarm.Play();
    
  2. a を使用してSoundPlayerも機能しませんでした:

    System.Media.SoundPlayer player = new System.Media.SoundPlayer("alarm.wav");
    player.PlaySync();
    
  3. を開いてサウンドを再生しSystem.Diagnostics.Process、OSX コマンド ライン コマンドを使用することができましたafplay。残念ながら、このコマンドは新しいターミナル ウィンドウで開くため、GUI アプリでは非常に煩わしいものです。

Mono に CoreAudio バインディングがあることを認識しています。しかし、それらを使用してサウンドを再生する方法がわかりませんでした。

4

1 に答える 1

2

間違った NSSound コンストラクターを使用していることがすべてです。

new MonoMac.AppKit.NSSound("alarm.wav")(から暗黙的にNSDataキャストされたstring) が必要な場合は、 を使用しますnew NSSound(string, bool)falseおそらく、2 番目のパラメーターを渡したいと思います。

これが機能することを確認するために、(デフォルトの MonoMac プロジェクトに基づいて) 簡単なテスト プロジェクトをまとめました。

public override void FinishedLaunching (NSObject notification)
{
  mainWindowController = new MainWindowController ();
  mainWindowController.Window.MakeKeyAndOrderFront (this);

  // Only lines added
  var sound = new NSSound("/Users/kevinmontrose/Desktop/bear_growl_y.wav", byRef: false);

  sound.Play();
}
于 2012-07-22T02:16:20.127 に答える