package com.badlogic.gdx.backends.ios;
import com.badlogic.gdx.Audio;
+import com.badlogic.gdx.Gdx;\r
import com.badlogic.gdx.audio.AudioDevice;
import com.badlogic.gdx.audio.AudioRecorder;
import com.badlogic.gdx.audio.Music;
import com.badlogic.gdx.audio.Sound;
import com.badlogic.gdx.files.FileHandle;
+import com.badlogic.gdx.utils.GdxRuntimeException;\r
+\r
+import cli.MonoTouch.AVFoundation.AVAudioPlayer;\r
+import cli.MonoTouch.Foundation.NSData;\r
+import cli.MonoTouch.Foundation.NSError;\r
+import cli.MonoTouch.Foundation.NSUrl;\r
public class IOSAudio implements Audio {
}
@Override
- public Sound newSound(FileHandle fileHandle) {
- return new IOSSound();
+ public Sound newSound(FileHandle fileHandle) {\r
+ // verify file format\r
+ if (fileHandle.extension().equalsIgnoreCase("ogg")) { \r
+ // Ogg is not supported on iOS (return a sound object that does nothing)\r
+ Gdx.app.error("IOSAudio", "Audio format .ogg is not supported on iOS. Cannot load: " + fileHandle.path());\r
+ return new Sound() {\r
+ @Override\r
+ public long play () {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public long play (float volume) {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public long play (float volume, float pitch, float pan) {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public long loop () {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public long loop (float volume) {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public long loop (float volume, float pitch, float pan) {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public void stop () {\r
+ }\r
+ @Override\r
+ public void dispose () {\r
+ }\r
+ @Override\r
+ public void stop (long soundId) {\r
+ }\r
+ @Override\r
+ public void setLooping (long soundId, boolean looping) {\r
+ }\r
+ @Override\r
+ public void setPitch (long soundId, float pitch) {\r
+ }\r
+ @Override\r
+ public void setVolume (long soundId, float volume) {\r
+ }\r
+ @Override\r
+ public void setPan (long soundId, float pan, float volume) {\r
+ } \r
+ };\r
+ }\r
+
+ // create audio player - from byte array\r
+ NSError[] error = new NSError[1];\r
+ NSData data = NSData.FromArray(fileHandle.readBytes());\r
+ AVAudioPlayer player = AVAudioPlayer.FromData(data, error);\r
+ if (error[0] == null) {\r
+ // no error: return the music object\r
+ return new IOSSound(player);\r
+ }\r
+ else {\r
+ // throw an exception\r
+ throw new GdxRuntimeException("Error opening file at " + fileHandle.path() + ": " + error[0].ToString());\r
+ }\r
}
@Override
- public Music newMusic(FileHandle file) {
- return new IOSMusic();
+ public Music newMusic(FileHandle fileHandle) {\r
+ // verify file format\r
+ if (fileHandle.extension().equalsIgnoreCase("ogg")) { \r
+ // Ogg is not supported on iOS (return a music object that does nothing)\r
+ Gdx.app.error("IOSAudio", "Audio format .ogg is not supported on iOS. Cannot load: " + fileHandle.path());\r
+ return new Music() {\r
+ @Override\r
+ public void play () {\r
+ }\r
+ @Override\r
+ public void pause () {\r
+ }\r
+ @Override\r
+ public void stop () {\r
+ }\r
+ @Override\r
+ public boolean isPlaying () {\r
+ return false;\r
+ }\r
+ @Override\r
+ public void setLooping (boolean isLooping) {\r
+ }\r
+ @Override\r
+ public boolean isLooping () {\r
+ return false;\r
+ }\r
+ @Override\r
+ public void setVolume (float volume) {\r
+ }\r
+ @Override\r
+ public float getPosition () {\r
+ return 0;\r
+ }\r
+ @Override\r
+ public void dispose () {\r
+ } \r
+ };\r
+ }\r
+ \r
+ // create audio player - from file path\r
+ NSError[] error = new NSError[1];\r
+ AVAudioPlayer player = AVAudioPlayer.FromUrl(NSUrl.FromFilename(fileHandle.path()), error);\r
+ if (error[0] == null) {\r
+ // no error: return the music object\r
+ return new IOSMusic(player);\r
+ }\r
+ else {\r
+ // throw an exception\r
+ throw new GdxRuntimeException("Error opening file at " + fileHandle.path() + ": " + error[0].ToString());\r
+ }\r
}
-
}
\ No newline at end of file
******************************************************************************/
package com.badlogic.gdx.backends.ios;
+import cli.MonoTouch.AVFoundation.AVAudioPlayer;\r
+\r
import com.badlogic.gdx.audio.Music;
public class IOSMusic implements Music {
-
+\r
+ private AVAudioPlayer player;\r
+ \r
+ \r
+ public IOSMusic(AVAudioPlayer player) {\r
+ this.player = player;\r
+ }\r
+
@Override
public void play() {
- // TODO Auto-generated method stub
-
+ player.Play();
}
@Override
public void pause() {
- // TODO Auto-generated method stub
-
+ player.Pause();
}
@Override
public void stop() {
- // TODO Auto-generated method stub
-
+ player.Stop();
}
@Override
public boolean isPlaying() {
- // TODO Auto-generated method stub
- return false;
+ return player.get_Playing();
}
@Override
public void setLooping(boolean isLooping) {
- // TODO Auto-generated method stub
-
+ // TODO Auto-generated method stub
}
@Override
@Override
public void setVolume(float volume) {
- // TODO Auto-generated method stub
-
+ player.set_Volume(volume);
}
@Override
@Override
public void dispose() {
- // TODO Auto-generated method stub
-
+ player.Dispose();
}
-
}
\ No newline at end of file
******************************************************************************/
package com.badlogic.gdx.backends.ios;
+import cli.MonoTouch.AVFoundation.AVAudioPlayer;\r
+\r
import com.badlogic.gdx.audio.Sound;
public class IOSSound implements Sound {
+\r
+ private AVAudioPlayer player;\r
+\r
+ \r
+ public IOSSound(AVAudioPlayer player) {\r
+ this.player = player;\r
+ }\r
@Override
- public long play() {
- // TODO Auto-generated method stub
- return 0;
+ public long play() {\r
+ return play(1.0f);
}
@Override
- public long play(float volume) {
- // TODO Auto-generated method stub
- return 0;
+ public long play(float volume) {\r
+ return play(volume, 1.0f, 0.5f);
}
@Override
- public long play(float volume, float pitch, float pan) {
+ public long play(float volume, float pitch, float pan) {\r
+ player.set_Volume(volume);\r
+ player.set_Pan(pan);\r
+ player.Play();\r
+
// TODO Auto-generated method stub
return 0;
}
@Override
public void stop() {
- // TODO Auto-generated method stub
-
+ player.Stop();
}
@Override
public void dispose() {
- // TODO Auto-generated method stub
-
+ player.Dispose();
}
@Override
// TODO Auto-generated method stub
}
-
}
\ No newline at end of file