diff --git a/README.md b/README.md
index 12658f0..8d4209e 100644
--- a/README.md
+++ b/README.md
@@ -9,24 +9,17 @@ Contains some easy-to-use tools to go beyond the level of control allowed by And
⚠ SoundMaster may not work on apps with strong copyright protection, like Spotify. In case SoundMaster crashes and some apps lose sound output, use MixedAudio to unmute them.
-- [x] **LookBack** - Allows downgrade of apps, without uninstallation.
+- [x] **LookBack** - Allows downgrade of apps, without uninstallation. *Not an entirely stable feature.*
+- [x] **UniversalPip** - Enforces Picture-in-Picture mode for all apps, even if they don't allow it.
- [x] **ADB Shell** - Manually execute other raw ADB commands.
-- [x] **Intent Shell** - Allows other apps (Tasker,MacroDroid,etc) to run ADB commands via intent requests.
-
- Intent action - `com.legendsayantan.adbtools.execute`
-
- Intent package - `com.legendsayantan.adbtools`
-
- Intent extras -
-
- i. `command` - The adb command to execute.
-
- ii. `key` - The access key generated by ShizuTools.
+- [x] **Intent Shell** - Allows other apps (Tasker,MacroDroid,etc) to run ADB commands via intent requests. [How to use](https://github.com/legendsayantan/ShizuTools/wiki/IntentShell)
#### This app is still on development phase, and not everything is always reliable. Feel free to suggest new features, report bugs or contribute to the project.
### Installation
-Download the latest apk from [here](https://github.com/legendsayantan/ShizuTools/releases/latest).
+Install the Latest Release Build from [here](https://github.com/legendsayantan/ShizuTools/releases/latest).
+
+Install the Latest Dev Build from [here](https://github.com/legendsayantan/ShizuTools/blob/master/app/release/app-release.apk)
### License
This project is licensed under GNU General Public License v3.0.
diff --git a/app/build.gradle b/app/build.gradle
index 7b2e161..c54a942 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -12,7 +12,7 @@ android {
minSdk 27
targetSdk 34
versionCode 1
- versionName "1.4.2"
+ versionName "1.4.3"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
diff --git a/app/release/app-release.apk b/app/release/app-release.apk
index 3334ef2..af92463 100644
Binary files a/app/release/app-release.apk and b/app/release/app-release.apk differ
diff --git a/app/release/output-metadata.json b/app/release/output-metadata.json
index 784175a..19867b6 100644
--- a/app/release/output-metadata.json
+++ b/app/release/output-metadata.json
@@ -12,7 +12,7 @@
"filters": [],
"attributes": [],
"versionCode": 1,
- "versionName": "1.4.2",
+ "versionName": "1.4.3",
"outputFile": "app-release.apk"
}
],
diff --git a/app/src/main/java/com/legendsayantan/adbtools/PipStarterActivity.kt b/app/src/main/java/com/legendsayantan/adbtools/PipStarterActivity.kt
index 4a5925b..0edb448 100644
--- a/app/src/main/java/com/legendsayantan/adbtools/PipStarterActivity.kt
+++ b/app/src/main/java/com/legendsayantan/adbtools/PipStarterActivity.kt
@@ -2,6 +2,7 @@ package com.legendsayantan.adbtools
import android.content.Context
import android.os.Bundle
+import android.os.Handler
import android.view.KeyEvent
import androidx.activity.enableEdgeToEdge
import androidx.appcompat.app.AppCompatActivity
@@ -33,12 +34,16 @@ class PipStarterActivity : AppCompatActivity() {
arrayOf(KeyEvent.KEYCODE_MEDIA_FAST_FORWARD,KeyEvent.KEYCODE_DPAD_RIGHT),
arrayOf(KeyEvent.KEYCODE_MEDIA_NEXT)
)
- controls.forEachIndexed { index, materialCardView ->
- materialCardView.setOnClickListener {
- keys[index].forEach { key ->
- getExternalWindowId { window-> ShizukuRunner.runAdbCommand("input -d $window keyevent $key",
- object : ShizukuRunner.CommandResultListener {}) }
- interacted()
+ getExternalDisplayId { display->
+ Handler(mainLooper).post {
+ controls.forEachIndexed { index, materialCardView ->
+ materialCardView.setOnClickListener {
+ keys[index].forEach { key ->
+ ShizukuRunner.runAdbCommand("input -d $display keyevent $key",
+ object : ShizukuRunner.CommandResultListener {})
+ interacted()
+ }
+ }
}
}
}
@@ -49,7 +54,7 @@ class PipStarterActivity : AppCompatActivity() {
extraBtns[0].setOnClickListener {
interacted()
val metrics = getWindowParams()
- getExternalWindowId {
+ getExternalDisplayId {
ShizukuRunner.runAdbCommand("input -d $it tap ${(metrics.first * 0.95).toInt()} ${(metrics.second*0.86).toInt()}",
object : ShizukuRunner.CommandResultListener {})
}
@@ -95,7 +100,7 @@ class PipStarterActivity : AppCompatActivity() {
val metrics = resources.displayMetrics
return Pair(metrics.widthPixels,((metrics.widthPixels / (metrics.heightPixels.toFloat() / metrics.widthPixels)) + 100).toInt())
}
- fun getExternalWindowId(callback:(Int)->Unit){
+ fun getExternalDisplayId(callback:(Int)->Unit){
ShizukuRunner.runAdbCommand("dumpsys display | grep 'Display [0-9][0-9]*'",
object :
ShizukuRunner.CommandResultListener {
@@ -160,7 +165,7 @@ class PipStarterActivity : AppCompatActivity() {
) {
if (done) {
Timer().schedule(timerTask {
- getExternalWindowId { newDisplayId->
+ getExternalDisplayId { newDisplayId->
val command =
"am start -n $packageName/${PipStarterActivity::class.java.canonicalName} --es package $pipPackage --display $newDisplayId"
ShizukuRunner.runAdbCommand(
diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml
index b42942a..97fa210 100644
--- a/app/src/main/res/layout/activity_main.xml
+++ b/app/src/main/res/layout/activity_main.xml
@@ -429,6 +429,10 @@
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5bdf3a0..2f3fd80 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -59,5 +59,5 @@
Permission error! Open the shizuku app to learn more.
Shizuku Error!
UniversalPip beta
- Switch apps to picture-in-picture mode forcefully.
+ Switch apps to picture-in-picture mode even if they don\'t allow it.
\ No newline at end of file