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)
data class DeviceInfo(
var deviceId:String,
var manufacturer:String,
var model:String,
var brand:String,

View file

@ -1,5 +1,6 @@
package com.audiobookshelf.app.player
import android.annotation.SuppressLint
import android.app.*
import android.appwidget.AppWidgetManager
import android.content.ComponentName
@ -16,6 +17,7 @@ import android.net.NetworkCapabilities
import android.net.NetworkRequest
import android.os.*
import android.provider.MediaStore
import android.provider.Settings
import android.support.v4.media.MediaBrowserCompat
import android.support.v4.media.MediaDescriptionCompat
import android.support.v4.media.MediaMetadataCompat
@ -31,7 +33,6 @@ import androidx.core.content.ContextCompat
import androidx.media.MediaBrowserServiceCompat
import androidx.media.utils.MediaConstants
import com.audiobookshelf.app.BuildConfig
import com.audiobookshelf.app.MediaPlayerWidget
import com.audiobookshelf.app.R
import com.audiobookshelf.app.data.*
import com.audiobookshelf.app.data.DeviceInfo
@ -894,6 +895,7 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
return if(currentPlayer == castPlayer) PLAYER_CAST else PLAYER_EXO
}
@SuppressLint("HardwareIds")
private fun getDeviceInfo(): DeviceInfo {
/* EXAMPLE
manufacturer: Google
@ -902,7 +904,8 @@ class PlayerNotificationService : MediaBrowserServiceCompat() {
sdkVersion: 32
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()

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