需要添加直播接口

This commit is contained in:
cbb
2026-01-12 17:52:15 +08:00
parent 83fec2617c
commit 13af9eb303
281 changed files with 313157 additions and 104 deletions

View File

@@ -0,0 +1,141 @@
package uts.sdk.modules.atomicx.kotlin
import android.content.Context
import android.util.Log
import android.view.View
import android.view.ViewGroup
import android.widget.FrameLayout
import com.opensource.svgaplayer.SVGACallback
import com.opensource.svgaplayer.SVGAImageView
import com.opensource.svgaplayer.SVGAParser
import com.opensource.svgaplayer.SVGAVideoEntity
import io.dcloud.uts.console
import java.io.File
import java.io.FileInputStream
import java.io.FileNotFoundException
import java.io.InputStream
import java.net.URL
class SVGAAnimationView(context: Context) : FrameLayout(context), SVGACallback {
private val svgaParser: SVGAParser
private val svgaImageView: SVGAImageView
private var svgaCallback: SVGACallback? = null
init {
svgaImageView = SVGAImageView(context)
val lp: FrameLayout.LayoutParams =
FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT)
addView(svgaImageView, lp)
svgaImageView.loops = 1
svgaImageView.callback = this
svgaParser = SVGAParser.shareParser()
svgaParser.init(context)
}
fun setCallback(callback: SVGACallback) {
svgaCallback = callback
}
// val playUrl = "/sdcard/Android/data/uni.app.UNIFA697C8/images/sports_car.svga"
fun startAnimation(playUrl: String) {
console.log("startAnimation playUrl: ", playUrl)
// Logger.e(TAG + "startAnimation, playUrl: $playUrl")
if (playUrl.isNullOrEmpty()) {
console.error("startAnimation, playUrl is empty")
// Logger.e(TAG + "startAnimation, playUrl is empty")
svgaCallback?.onFinished()
return
}
if (playUrl.endsWith(".svga") && isUrl(playUrl)) {
decodeFromURL(playUrl)
} else {
decodeFromInputStream(playUrl)
}
}
private fun isUrl(url: String): Boolean = url.startsWith("http") || url.startsWith("https")
fun stopAnimation() {
svgaImageView.stopAnimation(true)
}
private fun decodeFromURL(playUrl: String) {
console.log("decodeFromURL, playUrl: ", playUrl)
svgaParser.decodeFromURL(URL(playUrl), object : SVGAParser.ParseCompletion {
override fun onComplete(videoItem: SVGAVideoEntity) {
console.log("decodeFromURL onComplete, videoItem: ", videoItem)
// Logger.i(TAG + "startAnimation decodeFromURL, videoItem: $videoItem")
svgaImageView.setVisibility(View.VISIBLE)
svgaImageView.setVideoItem(videoItem)
svgaImageView.startAnimation()
}
override fun onError() {
console.log("===== decodeFromURL failed")
// Logger.e(TAG + "decodeFromURL failed, playUrl: $playUrl")
svgaCallback?.onFinished()
}
},)
}
private fun decodeFromInputStream(filePath: String) {
console.log("decodeFromInputStream, filePath: ", filePath)
val stream = openInputStream(filePath)
if (stream == null) {
console.log("decodeFromInputStream, filePath is null")
// Logger.e(TAG + "decodeFromInputStream failed, filePath is null")
return
}
svgaParser.decodeFromInputStream(stream, "", object : SVGAParser.ParseCompletion {
override fun onComplete(videoItem: SVGAVideoEntity) {
console.log("======startAnimation decodeFromInputStream start: ", videoItem)
// Logger.i(TAG + "decodeFromInputStream start: videoItem: $videoItem")
svgaImageView.setVisibility(VISIBLE)
svgaImageView.setVideoItem(videoItem)
svgaImageView.startAnimation()
}
override fun onError() {
console.log("======decodeFromInputStream parse failed: ", filePath)
// Logger.e(TAG + "decodeFromInputStream parse failed, filePath: $filePath")
svgaCallback?.onFinished()
}
}, true, null, "", )
}
override fun onFinished() {
console.log("SVGAAnimationView onFinished")
// Logger.i(TAG + "onFinished")
svgaImageView.setVisibility(View.GONE)
svgaCallback?.onFinished()
}
override fun onPause() {
}
override fun onRepeat() {
}
override fun onStep(frame: Int, percentage: Double) {
}
private fun openInputStream(path: String): InputStream? {
try {
val file = File(path)
if (file.exists()) {
return FileInputStream(file)
}
} catch (e: FileNotFoundException) {
Log.i(TAG, " " + e.localizedMessage)
}
return null
}
companion object {
private const val TAG = "UTS-SVGAAnimationView: "
}
}