diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 12bd47f..8c1d637 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -80,7 +80,8 @@ android:exported="false" /> + android:exported="false" + android:configChanges="orientation|screenSize|keyboardHidden" /> diff --git a/app/src/main/java/com/example/defenseapplication/home/AddFamilyActivity.kt b/app/src/main/java/com/example/defenseapplication/home/AddFamilyActivity.kt index fb3efef..526590b 100644 --- a/app/src/main/java/com/example/defenseapplication/home/AddFamilyActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/home/AddFamilyActivity.kt @@ -28,7 +28,7 @@ import com.example.defenseapplication.adapter.WifiListAdapter import com.example.defenseapplication.databinding.AddFamilyActivityBinding import com.example.defenseapplication.databinding.DialogWifiListBinding import com.gyf.immersionbar.ImmersionBar - +//选择Wi-Fi class AddFamilyActivity : AppCompatActivity() { private lateinit var binding: AddFamilyActivityBinding diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt index ab5b98c..6884918 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/AlarmLogActivity.kt @@ -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() + 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 diff --git a/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt b/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt index db9b89f..c80c7bf 100644 --- a/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt +++ b/app/src/main/java/com/example/defenseapplication/liveVideo/LiveVideoActivity.kt @@ -27,7 +27,6 @@ import android.view.ViewGroup import android.widget.ImageView import android.widget.LinearLayout -private const val TAG = "LiveVideoActivity" //智能防御机A1 class LiveVideoActivity : BaseActivity() { private lateinit var binding: LiveVideoActivityBinding @@ -90,7 +89,7 @@ class LiveVideoActivity : BaseActivity() { .addVideoInfoListener(object : VideoInfoListener { // 注意:此处的 p0: Long 是视频开始播放时的位置信息,可以按需使用 override fun onPlayStart(p0: Long) { - Log.d(TAG, "视频开始播放") + Log.d("AlarmLogActivity", "视频开始播放") } override fun onLoadingChanged() { @@ -102,7 +101,7 @@ class LiveVideoActivity : BaseActivity() { } override fun onPlayEnd() { - Log.d(TAG, "播放结束") + Log.d("AlarmLogActivity", "播放结束") } // 修正点:库的接口要求必须实现 isPlaying 方法 diff --git a/app/src/main/res/drawable/chinexe.png b/app/src/main/res/drawable/chinexe.png index 9df0a92..9ee4450 100644 Binary files a/app/src/main/res/drawable/chinexe.png and b/app/src/main/res/drawable/chinexe.png differ diff --git a/app/src/main/res/drawable/english.png b/app/src/main/res/drawable/english.png index 77c1fab..d796218 100644 Binary files a/app/src/main/res/drawable/english.png and b/app/src/main/res/drawable/english.png differ diff --git a/app/src/main/res/layout/alarm_log_activity.xml b/app/src/main/res/layout/alarm_log_activity.xml index 06abb5d..31f7cbd 100644 --- a/app/src/main/res/layout/alarm_log_activity.xml +++ b/app/src/main/res/layout/alarm_log_activity.xml @@ -1,156 +1,23 @@ - + + android:layout_height="250dp" + android:background="@android:color/transparent" + app:use_controller="true"/> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + \ No newline at end of file diff --git a/app/src/main/res/layout/live_video_activity.xml b/app/src/main/res/layout/live_video_activity.xml index 957b333..bf93904 100644 --- a/app/src/main/res/layout/live_video_activity.xml +++ b/app/src/main/res/layout/live_video_activity.xml @@ -169,6 +169,7 @@ android:padding="16dp">