视频播放2
This commit is contained in:
@@ -1,16 +1,25 @@
|
||||
package com.example.defenseapplication.liveVideo
|
||||
|
||||
import android.content.res.Configuration
|
||||
import android.graphics.Color
|
||||
import android.os.Bundle
|
||||
import android.util.Log
|
||||
import android.view.View
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.Toast
|
||||
import androidx.activity.OnBackPressedCallback
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import chuangyuan.ycj.videolibrary.listener.VideoInfoListener
|
||||
import chuangyuan.ycj.videolibrary.video.ExoUserPlayer
|
||||
import chuangyuan.ycj.videolibrary.video.VideoPlayerManager
|
||||
import com.example.defenseapplication.R
|
||||
import com.example.defenseapplication.adapter.AlarmLogAdapter
|
||||
import com.example.defenseapplication.databinding.AlarmLogActivityBinding
|
||||
import com.gyf.immersionbar.ImmersionBar
|
||||
import java.util.*
|
||||
import com.bigkoo.pickerview.builder.TimePickerBuilder
|
||||
import com.bigkoo.pickerview.listener.OnTimeSelectListener
|
||||
import com.example.defenseapplication.R
|
||||
|
||||
//告警记录
|
||||
class AlarmLogActivity : AppCompatActivity() {
|
||||
@@ -18,6 +27,7 @@ class AlarmLogActivity : AppCompatActivity() {
|
||||
private lateinit var calendar: Calendar
|
||||
private var adapter: AlarmLogAdapter? = null
|
||||
private val alarmList = mutableListOf<String>()
|
||||
private lateinit var exoPlayerManager: ExoUserPlayer
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
@@ -25,14 +35,65 @@ class AlarmLogActivity : AppCompatActivity() {
|
||||
setContentView(binding.root)
|
||||
ImmersionBar.with(this)
|
||||
.statusBarDarkFont(true)
|
||||
.titleBar(binding.topBar)
|
||||
.titleBar(binding.exoPlayContextId)
|
||||
.init()
|
||||
|
||||
calendar = Calendar.getInstance()
|
||||
updateDateDisplay()
|
||||
initVideoPlayer()
|
||||
initRecyclerView()
|
||||
loadAlarmList()
|
||||
initListener()
|
||||
|
||||
onBackPressedDispatcher.addCallback(this, object : OnBackPressedCallback(true) {
|
||||
override fun handleOnBackPressed() {
|
||||
if (exoPlayerManager.onBackPressed()) {
|
||||
return
|
||||
}
|
||||
finish()
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
private fun dpToPx(dp: Int): Int {
|
||||
val density = resources.displayMetrics.density
|
||||
return (dp * density).toInt()
|
||||
}
|
||||
|
||||
private fun initVideoPlayer() {
|
||||
val videoPlayerView = binding.exoPlayContextId
|
||||
|
||||
exoPlayerManager = VideoPlayerManager.Builder(VideoPlayerManager.TYPE_PLAY_GESTURE, videoPlayerView)
|
||||
.setPlayUri("https://media.w3.org/2010/05/sintel/trailer.mp4")
|
||||
.setPosition(0)
|
||||
.addVideoInfoListener(object : VideoInfoListener {
|
||||
override fun onPlayStart(p0: Long) {
|
||||
Log.d("AlarmLogActivity", "视频开始播放")
|
||||
}
|
||||
|
||||
override fun onLoadingChanged() {
|
||||
// 视频加载状态变化
|
||||
}
|
||||
|
||||
override fun onPlayerError(p0: com.google.android.exoplayer2.ExoPlaybackException?) {
|
||||
Toast.makeText(this@AlarmLogActivity, "播放失败", Toast.LENGTH_SHORT).show()
|
||||
}
|
||||
|
||||
override fun onPlayEnd() {
|
||||
Log.d("AlarmLogActivity", "播放结束")
|
||||
}
|
||||
|
||||
override fun isPlaying(p0: Boolean) {
|
||||
// p0 表示当前是否正在播放
|
||||
}
|
||||
|
||||
fun onRepeatModeChanged(p0: Int) {
|
||||
// 循环模式改变时的回调
|
||||
}
|
||||
})
|
||||
.create()
|
||||
|
||||
exoPlayerManager.startPlayer()
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
@@ -58,14 +119,52 @@ class AlarmLogActivity : AppCompatActivity() {
|
||||
}
|
||||
|
||||
private fun initListener() {
|
||||
binding.btnBack.setOnClickListener {
|
||||
finish()
|
||||
}
|
||||
binding.expandImg.setOnClickListener {
|
||||
showDatePicker()
|
||||
}
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
exoPlayerManager.onResume()
|
||||
}
|
||||
|
||||
override fun onPause() {
|
||||
super.onPause()
|
||||
exoPlayerManager.onPause()
|
||||
}
|
||||
|
||||
override fun onDestroy() {
|
||||
super.onDestroy()
|
||||
exoPlayerManager.onDestroy()
|
||||
}
|
||||
|
||||
override fun onConfigurationChanged(newConfig: Configuration) {
|
||||
super.onConfigurationChanged(newConfig)
|
||||
|
||||
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
|
||||
// 进入横屏(全屏)模式
|
||||
binding.titleLayout.visibility = View.GONE
|
||||
binding.alarmListRecyclerView.visibility = View.GONE
|
||||
|
||||
val params = binding.exoPlayContextId.layoutParams
|
||||
params.width = LinearLayout.LayoutParams.MATCH_PARENT
|
||||
params.height = LinearLayout.LayoutParams.MATCH_PARENT
|
||||
binding.exoPlayContextId.layoutParams = params
|
||||
} else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
|
||||
// 进入竖屏(非全屏)模式
|
||||
binding.titleLayout.visibility = View.VISIBLE
|
||||
binding.alarmListRecyclerView.visibility = View.VISIBLE
|
||||
|
||||
val params = binding.exoPlayContextId.layoutParams
|
||||
params.width = LinearLayout.LayoutParams.MATCH_PARENT
|
||||
params.height = dpToPx(250)
|
||||
binding.exoPlayContextId.layoutParams = params
|
||||
}
|
||||
|
||||
exoPlayerManager.onConfigurationChanged(newConfig)
|
||||
}
|
||||
|
||||
private fun showDatePicker() {
|
||||
val timePicker = TimePickerBuilder(this, OnTimeSelectListener { date, _ ->
|
||||
calendar.time = date
|
||||
|
||||
Reference in New Issue
Block a user