commit 8cca1cb6eeef256ac3971ccc3a848aaee417b610 Author: aNNiMON Date: Wed Feb 14 00:24:25 2024 +0200 Initial commit diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..7bc01d9 --- /dev/null +++ b/.classpath @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/.project b/.project new file mode 100644 index 0000000..e57058e --- /dev/null +++ b/.project @@ -0,0 +1,33 @@ + + + SelectedTextInfo + + + + + + com.android.ide.eclipse.adt.ResourceManagerBuilder + + + + + com.android.ide.eclipse.adt.PreCompilerBuilder + + + + + org.eclipse.jdt.core.javabuilder + + + + + com.android.ide.eclipse.adt.ApkBuilder + + + + + + com.android.ide.eclipse.adt.AndroidNature + org.eclipse.jdt.core.javanature + + diff --git a/AndroidManifest.xml b/AndroidManifest.xml new file mode 100644 index 0000000..aa13108 --- /dev/null +++ b/AndroidManifest.xml @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + diff --git a/proguard-project.txt b/proguard-project.txt new file mode 100644 index 0000000..f2fe155 --- /dev/null +++ b/proguard-project.txt @@ -0,0 +1,20 @@ +# To enable ProGuard in your project, edit project.properties +# to define the proguard.config property as described in that file. +# +# Add project specific ProGuard rules here. +# By default, the flags in this file are appended to flags specified +# in ${sdk.dir}/tools/proguard/proguard-android.txt +# You can edit the include path and order by changing the ProGuard +# include property in project.properties. +# +# For more details, see +# http://developer.android.com/guide/developing/tools/proguard.html + +# Add any project specific keep options here: + +# If your project uses WebView with JS, uncomment the following +# and specify the fully qualified class name to the JavaScript interface +# class: +#-keepclassmembers class fqcn.of.javascript.interface.for.webview { +# public *; +#} diff --git a/project.properties b/project.properties new file mode 100644 index 0000000..00cf62b --- /dev/null +++ b/project.properties @@ -0,0 +1,14 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system edit +# "ant.properties", and override values to adapt the script to your +# project structure. +# +# To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home): +#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt + +# Project target. +target=android-22 diff --git a/res/drawable-hdpi/ic_launcher.png b/res/drawable-hdpi/ic_launcher.png new file mode 100644 index 0000000..df0409f Binary files /dev/null and b/res/drawable-hdpi/ic_launcher.png differ diff --git a/res/drawable-mdpi/ic_launcher.png b/res/drawable-mdpi/ic_launcher.png new file mode 100644 index 0000000..e482716 Binary files /dev/null and b/res/drawable-mdpi/ic_launcher.png differ diff --git a/res/drawable-xhdpi/ic_launcher.png b/res/drawable-xhdpi/ic_launcher.png new file mode 100644 index 0000000..2bea76e Binary files /dev/null and b/res/drawable-xhdpi/ic_launcher.png differ diff --git a/res/drawable-xxhdpi/ic_launcher.png b/res/drawable-xxhdpi/ic_launcher.png new file mode 100644 index 0000000..89424ad Binary files /dev/null and b/res/drawable-xxhdpi/ic_launcher.png differ diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml new file mode 100644 index 0000000..a6f56f2 --- /dev/null +++ b/res/values-ru/strings.xml @@ -0,0 +1,13 @@ + + + + SelectedTextInfo + Показывает размер выделенного текста + + + Выделен %d символ. + Выделено %d символа. + Выделено %d символов. + Выделено %d символов. + + diff --git a/res/values-v11/styles.xml b/res/values-v11/styles.xml new file mode 100644 index 0000000..b06ab7a --- /dev/null +++ b/res/values-v11/styles.xml @@ -0,0 +1,11 @@ + + + + + + diff --git a/res/values/strings.xml b/res/values/strings.xml new file mode 100644 index 0000000..81f3679 --- /dev/null +++ b/res/values/strings.xml @@ -0,0 +1,11 @@ + + + + SelectedTextInfo + Shows selected text length + + + Selected %d symbol. + Selected %d symbols. + + diff --git a/res/values/styles.xml b/res/values/styles.xml new file mode 100644 index 0000000..5ef233e --- /dev/null +++ b/res/values/styles.xml @@ -0,0 +1,20 @@ + + + + + + + + + diff --git a/res/xml/accessibillity_service_config.xml b/res/xml/accessibillity_service_config.xml new file mode 100644 index 0000000..3998fd6 --- /dev/null +++ b/res/xml/accessibillity_service_config.xml @@ -0,0 +1,8 @@ + + diff --git a/src/com/annimon/selectedtextinfo/TextInfoAccessibilityService.java b/src/com/annimon/selectedtextinfo/TextInfoAccessibilityService.java new file mode 100644 index 0000000..462b1a4 --- /dev/null +++ b/src/com/annimon/selectedtextinfo/TextInfoAccessibilityService.java @@ -0,0 +1,45 @@ +package com.annimon.selectedtextinfo; + +import android.accessibilityservice.AccessibilityService; +import android.view.accessibility.AccessibilityEvent; +import android.widget.Toast; + +public class TextInfoAccessibilityService extends AccessibilityService { + + private Toast mToast; + + @Override + public void onAccessibilityEvent(AccessibilityEvent event) { + if (event.getEventType() != AccessibilityEvent.TYPE_VIEW_TEXT_SELECTION_CHANGED) return; + + final String selectedText = getEventText(event); + final int length = selectedText.length(); + if (length > 0) + toast(getResources().getQuantityString(R.plurals.info, length, length)); + } + + @Override + public void onInterrupt() { + } + + private String getEventText(AccessibilityEvent event) { + final StringBuilder sb = new StringBuilder(); + for (CharSequence s : event.getText()) { + sb.append(s); + } + try { + return sb.substring(event.getFromIndex(), event.getToIndex()); + } catch (Exception ex) { + return ""; + } + } + + private void toast(String message) { + if (mToast == null) { + mToast = Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT); + } else { + mToast.setText(message); + } + mToast.show(); + } +}