Skip to content

Commit 565d706

Browse files
committed
修复android 14 mediaProjection调用报错Must register a callback before starting capture, to manage resources in response to MediaProjection states.
1 parent 08465b8 commit 565d706

File tree

2 files changed

+24
-3
lines changed

2 files changed

+24
-3
lines changed

assists-mp/src/main/java/com/ven/assists_mp/MPManager.kt

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,18 @@ import android.graphics.PixelFormat
1010
import android.hardware.display.DisplayManager
1111
import android.media.Image
1212
import android.media.ImageReader
13+
import android.media.projection.MediaProjection
1314
import android.media.projection.MediaProjectionManager
1415
import android.os.Build
1516
import android.os.Bundle
17+
import android.os.Handler
18+
import android.os.Looper
1619
import android.view.accessibility.AccessibilityNodeInfo
1720
import androidx.activity.ComponentActivity
1821
import androidx.activity.result.ActivityResult
1922
import androidx.activity.result.ActivityResultLauncher
2023
import androidx.activity.result.contract.ActivityResultContracts
24+
import androidx.annotation.RequiresApi
2125
import com.blankj.utilcode.util.ActivityUtils
2226
import com.blankj.utilcode.util.ImageUtils
2327
import com.blankj.utilcode.util.LogUtils
@@ -57,6 +61,8 @@ object MPManager {
5761
/** 图像读取器实例 */
5862
private var imageReader: ImageReader? = null
5963

64+
var mediaProjectionCallback:MediaProjection.Callback?=null
65+
6066
/** 屏幕录制是否已启用 */
6167
var isEnable = false
6268
private set
@@ -145,6 +151,21 @@ object MPManager {
145151
intent.getParcelableExtra<Intent>(REQUEST_DATA)
146152
}
147153
val mediaProjection = mediaProjectionManager.getMediaProjection(requestCode, requestData!!)
154+
mediaProjection.registerCallback(object : MediaProjection.Callback() {
155+
override fun onStop() {
156+
mediaProjectionCallback?.onStop()
157+
}
158+
159+
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
160+
override fun onCapturedContentResize(width: Int, height: Int) {
161+
mediaProjectionCallback?.onCapturedContentResize(width, height)
162+
}
163+
164+
@RequiresApi(Build.VERSION_CODES.UPSIDE_DOWN_CAKE)
165+
override fun onCapturedContentVisibilityChanged(isVisible: Boolean) {
166+
mediaProjectionCallback?.onCapturedContentVisibilityChanged(isVisible)
167+
}
168+
}, Handler(Looper.getMainLooper()))
148169
mediaProjection.createVirtualDisplay(
149170
"assists_mp",
150171
screenWidth,

simple/build.gradle

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,9 +54,9 @@ dependencies {
5454
// implementation project(':assists')
5555
// implementation project(':assists-mp')
5656
// implementation project(':assists-opcv')
57-
implementation "com.github.ven-coder.Assists:assists-base:v3.2.12"
58-
implementation "com.github.ven-coder.Assists:assists-opcv:v3.2.12"
59-
implementation "com.github.ven-coder.Assists:assists-mp:v3.2.12"
57+
implementation "com.github.ven-coder.Assists:assists-base:v3.2.14"
58+
implementation "com.github.ven-coder.Assists:assists-opcv:v3.2.14"
59+
implementation "com.github.ven-coder.Assists:assists-mp:v3.2.14"
6060
implementation "androidx.room:room-runtime:${rootProject.ext.roomVersion}"
6161
implementation "androidx.room:room-ktx:${rootProject.ext.roomVersion}"
6262
implementation "com.github.mrmike:ok2curl:${rootProject.ext.ok2curlVersion}"

0 commit comments

Comments
 (0)