This commit is contained in:
HapeLee committed 2025-06-04 13:33:51 +08:00
1 parent b86d90021c
commit 6c0757c91b
972 files changed
+6885 -7321

No files matched your search

@@ -0,0 +1,70 @@
package io.legato.kazusa.help
import android.content.Context
import android.media.AudioManager
import android.media.MediaPlayer
import android.support.v4.media.session.PlaybackStateCompat
import androidx.media.AudioAttributesCompat
import androidx.media.AudioFocusRequestCompat
import androidx.media.AudioManagerCompat
import io.legato.kazusa.R
import splitties.systemservices.audioManager
object MediaHelp {
const val MEDIA_SESSION_ACTIONS = (PlaybackStateCompat.ACTION_SKIP_TO_PREVIOUS
or PlaybackStateCompat.ACTION_REWIND
or PlaybackStateCompat.ACTION_PLAY
or PlaybackStateCompat.ACTION_PLAY_PAUSE
or PlaybackStateCompat.ACTION_PAUSE
or PlaybackStateCompat.ACTION_STOP
or PlaybackStateCompat.ACTION_FAST_FORWARD
or PlaybackStateCompat.ACTION_SKIP_TO_NEXT
or PlaybackStateCompat.ACTION_SEEK_TO
or PlaybackStateCompat.ACTION_SET_RATING
or PlaybackStateCompat.ACTION_PLAY_FROM_MEDIA_ID
or PlaybackStateCompat.ACTION_PLAY_FROM_SEARCH
or PlaybackStateCompat.ACTION_SKIP_TO_QUEUE_ITEM
or PlaybackStateCompat.ACTION_PLAY_FROM_URI
or PlaybackStateCompat.ACTION_PREPARE
or PlaybackStateCompat.ACTION_PREPARE_FROM_MEDIA_ID
or PlaybackStateCompat.ACTION_PREPARE_FROM_SEARCH
or PlaybackStateCompat.ACTION_PREPARE_FROM_URI
or PlaybackStateCompat.ACTION_SET_REPEAT_MODE
or PlaybackStateCompat.ACTION_SET_SHUFFLE_MODE
or PlaybackStateCompat.ACTION_SET_CAPTIONING_ENABLED)
fun buildAudioFocusRequestCompat(
audioFocusChangeListener: AudioManager.OnAudioFocusChangeListener
): AudioFocusRequestCompat {
val mPlaybackAttributes = AudioAttributesCompat.Builder()
.setUsage(AudioAttributesCompat.USAGE_MEDIA)
.setContentType(AudioAttributesCompat.CONTENT_TYPE_MUSIC)
.build()
return AudioFocusRequestCompat.Builder(AudioManagerCompat.AUDIOFOCUS_GAIN)
.setAudioAttributes(mPlaybackAttributes)
.setOnAudioFocusChangeListener(audioFocusChangeListener)
.build()
}
/**
* @return 音频焦点
*/
fun requestFocus(focusRequest: AudioFocusRequestCompat): Boolean {
val request = AudioManagerCompat.requestAudioFocus(audioManager, focusRequest)
return request == AudioManager.AUDIOFOCUS_REQUEST_GRANTED
}
/**
* 播放静音音频,用来获取音频焦点
*/
fun playSilentSound(mContext: Context) {
kotlin.runCatching {
// Stupid Android 8 "Oreo" hack to make media buttons work
val mMediaPlayer = MediaPlayer.create(mContext, R.raw.silent_sound)
mMediaPlayer.setOnCompletionListener { mMediaPlayer.release() }
mMediaPlayer.start()
}
}
}