2012-02-28 4 views
1

モノドロイドで新しいオーディオコンテキストを作成しようとすると、openal32.dllが見つからないことがわかります。 OpenTKの一部としてopenalが含まれています。モノラルでOpenALを使用してオーディオコンテキストを作成するにはどうすればよいですか?

私は間違ったことをしているとしか思えませんが、私はWindowsの前でOpenTK/OpenALを使っていて、同様のコードでうまく管理しています。とにかくここ

は、問題のあるコードです:

 public Audio() 
    { 
     if (Loaded == false) 
     { 
      Loaded = true; 
      try 
      { 
       try {Console.WriteLine ("Current: " + AudioContext.CurrentContext.ToString());} catch { Console.WriteLine ("no current context"); } 
       try {Console.WriteLine ("Default: " + AudioContext.DefaultDevice);} catch { Console.WriteLine ("no default device"); } 

       Context = new AudioContext(); 
       ValidContext = true; //we have a valid audio context! 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine ("Loading the audio context failed."); 
       Console.WriteLine (ex.ToString()); 
       Console.WriteLine (ex.Message); 
       ValidContext = false; //Loading the audio context failed :(
      } 
     } 
    } 

そして、ここでは、出力されます。

I/monodroid-gc(24762): environment supports jni NewWeakGlobalRef 

D/AndroidGameView(24762): SurfaceCreated 

D/libEGL (24762): egl.cfg not found, using default config 

D/libEGL (24762): loaded /system/lib/egl/libGLES_android.so 

I/mono-stdout(24762): no current context 

I/mono-stdout(24762): no default device 

I/mono-stdout(24762): Loading the audio context failed. 

I/mono-stdout(24762): System.TypeInitializationException: An exception was thrown by the type initializer for OpenTK.Audio.AudioContext ---> System.TypeInitializationException: An exception was thrown by the type initializer for OpenTK.Audio.AudioDeviceEnumerator ---> System.DllNotFoundException: openal32.dll 

I/mono-stdout(24762): at (wrapper managed-to-native) OpenTK.Audio.OpenAL.Alc:MakeContextCurrent (intptr) 

I/mono-stdout(24762): at OpenTK.Audio.OpenAL.Alc.MakeContextCurrent (ContextHandle context) [0x00000] in <filename unknown>:0 

I/mono-stdout(24762): at OpenTK.Audio.AudioDeviceEnumerator..cctor() [0x00000] in <filename unknown>:0 

I/mono-stdout(24762): --- End of inner exception stack trace --- 

I/mono-stdout(24762): at OpenTK.Audio.AudioContext..cctor() [0x00000] in <filename unknown>:0 

I/mono-stdout(24762): --- End of inner exception stack trace --- 

I/mono-stdout(24762): at Hardware.Audio..ctor() [0x00000] in <filename unknown>:0 

I/mono-stdout(24762): An exception was thrown by the type initializer for OpenTK.Audio.AudioContext 

I/ARMAssembler(24762): generated scanline__00000177:03545444_00009001_00000000 [159 ipp] (215 ins) at [0x4fc138:0x4fc494] in 4168381 ns 

答えて

1

openal32.dllはOpenTKの一部として含まれていません。 OpenTKはOpenALのバインディングを持っています。グラフィックカードドライバの一部として含まれるopengl32.dllと同様に、openal32.dllはオーディオカードドライバ(またはそのソフトウェア実装)を介してインストールする必要があります。あなたは、Android向けのOpenALのソフトウェア実装をコンパイルする必要があるように、クイック検索後

は、それが見えます:http://pielot.org/2010/12/14/openal-on-android/

編集:Androidは新しいOpenSL ESを使用することを好むように見えます。少しでも時間があれば、OpenTKのジェネレータがOpenSL ESバインディングを生成できるようにすることができます。

This other StackOverflow questionには、OpenSLを使用するためのその他のオプションがいくつかあります。

+0

助けてくれてありがとう、私はOpenALをコンパイルしようとすることに目を向けます。 – Danny