# Media Player from Java, used to play long sounds or musics, not simultaneously
# This is a low-level class, use `MediaPlater` instead
private extern class NativeMediaPlayer in "Java" `{ android.media.MediaPlayer `}
super JavaObject
new in "Java" `{
MediaPlayer mp = new MediaPlayer();
mp.setAudioStreamType(AudioManager.STREAM_MUSIC);
return mp;
`}
fun start in "Java" `{ self.start(); `}
fun prepare in "Java" `{
try {
self.prepare();
}catch(Exception e) {
Log.e("Error preparing the Media Player", e.getMessage());
e.printStackTrace();
}
`}
new create(context: NativeActivity, id: Int): NativeMediaPlayer
in "Java" `{
try {
return MediaPlayer.create(context, (int)id);
}catch(Exception e) {
return null;
}
`}
fun pause in "Java" `{ self.pause(); `}
fun stop in "Java" `{ self.stop(); `}
fun playing: Bool in "Java" `{ return self.isPlaying(); `}
fun release in "Java" `{ self.release(); `}
fun duration: Int in "Java" `{ return self.getDuration(); `}
fun looping: Bool in "Java" `{ return self.isLooping(); `}
fun looping=(b: Bool) in "Java" `{ self.setLooping(b); `}
fun volume=(vol: Float) in "Java" `{ self.setVolume((float)vol, (float)vol); `}
fun both_volume(left_volume, right_volume: Float) in "Java" `{ self.setVolume((float)left_volume, (float)right_volume); `}
fun stream_type=(stream_type: Int) in "Java" `{ self.setAudioStreamType((int)stream_type); `}
fun data_source_fd(fd: NativeFileDescriptor, start_offset, length: Int): Int in "Java" `{
try {
self.setDataSource(fd, start_offset, length);
return 1;
}catch(Exception e) {
return 0;
}
`}
fun data_source_path(path: JavaString): Int in "Java" `{
try {
self.setDataSource(path);
return 1;
}catch(Exception e) {
Log.e("Error loading the Media Player", e.getMessage());
return 0;
}
`}
fun reset in "Java" `{ self.reset(); `}
# HACK for bug #845
redef fun new_global_ref import sys, Sys.jni_env `{
Sys sys = NativeMediaPlayer_sys(self);
JNIEnv *env = Sys_jni_env(sys);
return (*env)->NewGlobalRef(env, self);
`}
end
lib/android/audio.nit:98,1--162,3