package com.suno.android.common_analytics.providers import android.content.Context import android.media.AudioManager import com.suno.android.common_core_utils.SunoLogger import dagger.hilt.android.qualifiers.ApplicationContext import javax.inject.Inject import javax.inject.Singleton @Singleton class DeviceVolumeProvider @Inject constructor( loggerFactory: SunoLogger.Factory, @ApplicationContext private val context: Context, ) { private val logger = loggerFactory.create(this@DeviceVolumeProvider) private val audioManager by lazy { context.getSystemService(Context.AUDIO_SERVICE) as AudioManager } fun getCurrentStreamMusicVolume(): Float = runCatching { val currentVolume = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC) val maxVolume = audioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC) if (maxVolume > 0) currentVolume.toFloat() / maxVolume.toFloat() else 0f }.onFailure { logger.e(it) { "Error getting device stream music volume" } }.getOrDefault(0f) }