Add deviceId to DeviceInfo for Android

This commit is contained in:
advplyr 2023-04-22 16:48:22 -05:00
parent e842de78dd
commit d9a6ec65df
3 changed files with 22 additions and 5 deletions

View file

@ -74,6 +74,7 @@ open class LibraryItemWrapper(var id:String) {
@JsonIgnoreProperties(ignoreUnknown = true) @JsonIgnoreProperties(ignoreUnknown = true)
data class DeviceInfo( data class DeviceInfo(
var deviceId:String,
var manufacturer:String, var manufacturer:String,
var model:String, var model:String,
var brand:String, var brand:String,

View file

@ -1,5 +1,6 @@
package com.audiobookshelf.app.player package com.audiobookshelf.app.player
import android.annotation.SuppressLint
import android.app.* import android.app.*
import android.appwidget.AppWidgetManager import android.appwidget.AppWidgetManager
import android.content.ComponentName import android.content.ComponentName
@ -16,6 +17,7 @@ import android.net.NetworkCapabilities
import android.net.NetworkRequest import android.net.NetworkRequest
import android.os.* import android.os.*
import android.provider.MediaStore import android.provider.MediaStore
import android.provider.Settings
import android.support.v4.media.MediaBrowserCompat import android.support.v4.media.MediaBrowserCompat
import android.support.v4.media.MediaDescriptionCompat import android.support.v4.media.MediaDescriptionCompat
import android.support.v4.media.MediaMetadataCompat import android.support.v4.media.MediaMetadataCompat
@ -31,7 +33,6 @@ import androidx.core.content.ContextCompat
import androidx.media.MediaBrowserServiceCompat import androidx.media.MediaBrowserServiceCompat
import androidx.media.utils.MediaConstants import androidx.media.utils.MediaConstants
import com.audiobookshelf.app.BuildConfig import com.audiobookshelf.app.BuildConfig
import com.audiobookshelf.app.MediaPlayerWidget
import com.audiobookshelf.app.R import com.audiobookshelf.app.R
import com.audiobookshelf.app.data.* import com.audiobookshelf.app.data.*
import com.audiobookshelf.app.data.DeviceInfo import com.audiobookshelf.app.data.DeviceInfo
@ -894,6 +895,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
return if(currentPlayer == castPlayer) PLAYER_CAST else PLAYER_EXO return if(currentPlayer == castPlayer) PLAYER_CAST else PLAYER_EXO
} }
@SuppressLint("HardwareIds")
private fun getDeviceInfo(): DeviceInfo { private fun getDeviceInfo(): DeviceInfo {
/* EXAMPLE /* EXAMPLE
manufacturer: Google manufacturer: Google
@ -902,7 +904,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
sdkVersion: 32 sdkVersion: 32
appVersion: 0.9.46-beta appVersion: 0.9.46-beta
*/ */
return DeviceInfo(Build.MANUFACTURER, Build.MODEL, Build.BRAND, Build.VERSION.SDK_INT, BuildConfig.VERSION_NAME) val deviceId = Settings.Secure.getString(ctx.contentResolver, Settings.Secure.ANDROID_ID)
return DeviceInfo(deviceId, Build.MANUFACTURER, Build.MODEL, Build.BRAND, Build.VERSION.SDK_INT, BuildConfig.VERSION_NAME)
} }
private val deviceSettings get() = DeviceManager.deviceData.deviceSettings ?: DeviceSettings.default() private val deviceSettings get() = DeviceManager.deviceData.deviceSettings ?: DeviceSettings.default()

View file

@ -1,4 +1,5 @@
import { registerPlugin, WebPlugin } from '@capacitor/core'; import { registerPlugin, WebPlugin } from '@capacitor/core'
import { nanoid } from 'nanoid'
const { PlayerState } = require('../constants') const { PlayerState } = require('../constants')
var $axios = null var $axios = null
@ -42,6 +43,15 @@ class AbsAudioPlayerWeb extends WebPlugin {
return this.player && !this.player.paused return this.player && !this.player.paused
} }
getDeviceId() {
let deviceId = localStorage.getItem('absDeviceId')
if (!deviceId) {
deviceId = nanoid()
localStorage.setItem('absDeviceId', deviceId)
}
return deviceId
}
// PluginMethod // PluginMethod
async prepareLibraryItem({ libraryItemId, episodeId, playWhenReady, startTime }) { async prepareLibraryItem({ libraryItemId, episodeId, playWhenReady, startTime }) {
console.log('[AbsAudioPlayer] Prepare library item', libraryItemId) console.log('[AbsAudioPlayer] Prepare library item', libraryItemId)
@ -49,8 +59,11 @@ class AbsAudioPlayerWeb extends WebPlugin {
if (libraryItemId.startsWith('local_')) { if (libraryItemId.startsWith('local_')) {
// Fetch Local - local not implemented on web // Fetch Local - local not implemented on web
} else { } else {
var route = !episodeId ? `/api/items/${libraryItemId}/play` : `/api/items/${libraryItemId}/play/${episodeId}` const route = !episodeId ? `/api/items/${libraryItemId}/play` : `/api/items/${libraryItemId}/play/${episodeId}`
var playbackSession = await $axios.$post(route, { mediaPlayer: 'html5-mobile', forceDirectPlay: true }) const deviceInfo = {
deviceId: this.getDeviceId()
}
const playbackSession = await $axios.$post(route, { deviceInfo, mediaPlayer: 'html5-mobile', forceDirectPlay: true })
if (playbackSession) { if (playbackSession) {
if (startTime !== undefined && startTime !== null) playbackSession.currentTime = startTime if (startTime !== undefined && startTime !== null) playbackSession.currentTime = startTime
this.setAudioPlayer(playbackSession, playWhenReady) this.setAudioPlayer(playbackSession, playWhenReady)