Skip to content

Commit f56ac06

Browse files
committed
本地回放不处于播放界面,暂停播放
Change-Id: Ia385290e9fcd0aea92eb04dc88ebbfb0f6dbb575
1 parent b360534 commit f56ac06

File tree

1 file changed

+28
-10
lines changed

1 file changed

+28
-10
lines changed

sdkdemo/src/main/java/com/tencent/iot/explorer/link/demo/video/playback/localPlayback/VideoLocalPlaybackFragment.kt

Lines changed: 28 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.tencent.iot.explorer.link.demo.video.playback.localPlayback
22

33
import android.graphics.SurfaceTexture
4-
import android.media.MediaPlayer
54
import android.net.Uri
65
import android.text.TextUtils
76
import android.util.Log
@@ -17,7 +16,6 @@ import com.tencent.iot.explorer.link.core.log.L
1716
import com.tencent.iot.explorer.link.demo.App
1817
import com.tencent.iot.explorer.link.demo.R
1918
import com.tencent.iot.explorer.link.demo.common.customView.CalendarView
20-
import com.tencent.iot.explorer.link.demo.common.customView.timeline.TimeBlockInfo
2119
import com.tencent.iot.explorer.link.demo.common.customView.timeline.TimeLineView
2220
import com.tencent.iot.explorer.link.demo.common.customView.timeline.TimeLineViewChangeListener
2321
import com.tencent.iot.explorer.link.demo.common.util.CommonUtils
@@ -67,7 +65,7 @@ private var keepAliveThreadRuning = true
6765
class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.SurfaceTextureListener, XP2PCallback, CoroutineScope by MainScope() {
6866
private var TAG = VideoLocalPlaybackFragment::class.java.simpleName
6967
var devInfo: DevInfo? = null
70-
private lateinit var player : IjkMediaPlayer
68+
private var player : IjkMediaPlayer = IjkMediaPlayer()
7169
private lateinit var surface: Surface
7270
@Volatile
7371
private var currentPostion = -1L // 小于 0 不需要恢复录像的进度,大于等于 0 需要恢复录像的进度
@@ -83,19 +81,34 @@ class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
8381
private var keepEndTime = 0L
8482
private var filePath: String? = null
8583
@Volatile
86-
private var connected = false;
84+
private var connected = false
85+
@Volatile
86+
private var isShowing = false
8787

8888
private fun sendCmd(id: String, cmd: String):String {
8989
if (connected)
9090
return XP2P.postCommandRequestSync(id, cmd.toByteArray(), cmd.toByteArray().size.toLong(), 2 * 1000 * 1000)
9191
return ""
9292
}
9393

94+
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
95+
player?.let {
96+
if (!isVisibleToUser && currentPlayerState) {
97+
Log.d(TAG, "setUserVisibleHint playVideo isVisibleToUser $isVisibleToUser")
98+
// 滑动该页面时,如果处于播放状态,暂停播放
99+
launch (Dispatchers.Main) {
100+
iv_start.performClick()
101+
}
102+
}
103+
}
104+
isShowing = isVisibleToUser
105+
Log.d(TAG, "setUserVisibleHint isShowing $isShowing")
106+
}
107+
94108
override fun startHere(view: View) {
95109
super.startHere(view)
96110
tv_date.text = dateFormat.format(System.currentTimeMillis())
97111
setListener()
98-
player = IjkMediaPlayer()
99112
launch(Dispatchers.Main) {
100113
delay(100) // 延迟一秒再进行连接,保证存在设备信息
101114
startConnect()
@@ -118,6 +131,7 @@ class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
118131
iv_start.setOnClickListener {
119132
devInfo?:let { return@setOnClickListener }
120133
var id = "${App.data.accessInfo?.productId}/${devInfo?.deviceName}"
134+
Log.d(TAG, "setOnClickListener currentPlayerState $currentPlayerState")
121135

122136
if (currentPlayerState) {
123137
launch (Dispatchers.IO) {
@@ -249,7 +263,7 @@ class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
249263

250264
launch(Dispatchers.Main) {
251265
var resp = requestTagDateInfo(it)
252-
L.d(TAG, "resp $resp")
266+
Log.d(TAG, "resp $resp")
253267
if (TextUtils.isEmpty(resp)) return@launch
254268

255269
try {
@@ -379,7 +393,7 @@ class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
379393

380394
var id = "${App.data.accessInfo?.productId}/${devInfo?.deviceName}"
381395
var timeStr = formateDateParam(dateStr)
382-
L.d(TAG, "request timeStr $timeStr")
396+
Log.d(TAG, "request timeStr $timeStr")
383397
var command = Command.getMonthDates(devInfo!!.channel, timeStr)
384398
if (TextUtils.isEmpty(command)) return ""
385399
return sendCmd(id, command)
@@ -407,12 +421,16 @@ class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
407421
}
408422

409423
private fun playVideo(startTime: Long, endTime: Long, offset: Long) {
410-
L.d(TAG, "startTime $startTime endTime $endTime offset $offset")
424+
Log.d(TAG, "startTime $startTime endTime $endTime offset $offset")
411425
keepStartTime = startTime
412426
keepEndTime = endTime
413427
devInfo?.let {
414-
setPlayerUrl(Command.getLocalVideoUrl(it.channel, startTime, endTime), offset)
428+
Log.d(TAG, "isShowing $isShowing")
415429
launch (Dispatchers.Main) {
430+
delay(1000)
431+
if (!isShowing) currentPlayerState = false
432+
Log.d(TAG, "playVideo currentPlayerState $currentPlayerState")
433+
setPlayerUrl(Command.getLocalVideoUrl(it.channel, startTime, endTime), offset)
416434
tv_all_time.text = CommonUtils.formatTime(endTime * 1000 - startTime * 1000)
417435
video_seekbar.max = (endTime - startTime).toInt()
418436
}
@@ -423,7 +441,7 @@ class VideoLocalPlaybackFragment: VideoPlaybackBaseFragment(), TextureView.Surfa
423441

424442
player?.let {
425443
val url = urlPrefix + suffix
426-
L.d(TAG, "setPlayerUrl url $url")
444+
Log.d(TAG, "setPlayerUrl url $url")
427445
it.reset()
428446

429447
it.setOption(IjkMediaPlayer.OPT_CATEGORY_FORMAT, "analyzemaxduration", 100)

0 commit comments

Comments
 (0)