2022-07-05 00:43:04 +00:00
|
|
|
package com.massive
|
|
|
|
|
|
|
|
import android.app.Service
|
2022-09-19 01:23:00 +00:00
|
|
|
import android.content.Context
|
2022-07-05 00:43:04 +00:00
|
|
|
import android.media.MediaPlayer.OnPreparedListener
|
|
|
|
import android.media.MediaPlayer
|
|
|
|
import androidx.annotation.RequiresApi
|
|
|
|
import android.content.Intent
|
|
|
|
import android.media.AudioAttributes
|
2022-08-25 08:41:01 +00:00
|
|
|
import android.net.Uri
|
2022-09-19 01:23:00 +00:00
|
|
|
import android.os.*
|
2022-07-05 00:43:04 +00:00
|
|
|
|
|
|
|
class AlarmService : Service(), OnPreparedListener {
|
|
|
|
var mediaPlayer: MediaPlayer? = null
|
|
|
|
private var vibrator: Vibrator? = null
|
|
|
|
|
|
|
|
@RequiresApi(api = Build.VERSION_CODES.O)
|
|
|
|
override fun onStartCommand(intent: Intent, flags: Int, startId: Int): Int {
|
2022-07-06 04:27:36 +00:00
|
|
|
if (intent.action == "stop") {
|
|
|
|
onDestroy()
|
|
|
|
return START_STICKY
|
|
|
|
}
|
2022-08-25 08:41:01 +00:00
|
|
|
val sound = intent.extras?.getString("sound")
|
|
|
|
if (sound == null) {
|
|
|
|
mediaPlayer = MediaPlayer.create(applicationContext, R.raw.argon)
|
|
|
|
mediaPlayer?.start()
|
|
|
|
mediaPlayer?.setOnCompletionListener { vibrator?.cancel() }
|
|
|
|
} else {
|
|
|
|
mediaPlayer = MediaPlayer().apply {
|
|
|
|
setAudioAttributes(
|
|
|
|
AudioAttributes.Builder()
|
|
|
|
.setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
|
|
|
|
.setUsage(AudioAttributes.USAGE_MEDIA)
|
|
|
|
.build()
|
|
|
|
)
|
|
|
|
setDataSource(applicationContext, Uri.parse(sound))
|
|
|
|
prepare()
|
|
|
|
start()
|
|
|
|
setOnCompletionListener { vibrator?.cancel() }
|
|
|
|
}
|
|
|
|
}
|
2022-07-05 00:43:04 +00:00
|
|
|
val pattern = longArrayOf(0, 300, 1300, 300, 1300, 300)
|
2022-09-19 01:23:00 +00:00
|
|
|
vibrator = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
|
|
|
|
val vibratorManager =
|
|
|
|
getSystemService(Context.VIBRATOR_MANAGER_SERVICE) as VibratorManager
|
|
|
|
vibratorManager.defaultVibrator
|
|
|
|
} else {
|
|
|
|
@Suppress("DEPRECATION")
|
|
|
|
getSystemService(VIBRATOR_SERVICE) as Vibrator
|
|
|
|
}
|
2022-07-05 00:43:04 +00:00
|
|
|
val audioAttributes = AudioAttributes.Builder()
|
|
|
|
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
|
|
|
|
.setUsage(AudioAttributes.USAGE_ALARM)
|
|
|
|
.build()
|
2022-08-20 04:37:59 +00:00
|
|
|
val vibrate = intent.extras!!.getBoolean("vibrate")
|
|
|
|
if (vibrate)
|
|
|
|
vibrator!!.vibrate(VibrationEffect.createWaveform(pattern, 1), audioAttributes)
|
2022-07-05 00:43:04 +00:00
|
|
|
return START_STICKY
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onBind(intent: Intent): IBinder? {
|
|
|
|
return null
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onPrepared(player: MediaPlayer) {
|
|
|
|
player.start()
|
|
|
|
}
|
|
|
|
|
|
|
|
override fun onDestroy() {
|
|
|
|
super.onDestroy()
|
2022-08-22 03:48:30 +00:00
|
|
|
mediaPlayer?.stop()
|
2022-07-05 00:43:04 +00:00
|
|
|
mediaPlayer?.release()
|
|
|
|
vibrator?.cancel()
|
|
|
|
}
|
|
|
|
}
|