Newer
Older
Endoscope / app / src / main / java / com / casic / endoscope / service / VideoTranscodeService.kt
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()
    }
}