diff --git a/android/app/build.gradle b/android/app/build.gradle index c95fe6b1..5994b108 100644 --- a/android/app/build.gradle +++ b/android/app/build.gradle @@ -10,8 +10,8 @@ android { applicationId "com.audiobookshelf.app" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 7 - versionName "0.3.0-beta" + versionCode 8 + versionName "0.4.0-beta" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" aaptOptions { // Files and dirs to omit from the packaged assets dir, modified to accommodate modern web apps. diff --git a/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt b/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt index 677ffd5b..e2c0aa87 100644 --- a/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt +++ b/android/app/src/main/java/com/audiobookshelf/app/PlayerNotificationService.kt @@ -21,6 +21,7 @@ import com.bumptech.glide.load.engine.DiskCacheStrategy import com.bumptech.glide.request.RequestOptions import com.getcapacitor.JSObject import com.google.android.exoplayer2.* +import com.google.android.exoplayer2.audio.AudioAttributes import com.google.android.exoplayer2.ext.mediasession.MediaSessionConnector import com.google.android.exoplayer2.ext.mediasession.TimelineQueueNavigator import com.google.android.exoplayer2.source.hls.HlsMediaSource @@ -138,6 +139,10 @@ class PlayerNotificationService : Service() { simpleExoPlayerBuilder.setSeekBackIncrementMs(10000) simpleExoPlayerBuilder.setSeekForwardIncrementMs(10000) mPlayer = simpleExoPlayerBuilder.build() + mPlayer.setHandleAudioBecomingNoisy(true) + + var audioAttributes:AudioAttributes = AudioAttributes.Builder().setUsage(C.USAGE_MEDIA).setContentType(C.CONTENT_TYPE_SPEECH).build() + mPlayer.setAudioAttributes(audioAttributes, true) setPlayerListeners() diff --git a/components/app/StreamContainer.vue b/components/app/StreamContainer.vue index 327b4abf..2960cbf7 100644 --- a/components/app/StreamContainer.vue +++ b/components/app/StreamContainer.vue @@ -7,6 +7,9 @@

by {{ author }}

+
+ format_list_bulleted +
close
@@ -15,6 +18,7 @@
+ @@ -28,7 +32,8 @@ export default { stream: null, lastServerUpdateSentSeconds: 0, showPlaybackSpeedModal: false, - playbackSpeed: 1 + playbackSpeed: 1, + showChapterModal: false } }, computed: { @@ -56,6 +61,9 @@ export default { series() { return this.book ? this.book.series : '' }, + chapters() { + return this.streamAudiobook ? this.streamAudiobook.chapters || [] : [] + }, volumeNumber() { return this.book ? this.book.volumeNumber : '' }, @@ -81,6 +89,16 @@ export default { } }, methods: { + clickChapterBtn() { + if (!this.chapters.length) return + this.showChapterModal = true + }, + selectChapter(chapter) { + if (this.$refs.audioPlayerMini) { + this.$refs.audioPlayerMini.seek(chapter.start) + } + this.showChapterModal = false + }, async cancelStream() { const { value } = await Dialog.confirm({ title: 'Confirm', diff --git a/components/modals/ChaptersModal.vue b/components/modals/ChaptersModal.vue new file mode 100644 index 00000000..76790483 --- /dev/null +++ b/components/modals/ChaptersModal.vue @@ -0,0 +1,50 @@ + + + diff --git a/package.json b/package.json index c3c5bd1e..6607ec8b 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "audiobookshelf-app", - "version": "v0.3.0-beta", + "version": "v0.4.0-beta", "author": "advplyr", "scripts": { "dev": "nuxt --hostname localhost --port 1337",