Skip to content

Commit

Permalink
New features
Browse files Browse the repository at this point in the history
*   Assist app #118
*   Partial screenshot: slide edges/corners
*   Partial screenshot: *select full screen* button
*   Partial screenshot: back button resets selection
*   Advanced settings #95
*   dataExtractionRules
  • Loading branch information
cvzi committed Mar 19, 2022
1 parent 2769288 commit 2243e19
Show file tree
Hide file tree
Showing 36 changed files with 1,353 additions and 179 deletions.
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
package com.github.cvzi.screenshottile.activities

import android.view.View
import android.view.ViewGroup
import androidx.test.espresso.Espresso.onView
Expand All @@ -9,7 +11,6 @@ import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.LargeTest
import androidx.test.rule.ActivityTestRule
import com.github.cvzi.screenshottile.R
import com.github.cvzi.screenshottile.activities.MainActivity
import org.hamcrest.Description
import org.hamcrest.Matcher
import org.hamcrest.Matchers.`is`
Expand Down
17 changes: 16 additions & 1 deletion app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,8 @@
<application
android:name="com.github.cvzi.screenshottile.App"
android:allowBackup="true"
android:fullBackupContent="@xml/backup_rules"
android:fullBackupContent="@xml/backup_rules_old"
android:dataExtractionRules="@xml/backup_rules"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
Expand Down Expand Up @@ -220,6 +221,20 @@
android:name="android.appwidget.provider"
android:resource="@xml/floating_button_widget" />
</receiver>
<service android:name=".assist.MyVoiceInteractionService"
android:label="@string/app_name"
android:permission="android.permission.BIND_VOICE_INTERACTION"
android:exported="true">
<meta-data android:name="android.voice_interaction"
android:resource="@xml/interaction_service" />
<intent-filter>
<action android:name="android.service.voice.VoiceInteractionService" />
</intent-filter>
</service>
<service android:name=".assist.MyVoiceInteractionSessionService"
android:permission="android.permission.BIND_VOICE_INTERACTION">
</service>

</application>

