update 优化截图

This commit is contained in:
gallonyin
2023-03-06 22:09:18 +08:00
parent ddf389297b
commit fac38bf57f
2 changed files with 14 additions and 33 deletions

View File

@@ -26,6 +26,7 @@ import android.util.DisplayMetrics
import android.view.WindowManager import android.view.WindowManager
import org.yameida.worktool.utils.startServiceSafe import org.yameida.worktool.utils.startServiceSafe
import org.yameida.worktool.service.PlayNotifyService import org.yameida.worktool.service.PlayNotifyService
import org.yameida.worktool.service.fastStartActivity
import java.lang.Exception import java.lang.Exception
@@ -40,23 +41,27 @@ class GetScreenShotActivity : AppCompatActivity() {
companion object { companion object {
val HIDE_FLOAT_WINDOW = "hideFloatWindow" val HIDE_FLOAT_WINDOW = "hideFloatWindow"
fun startCapture() { fun startCapture(): Bitmap? {
if (MediaProjectionHolder.mMediaProjection == null) {
LogUtils.e("截图失败 mediaProjection未初始化")
fastStartActivity(Utils.getApp(), GetScreenShotActivity::class.java)
return null
}
val imageReader = ImageReader.newInstance(ScreenUtils.getScreenWidth(), ScreenUtils.getScreenHeight(), PixelFormat.RGBA_8888, 1) val imageReader = ImageReader.newInstance(ScreenUtils.getScreenWidth(), ScreenUtils.getScreenHeight(), PixelFormat.RGBA_8888, 1)
val virtualDisplay = MediaProjectionHolder.mMediaProjection?.createVirtualDisplay("ScreenShout", val virtualDisplay = MediaProjectionHolder.mMediaProjection?.createVirtualDisplay("ScreenShout",
ScreenUtils.getScreenWidth(), ScreenUtils.getScreenHeight(), ScreenUtils.getScreenDensityDpi(), ScreenUtils.getScreenWidth(), ScreenUtils.getScreenHeight(), ScreenUtils.getScreenDensityDpi(),
DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR, DisplayManager.VIRTUAL_DISPLAY_FLAG_AUTO_MIRROR,
imageReader?.surface, null, null) imageReader.surface, null, null)
val imageName = System.currentTimeMillis().toString() + ".png"
var image: Image? = null var image: Image? = null
var tryCount = 0 var tryCount = 0
while (tryCount < 10 && image == null) { while (tryCount < 10 && image == null) {
SystemClock.sleep(250) SystemClock.sleep(250)
image = imageReader?.acquireNextImage() image = imageReader.acquireNextImage()
} }
if (image == null) { if (image == null) {
LogUtils.i("GetScreenShotActivity", "image is null.") LogUtils.i("GetScreenShotActivity", "image is null.")
return return null
} }
val width = image.width val width = image.width
val height = image.height val height = image.height
@@ -71,11 +76,7 @@ class GetScreenShotActivity : AppCompatActivity() {
image.close() image.close()
imageReader.close() imageReader.close()
virtualDisplay?.release() virtualDisplay?.release()
return bitmap
if (bitmap != null) {
AndroidUtils.bitmapToFile(bitmap, imageName)
}
ToastUtils.showShort("截图已保存到sdcard/recorder/screenShot~~~")
} }
} }
@@ -113,29 +114,9 @@ class GetScreenShotActivity : AppCompatActivity() {
LogUtils.i("onActivityResult") LogUtils.i("onActivityResult")
if (resultCode == Activity.RESULT_OK && data != null) { if (resultCode == Activity.RESULT_OK && data != null) {
LogUtils.e("hahaha1")
LogUtils.e("mediaProjectionManager: $mediaProjectionManager") LogUtils.e("mediaProjectionManager: $mediaProjectionManager")
LogUtils.e("resultCode: $resultCode") LogUtils.e("resultCode: $resultCode")
LogUtils.e("data: $data") LogUtils.e("data: $data")
// MediaProjectionHolder.setMediaProjection(mediaProjectionManager!!.getMediaProjection(resultCode, data))
// LogUtils.e("hahaha2")
// if (hideFloatWindow) {
// if (FloatWindowManager.isShow) {
// FloatWindowManager.hide()
// handler.postDelayed({
// SystemClock.sleep(100)
// startCapture()
// FloatWindowManager.show()
// }, 200)
// } else {
// SystemClock.sleep(200)
// startCapture()
// }
// } else {
// startCapture()
// }
// startCapture()
try { try {
val mWindowManager = getSystemService(WINDOW_SERVICE) as WindowManager val mWindowManager = getSystemService(WINDOW_SERVICE) as WindowManager
val metrics = DisplayMetrics() val metrics = DisplayMetrics()
@@ -149,8 +130,6 @@ class GetScreenShotActivity : AppCompatActivity() {
service.putExtra("code", resultCode) service.putExtra("code", resultCode)
service.putExtra("data", data) service.putExtra("data", data)
startServiceSafe(service) startServiceSafe(service)
LogUtils.e("hahaha3")
} }
finish() finish()
} }

View File

@@ -179,7 +179,9 @@ class ListenActivity : AppCompatActivity() {
}, Context.BIND_AUTO_CREATE) }, Context.BIND_AUTO_CREATE)
//开启屏幕录制权限 //开启屏幕录制权限
if (MediaProjectionHolder.mMediaProjection == null) { if (MediaProjectionHolder.mMediaProjection == null) {
bt_save.postDelayed({
fastStartActivity(this, GetScreenShotActivity::class.java) fastStartActivity(this, GetScreenShotActivity::class.java)
}, 1000)
} }
} }