From c3f836647554719c69d9e5329cf92db7f2675afc Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Tue, 31 Jan 2023 11:56:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E9=BB=9E=E6=93=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 7 ++- .../ui/mainScreen/SplitViewFragment.kt | 44 +++++++++++-------- .../ui/mainScreen/VideoView.kt | 6 +-- .../ui/monitoringScreen/MonitoringActivity.kt | 28 ++++++++++++ .../main/res/layout/activity_monitoring.xml | 9 ++++ 5 files changed, 72 insertions(+), 22 deletions(-) create mode 100644 app/src/main/java/com/ray650128/gstreamer_demo_app/ui/monitoringScreen/MonitoringActivity.kt create mode 100644 app/src/main/res/layout/activity_monitoring.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 201f1a5..3b5a07d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -11,13 +11,18 @@ android:theme="@style/Theme.Gstreamer"> + android:exported="true" + android:screenOrientation="nosensor"> + \ No newline at end of file diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt index 5ab3f61..4b4ee53 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/SplitViewFragment.kt @@ -1,5 +1,6 @@ package com.ray650128.gstreamer_demo_app.ui.mainScreen +import android.content.Intent import android.os.Bundle import android.util.Log import android.view.LayoutInflater @@ -10,6 +11,7 @@ import androidx.gridlayout.widget.GridLayout import com.ray650128.gstreamer_demo_app.databinding.FragmentSplitViewBinding import com.ray650128.gstreamer_demo_app.dp import com.ray650128.gstreamer_demo_app.model.Device +import com.ray650128.gstreamer_demo_app.ui.monitoringScreen.MonitoringActivity import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.MainScope import kotlinx.coroutines.delay @@ -123,27 +125,32 @@ class SplitViewFragment : Fragment() { } setAllUrl() - } - } - if (isClickable) { - for (position in videoViews.indices) { - videoViews[position].setOnClickListener { - if (position >= data.size) return@setOnClickListener - if (!videoViews[position].isPlaying) { - if (!videoViews[position].isLoading) { - videoViews[position].play() + if (isClickable) { + for (position in videoViews.indices) { + videoViews[position].setOnClickListener { + if (position >= data.size) return@setOnClickListener + if (!videoViews[position].isPlaying) { + if (!videoViews[position].isLoading) { + videoViews[position].retryCount = 0 + videoViews[position].play() + } + return@setOnClickListener + } + stopAll() + val item = data[position] + val bundle = Bundle().apply { + //putInt(MonitoringActivity.BUNDLE_DEVICE_ID, item.id) + //putInt(MonitoringActivity.BUNDLE_CHANNEL_ID, item.channelId) + putParcelable(MonitoringActivity.BUNDLE_DEVICE, item) + } + val intent = Intent(requireContext(), MonitoringActivity::class.java) + intent.putExtras(bundle) + startActivity(intent) + //gotoActivity(MonitoringActivity::class.java, bundle)*/ + //Log.d("${TAG}_$mPageNum", "check: $item") } - return@setOnClickListener } - /*stopAll() - val item = data[position] - val bundle = Bundle().apply { - putInt(MonitoringActivity.BUNDLE_DEVICE_ID, item.id) - putInt(MonitoringActivity.BUNDLE_CHANNEL_ID, item.channelId) - } - gotoActivity(MonitoringActivity::class.java, bundle)*/ - //Log.d("${TAG}_$mPageNum", "check: $item") } } } @@ -159,6 +166,7 @@ class SplitViewFragment : Fragment() { fun playAll() = MainScope().launch(Dispatchers.Main) { if (videoViews.isEmpty()) return@launch for (index in data.indices) { + videoViews[index].retryCount = 0 videoViews[index].play() delay(300) } diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt index dc0b95a..fdf68d8 100644 --- a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/mainScreen/VideoView.kt @@ -47,7 +47,7 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { field = value } - private var retryCount = 0 + var retryCount = 0 private var retryRunnable = object : Runnable { override fun run() { play() @@ -94,9 +94,9 @@ class VideoView : ConstraintLayout, SurfaceHolder.Callback, GstCallback { } fun play() { - if (retryCount == RETRY_OFF) { + /*if (retryCount == RETRY_OFF) { return - } + }*/ videoView.postInvalidate() gstLibrary.play() } diff --git a/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/monitoringScreen/MonitoringActivity.kt b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/monitoringScreen/MonitoringActivity.kt new file mode 100644 index 0000000..131db77 --- /dev/null +++ b/app/src/main/java/com/ray650128/gstreamer_demo_app/ui/monitoringScreen/MonitoringActivity.kt @@ -0,0 +1,28 @@ +package com.ray650128.gstreamer_demo_app.ui.monitoringScreen + +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.view.WindowManager +import com.ray650128.gstreamer_demo_app.databinding.ActivityMainBinding +import com.ray650128.gstreamer_demo_app.databinding.ActivityMonitoringBinding + +class MonitoringActivity : AppCompatActivity() { + + private lateinit var binding: ActivityMonitoringBinding + + override fun onCreate(savedInstanceState: Bundle?) { + window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) + super.onCreate(savedInstanceState) + + binding = ActivityMonitoringBinding.inflate(layoutInflater) + setContentView(binding.root) + } + + + + companion object { + const val BUNDLE_DEVICE_ID = "BUNDLE_DEVICE_ID" + const val BUNDLE_CHANNEL_ID = "BUNDLE_CHANNEL_ID" + const val BUNDLE_DEVICE = "BUNDLE_DEVICE" + } +} \ No newline at end of file diff --git a/app/src/main/res/layout/activity_monitoring.xml b/app/src/main/res/layout/activity_monitoring.xml new file mode 100644 index 0000000..86d13a9 --- /dev/null +++ b/app/src/main/res/layout/activity_monitoring.xml @@ -0,0 +1,9 @@ + + + + \ No newline at end of file