@@ -40,6 +40,29 @@ class PostAmpAudioSink(
4040) : ForwardingAudioSink(sink), AudioSystemHiddenApi.VolumeChangeListener {
4141 companion object {
4242 private const val TAG = " PostAmpAudioSink"
43+ val isVolumeAvailable by lazy {
44+ try {
45+ Volume .isAvailable()
46+ } catch (e: Throwable ) {
47+ Log .e(TAG , " failed to check if volume is available" , e)
48+ false
49+ }
50+ }
51+ val isDpeAvailable by lazy {
52+ try {
53+ if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .P ) {
54+ ReflectionAudioEffect .isEffectTypeAvailable(
55+ AudioEffect .EFFECT_TYPE_DYNAMICS_PROCESSING ,
56+ ReflectionAudioEffect .EFFECT_TYPE_NULL
57+ )
58+ } else {
59+ false
60+ }
61+ } catch (e: Throwable ) {
62+ Log .e(TAG , " failed to check if DPE is available" , e)
63+ false
64+ }
65+ }
4366 }
4467
4568 private val receiver = object : BroadcastReceiver () {
@@ -57,29 +80,6 @@ class PostAmpAudioSink(
5780 }
5881 private val audioManager = context.getSystemService<AudioManager >()!!
5982 private var handler: Handler ? = null
60- private val isVolumeAvailable by lazy {
61- try {
62- Volume .isAvailable()
63- } catch (e: Throwable ) {
64- Log .e(TAG , " failed to check if volume is available" , e)
65- false
66- }
67- }
68- private val isDpeAvailable by lazy {
69- try {
70- if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .P ) {
71- ReflectionAudioEffect .isEffectTypeAvailable(
72- AudioEffect .EFFECT_TYPE_DYNAMICS_PROCESSING ,
73- ReflectionAudioEffect .EFFECT_TYPE_NULL
74- )
75- } else {
76- false
77- }
78- } catch (e: Throwable ) {
79- Log .e(TAG , " failed to check if DPE is available" , e)
80- false
81- }
82- }
8383 private val isDpeOffloadable by lazy {
8484 try {
8585 if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .P ) {
0 commit comments