package com.casic.endoscope.service import android.app.Service import android.content.Intent import android.os.IBinder import android.util.Log import com.casic.endoscope.extensions.transcodeVideo import com.casic.endoscope.utils.ProjectConstant import java.util.Timer import java.util.TimerTask class VideoTranscodeService : Service() { private val kTag = "VideoTranscodeService" private var timer: Timer? = null override fun onBind(intent: Intent?): IBinder? { return null } override fun onCreate() { super.onCreate() timer = Timer() Log.d(kTag, "onCreate => $kTag") } /** * 执行该方法后,Service 会启动并在后台无限期执行 * 需要调用 stopSelf() 或 stopService() 来结束Service * */ override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int { //定时遍历缓存,看是否有新的视频被录制 timer?.schedule(object : TimerTask() { override fun run() { //开始后台转码 if (!ProjectConstant.isUnderDecodingVideo && ProjectConstant.VIDEO_PATH_STACK.isNotEmpty()) { ProjectConstant.isUnderDecodingVideo = true ProjectConstant.VIDEO_PATH_STACK.pop().transcodeVideo(kTag) } else { Log.d(kTag, "run: 转码中......") } } }, 0, 1000) return START_NOT_STICKY } override fun onDestroy() { super.onDestroy() Log.d(kTag, "onDestroy => $kTag") timer?.cancel() } }