</manifest>
11 changes: 7 additions & 4 deletions app/src/main/java/com/github/cvzi/screenshottile/App.java
Original file line number Diff line number Diff line change
Expand Up @@ -212,8 +212,8 @@ protected void attachBaseContext(Context base) {
public void onCreate() {
super.onCreate();

/*
if (BuildConfig.DEBUG && Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectNetwork()
.detectCustomSlowCalls()
Expand All @@ -222,14 +222,17 @@ public void onCreate() {
.penaltyLog()
.penaltyDialog()
.build());
/*
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectAll()
.penaltyLog()
//.penaltyDeath()
.build());
*/
}
*/
if(!BuildConfig.DEBUG) {
StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
StrictMode.setVmPolicy(builder.build());
}

PreferenceManager.setDefaultValues(this, R.xml.pref, false);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@ import android.view.Display
import android.widget.Toast
import com.github.cvzi.screenshottile.services.BasicForegroundService
import com.github.cvzi.screenshottile.services.ScreenshotTileService
import com.github.cvzi.screenshottile.utils.deleteImage
import com.github.cvzi.screenshottile.utils.editImageChooserIntent
import com.github.cvzi.screenshottile.utils.hideNotification
import com.github.cvzi.screenshottile.utils.shareImageChooserIntent
import com.github.cvzi.screenshottile.utils.*


const val NOTIFICATION_ACTION_SHARE = "NOTIFICATION_ACTION_SHARE"
Expand Down Expand Up @@ -73,19 +70,11 @@ class NotificationActionReceiver : BroadcastReceiver() {

val path = Uri.parse(intent.getStringExtra(NOTIFICATION_ACTION_DATA_URI))


if (path != null && deleteImage(this, path)) {
Toast.makeText(
windowContext,
context.getString(R.string.screenshot_deleted),
Toast.LENGTH_SHORT
).show()
windowContext.toastMessage(R.string.screenshot_deleted, ToastType.SUCCESS, Toast.LENGTH_SHORT)
} else {
Toast.makeText(
windowContext,
context.getString(R.string.screenshot_delete_failed),
Toast.LENGTH_LONG
)
.show()
windowContext.toastMessage(R.string.screenshot_delete_failed, ToastType.ERROR)
}
}
NOTIFICATION_ACTION_EDIT -> {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,13 @@ import android.content.pm.PackageManager
import android.media.projection.MediaProjectionManager
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import com.github.cvzi.screenshottile.App

import com.github.cvzi.screenshottile.App.setScreenshotPermission
import com.github.cvzi.screenshottile.BuildConfig
import com.github.cvzi.screenshottile.R
import com.github.cvzi.screenshottile.utils.ToastType
import com.github.cvzi.screenshottile.utils.toastMessage


/**
Expand Down Expand Up @@ -94,10 +95,7 @@ class AcquireScreenshotPermission : Activity() {
TAG,
"onActivityResult() No screen capture permission: resultCode==$resultCode"
)
Toast.makeText(
this,
getString(R.string.permission_missing_screen_capture), Toast.LENGTH_LONG
).show()
toastMessage(getString(R.string.permission_missing_screen_capture), ToastType.ERROR)
}
}
finish()
Expand Down Expand Up @@ -126,10 +124,7 @@ class AcquireScreenshotPermission : Activity() {
TAG,
"onRequestPermissionsResult() Expected PERMISSION_GRANTED for WRITE_EXTERNAL_STORAGE"
)
Toast.makeText(
this,
getString(R.string.permission_missing_external_storage), Toast.LENGTH_LONG
).show()
toastMessage(getString(R.string.permission_missing_external_storage), ToastType.ERROR)
}
}
finish()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
package com.github.cvzi.screenshottile.activities

import android.Manifest
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Color
import android.os.Build
import android.os.Bundle
Expand All @@ -16,6 +18,7 @@ import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatActivity
import com.github.cvzi.screenshottile.App
import com.github.cvzi.screenshottile.R
import com.github.cvzi.screenshottile.assist.MyVoiceInteractionService
import com.github.cvzi.screenshottile.services.ScreenshotAccessibilityService
import com.github.cvzi.screenshottile.utils.hasFdroid
import com.github.cvzi.screenshottile.utils.isNewAppInstallation
Expand Down Expand Up @@ -72,6 +75,7 @@ class MainActivity : AppCompatActivity() {

val switchLegacy = findViewById<SwitchMaterial>(R.id.switchLegacy)
val switchNative = findViewById<SwitchMaterial>(R.id.switchNative)
val switchAssist = findViewById<SwitchMaterial>(R.id.switchAssist)

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
findViewById<LinearLayout>(R.id.linearLayoutNative)?.let {
Expand Down Expand Up @@ -119,7 +123,9 @@ class MainActivity : AppCompatActivity() {

findViewById<Button>(R.id.buttonAccessibilitySettings)?.setOnClickListener {
// Open Accessibility settings
ScreenshotAccessibilityService.openAccessibilitySettings(this, TAG)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
ScreenshotAccessibilityService.openAccessibilitySettings(this, TAG)
}
}

findViewById<TextView>(R.id.textDescGeneral)?.run {
Expand All @@ -139,6 +145,12 @@ class MainActivity : AppCompatActivity() {
hintAccessibilityServiceUnavailable?.let {
(it.parent as? ViewGroup)?.removeView(it)
}
} else if (packageManager.checkPermission(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
packageName
) != PackageManager.PERMISSION_GRANTED
) {
App.requestStoragePermission(this, false)
}

}
Expand All @@ -154,9 +166,8 @@ class MainActivity : AppCompatActivity() {
updateFloatButton()
switchLegacy?.isChecked = !App.getInstance().prefManager.useNative
if (App.getInstance().prefManager.useNative) {
if (ScreenshotAccessibilityService.instance == null) {
// Open Accessibility settings
ScreenshotAccessibilityService.openAccessibilitySettings(this, TAG)
if ( Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && ScreenshotAccessibilityService.instance == null) {
// Open Accessibility settings ScreenshotAccessibilityService.openAccessibilitySettings(this, TAG)
} else {
hintAccessibilityServiceUnavailable?.let {
(it.parent as? ViewGroup)?.removeView(it)
Expand All @@ -165,6 +176,10 @@ class MainActivity : AppCompatActivity() {
}
}
}

switchAssist?.setOnCheckedChangeListener { _, _ ->
MyVoiceInteractionService.openVoiceInteractionSettings(this, TAG)
}
}

private fun askToEnableAccessibility() {
Expand Down Expand Up @@ -216,11 +231,12 @@ class MainActivity : AppCompatActivity() {
private fun updateSwitches() {
val switchLegacy = findViewById<SwitchMaterial>(R.id.switchLegacy)
val switchNative = findViewById<SwitchMaterial>(R.id.switchNative)
val switchAssist = findViewById<SwitchMaterial>(R.id.switchAssist)

switchLegacy?.isChecked = !App.getInstance().prefManager.useNative
switchNative?.isChecked = App.getInstance().prefManager.useNative

if (App.getInstance().prefManager.useNative) {
if (App.getInstance().prefManager.useNative && Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
if (ScreenshotAccessibilityService.instance == null && hintAccessibilityServiceUnavailable == null) {
findViewById<LinearLayout>(R.id.linearLayoutNative)?.let {
hintAccessibilityServiceUnavailable = TextView(this)
Expand All @@ -244,6 +260,9 @@ class MainActivity : AppCompatActivity() {
hintAccessibilityServiceUnavailable = null
}
}

switchAssist?.isChecked = MyVoiceInteractionService.instance != null

}

private fun makeActivityClickable(textView: TextView) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import static com.github.cvzi.screenshottile.BuildConfig.APPLICATION_ID;
import static com.github.cvzi.screenshottile.utils.UtilsKt.screenshot;
import static com.github.cvzi.screenshottile.utils.UtilsKt.toastMessage;

import android.app.Activity;
import android.content.Context;
Expand All @@ -17,6 +18,7 @@
import com.github.cvzi.screenshottile.services.BasicForegroundService;
import com.github.cvzi.screenshottile.services.ScreenshotAccessibilityService;
import com.github.cvzi.screenshottile.services.ScreenshotTileService;
import com.github.cvzi.screenshottile.utils.ToastType;

/**
* Empty activity that is used to collapse the quick settings panel, finishes itself in onCreate
Expand Down Expand Up @@ -139,7 +141,7 @@ protected void onCreate(Bundle savedInstanceState) {
}
}
} else {
Toast.makeText(this, R.string.setting_floating_button_unsupported, Toast.LENGTH_LONG).show();
toastMessage(this, R.string.setting_floating_button_unsupported, ToastType.ERROR, Toast.LENGTH_LONG);
}
} else {
if (BuildConfig.DEBUG) Log.v(TAG, "onCreate() no valid action or EXTRA_* found");
Expand Down
Loading

0 comments on commit 2243e19

Please sign in to comment.