From 987058f55d10151a6a4720f1f1135225296a0800 Mon Sep 17 00:00:00 2001 From: Julian Winkler Date: Sun, 12 Nov 2023 12:00:06 +0100 Subject: [PATCH] implement AudioTrack.pause() --- src/api-impl-jni/audio/android_media_AudioTrack.c | 7 +++++++ .../generated_headers/android_media_AudioTrack.h | 8 ++++++++ src/api-impl/android/media/AudioTrack.java | 2 ++ 3 files changed, 17 insertions(+) diff --git a/src/api-impl-jni/audio/android_media_AudioTrack.c b/src/api-impl-jni/audio/android_media_AudioTrack.c index 55751abc..d5785ff7 100644 --- a/src/api-impl-jni/audio/android_media_AudioTrack.c +++ b/src/api-impl-jni/audio/android_media_AudioTrack.c @@ -213,6 +213,7 @@ JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1play(JNIEnv *env, j snd_async_add_pcm_handler(&pcm_callback, pcm_handle, periodic_update_callback, callback_data); snd_pcm_start(pcm_handle); + snd_pcm_pause(pcm_handle, FALSE); /*--↑*/ } @@ -241,3 +242,9 @@ JNIEXPORT jint JNICALL Java_android_media_AudioTrack_native_1write(JNIEnv *env, _RELEASE_BYTE_ARRAY_ELEMENTS(audioData, buffer); return frames_written; } + +JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1pause(JNIEnv *env, jobject this) +{ + snd_pcm_t *pcm_handle = _PTR(_GET_LONG_FIELD(this, "pcm_handle")); + snd_pcm_pause(pcm_handle, TRUE); +} diff --git a/src/api-impl-jni/generated_headers/android_media_AudioTrack.h b/src/api-impl-jni/generated_headers/android_media_AudioTrack.h index ff4a91dd..d2a1dc95 100644 --- a/src/api-impl-jni/generated_headers/android_media_AudioTrack.h +++ b/src/api-impl-jni/generated_headers/android_media_AudioTrack.h @@ -37,6 +37,14 @@ JNIEXPORT jint JNICALL Java_android_media_AudioTrack_getMinBufferSize JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1play (JNIEnv *, jobject); +/* + * Class: android_media_AudioTrack + * Method: native_pause + * Signature: ()V + */ +JNIEXPORT void JNICALL Java_android_media_AudioTrack_native_1pause + (JNIEnv *, jobject); + /* * Class: android_media_AudioTrack * Method: native_write diff --git a/src/api-impl/android/media/AudioTrack.java b/src/api-impl/android/media/AudioTrack.java index 0459b3fb..e6ffa502 100644 --- a/src/api-impl/android/media/AudioTrack.java +++ b/src/api-impl/android/media/AudioTrack.java @@ -126,6 +126,7 @@ public class AudioTrack { public void pause() { System.out.println("calling AudioTrack.pause()\n"); playbackState = PLAYSTATE_PAUSED; + native_pause(); } public int getPlaybackHeadPosition() { @@ -133,5 +134,6 @@ public class AudioTrack { } public native void native_play(); + public native void native_pause(); private native int native_write(byte[] audioData, int offsetInBytes, int sizeInBytes); }