From 10f57e655a01033c53eed5552dac95deafa5e66d Mon Sep 17 00:00:00 2001 From: gonojuarez Date: Fri, 10 Dec 2021 15:18:42 -0300 Subject: [PATCH 1/2] InputManager.registerInputDeviceAdded listener has been added --- .idea/compiler.xml | 2 +- .idea/gradle.xml | 4 +- .idea/jarRepositories.xml | 20 +++ .idea/misc.xml | 18 ++- app/build.gradle | 45 ++++-- app/src/main/AndroidManifest.xml | 8 +- .../stonefacesoft/questions/MainActivity.java | 115 +++++-------- .../questions/YesNoQuestions.java | 67 ++++++++ .../main/res/layout-hdpi/activity_main.xml | 152 ++++++++++++++++++ .../main/res/layout-mdpi/activity_main.xml | 152 ++++++++++++++++++ .../activity_main.xml | 120 +++++++------- .../main/res/layout-sw600dp/activity_main.xml | 10 +- .../main/res/layout-xhdpi/activity_main.xml | 152 ++++++++++++++++++ .../main/res/layout-xxhdpi/activity_main.xml | 152 ++++++++++++++++++ .../main/res/layout-xxxhdpi/activity_main.xml | 152 ++++++++++++++++++ app/src/main/res/layout/activity_main.xml | 8 +- app/src/main/res/raw/pictosjson.json | 6 + build.gradle | 10 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 19 files changed, 1029 insertions(+), 166 deletions(-) create mode 100644 app/src/main/java/com/stonefacesoft/questions/YesNoQuestions.java create mode 100644 app/src/main/res/layout-hdpi/activity_main.xml create mode 100644 app/src/main/res/layout-mdpi/activity_main.xml rename app/src/main/res/{layout-land => layout-port}/activity_main.xml (64%) create mode 100644 app/src/main/res/layout-xhdpi/activity_main.xml create mode 100644 app/src/main/res/layout-xxhdpi/activity_main.xml create mode 100644 app/src/main/res/layout-xxxhdpi/activity_main.xml create mode 100644 app/src/main/res/raw/pictosjson.json diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 61a9130..fb7f4a8 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 18de3ac..2c7e034 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,9 +1,10 @@ + diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml index a5f05cd..0620706 100644 --- a/.idea/jarRepositories.xml +++ b/.idea/jarRepositories.xml @@ -21,5 +21,25 @@ \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 3378229..1479f40 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -5,7 +5,23 @@ - + + + + diff --git a/app/build.gradle b/app/build.gradle index 96db3e5..a3f9a2b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,18 +1,19 @@ plugins { id 'com.android.application' id 'com.google.gms.google-services' + id 'maven-publish' } android { - compileSdkVersion 30 - buildToolsVersion "29.0.3" + compileSdkVersion 31 + buildToolsVersion "30.0.3" defaultConfig { applicationId "com.stonefacesoft.questions" minSdkVersion 21 - targetSdkVersion 30 + targetSdkVersion 31 versionCode 1 - versionName "1.0" + versionName "1.1" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } @@ -27,25 +28,45 @@ android { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } + packagingOptions { + exclude 'META-INF/LICENSE' + exclude 'META-INF/DEPENDENCIES' + exclude 'META-INF/INDEX.LIST' + } +} + +repositories { + mavenCentral() + maven() { + url "https://oss.sonatype.org/content/repositories/snapshots" + } + maven { url "https://jitpack.io" } + maven { + url 'https://maven.google.com/' + name 'Google' + } } dependencies { - implementation 'androidx.appcompat:appcompat:1.3.0' - implementation 'com.google.android.material:material:1.3.0' - implementation 'androidx.constraintlayout:constraintlayout:2.0.4' + implementation 'androidx.appcompat:appcompat:1.3.1' + implementation 'com.google.android.material:material:1.4.0' + implementation 'androidx.constraintlayout:constraintlayout:2.1.1' implementation platform('com.google.firebase:firebase-bom:28.1.0') implementation 'com.google.firebase:firebase-analytics' implementation 'com.google.firebase:firebase-auth:21.0.1' - implementation 'com.google.android.gms:play-services-auth:19.0.0' + implementation 'com.google.android.gms:play-services-auth:19.2.0' //Glide for image loading implementation 'com.github.bumptech.glide:glide:4.11.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0' + implementation 'com.github.OTTAA-Project:PictogramsLibrary:0.1.9.3' + + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.3' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation group: 'org.apache.opennlp', name: 'opennlp-tools', version: '1.9.1' - testImplementation 'junit:junit:4.+' - androidTestImplementation 'androidx.test.ext:junit:1.1.2' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' -} \ No newline at end of file +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2778b80..59c42f8 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -2,6 +2,9 @@ + + + - + diff --git a/app/src/main/java/com/stonefacesoft/questions/MainActivity.java b/app/src/main/java/com/stonefacesoft/questions/MainActivity.java index 24f6a21..c60bde1 100644 --- a/app/src/main/java/com/stonefacesoft/questions/MainActivity.java +++ b/app/src/main/java/com/stonefacesoft/questions/MainActivity.java @@ -9,6 +9,7 @@ import android.speech.tts.TextToSpeech; import android.util.Log; import android.view.InputDevice; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.widget.Button; @@ -18,11 +19,14 @@ import androidx.appcompat.app.AppCompatActivity; import com.google.android.material.floatingactionbutton.FloatingActionButton; + + import com.google.firebase.analytics.FirebaseAnalytics; import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; +import com.stonefacesoft.pictogramslibrary.view.PictoView; import com.stonefacesoft.questions.utils.MovableFloatingActionButton; -import com.stonefacesoft.questions.utils.Picto; +//import com.stonefacesoft.questions.utils.RequestTask; import java.text.Normalizer; import java.util.ArrayList; @@ -31,27 +35,22 @@ //First push public class MainActivity extends AppCompatActivity implements View.OnClickListener, TextToSpeech.OnInitListener, View.OnTouchListener { - public final static int SPEECH_RECOGNITION_CODE = 199; private static final String TAG = "MainActivity"; TextToSpeech tts; - ArrayList listPictos, emptyList; + ArrayList listPictos, emptyList; private FirebaseAuth mAuth; private FirebaseAnalytics mFirebaseAnalytics; private FloatingActionButton btnMorePictos, btnMicrophone; private MovableFloatingActionButton btnMovable; private TextView txtOutput; - private Picto Picto1, Picto2, Picto3, Picto4; + private PictoView Picto1, Picto2, Picto3, Picto4; private Button TouchButton; private String mStrIdioma; + private YesNoQuestions yesNoQuestions; private final boolean mute = false; - public static String stripAccents(String s) { - s = s.toLowerCase(); - s = Normalizer.normalize(s, Normalizer.Form.NFD); - s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", ""); - return s; - } + @Override protected void onCreate(Bundle savedInstanceState) { @@ -59,13 +58,12 @@ protected void onCreate(Bundle savedInstanceState) { setContentView(R.layout.activity_main); tts = new TextToSpeech(MainActivity.this, this); - + yesNoQuestions = new YesNoQuestions(); mAuth = FirebaseAuth.getInstance(); mFirebaseAnalytics = FirebaseAnalytics.getInstance(this); - - listPictos = new ArrayList(); - emptyList = new ArrayList(); + listPictos = new ArrayList(); + emptyList = new ArrayList(); UIbinding(); } @@ -83,23 +81,31 @@ public void onInit(int status) { } } + @Override + public boolean onKeyDown(int keyCode, KeyEvent event) { + if (event.getSource() == InputDevice.SOURCE_MOUSE) { + Picto4.callOnClick(); + return true; + } + return false; + } + @Override public void onClick(View view) { int id = view.getId(); if (id == R.id.picto1) { - speak(Picto1.getText()); + speak(Picto1.getCustom_Texto()); } else if (id == R.id.picto2) { - speak(Picto2.getText()); + speak(Picto2.getCustom_Texto()); } else if (id == R.id.picto3) { - speak(Picto3.getText()); + speak(Picto3.getCustom_Texto()); } else if (id == R.id.picto4) { - speak(Picto4.getText()); + speak(Picto4.getCustom_Texto()); } else if (id == R.id.btn_mic) { //morePressed = 0; //loadMore(false); startSpeechToText(); - // Bundle bundle = new Bundle(); // bundle.putString(FirebaseAnalytics.Param.CONTENT_TYPE, "Question"); // mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.SELECT_CONTENT, bundle); @@ -155,10 +161,11 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) { private void processText(String text) { txtOutput.setText(text); - if (esSiNo(text)) { + if (YesNoQuestions.esSiNo(text)) { loadPictos(listPictos); } else { - loadPictos(emptyList); + // QueryInput queryInput = QueryInput.newBuilder().setText(TextInput.newBuilder().setText(text).setLanguageCode(mStrIdioma)).build(); + // loadPictos(emptyList); } } @@ -186,18 +193,19 @@ private void UIbinding() { Picto3.setVisibility(View.INVISIBLE); Picto4.setVisibility(View.INVISIBLE); - Picto1.setPictogram(getResources().getDrawable(R.drawable.picto_si)); - Picto1.setText("Si"); - Picto1.setColor(getResources().getColor(R.color.Magenta)); - Picto4.setPictogram(getResources().getDrawable(R.drawable.picto_no)); - Picto4.setText("No"); - Picto4.setColor(getResources().getColor(R.color.Magenta)); + Picto1.setCustom_Img(getResources().getDrawable(R.drawable.picto_si)); + Picto1.setCustom_Texto("Si"); + Picto1.setCustom_Color(getResources().getColor(R.color.Magenta)); + Picto4.setCustom_Img(getResources().getDrawable(R.drawable.picto_no)); + Picto4.setCustom_Texto("No"); + Picto4.setCustom_Color(getResources().getColor(R.color.Magenta)); listPictos.add(Picto1); listPictos.add(Picto2); mStrIdioma = Locale.getDefault().getLanguage(); + yesNoQuestions.setmStrIdioma(mStrIdioma); InputManager inputManager = (InputManager) this.getSystemService(Context.INPUT_SERVICE); inputManager.registerInputDeviceListener(new InputManager.InputDeviceListener() { @Override @@ -223,7 +231,7 @@ public void onInputDeviceChanged(int deviceId) { } - void loadPictos(List array) { + void loadPictos(List array) { cleanPictos(); if (array.size() == 0) { @@ -265,51 +273,6 @@ void cleanPictos() { Picto4.setVisibility(View.INVISIBLE); } - boolean esSiNo(String pregunta) { - switch (mStrIdioma) { - case "es": - pregunta = stripAccents(pregunta); - int i = pregunta.indexOf(' '); - if (i != -1) - pregunta = pregunta.substring(0, i); - return pregunta.equals("podes") || - pregunta.equals("puedes") || - pregunta.equals("tenes") || - pregunta.equals("te") || - pregunta.equals("conoces") || - pregunta.equals("queres") || - pregunta.equals("quieres") || - pregunta.equals("vas") || - pregunta.equals("ya") || - pregunta.equals("tienes") || - pregunta.equals("tomaste") || - pregunta.equals("es") || - pregunta.equals("lo") || - pregunta.equals("hace") || - pregunta.equals("somos") || - pregunta.equals("sos"); - - case "en": - switch (pregunta.substring(0, 2)) { - case "wh": - return false; - case "ho": - return false; - default: - return true; - } - - default: - switch (pregunta.substring(0, 2)) { - case "wh": - return false; - case "ho": - return false; - default: - return true; - } - } - } private void speak(String utterance) { // Bundle bundle = new Bundle(); @@ -380,4 +343,10 @@ public boolean onTouch(View v, MotionEvent event) { } + + + + + + } \ No newline at end of file diff --git a/app/src/main/java/com/stonefacesoft/questions/YesNoQuestions.java b/app/src/main/java/com/stonefacesoft/questions/YesNoQuestions.java new file mode 100644 index 0000000..4e35f93 --- /dev/null +++ b/app/src/main/java/com/stonefacesoft/questions/YesNoQuestions.java @@ -0,0 +1,67 @@ +package com.stonefacesoft.questions; + +import java.text.Normalizer; + +public class YesNoQuestions { + private String question; + private static String mStrIdioma ="es"; + public YesNoQuestions(){ + + } + + public void setmStrIdioma(String mStrIdioma) { + this.mStrIdioma = mStrIdioma; + } + + public static String stripAccents(String s) { + s = s.toLowerCase(); + s = Normalizer.normalize(s, Normalizer.Form.NFD); + s = s.replaceAll("[\\p{InCombiningDiacriticalMarks}]", ""); + return s; + } + public static boolean esSiNo(String pregunta) { + switch (mStrIdioma) { + case "es": + pregunta = stripAccents(pregunta); + int i = pregunta.indexOf(' '); + if (i != -1) + pregunta = pregunta.substring(0, i); + return pregunta.equals("podes") || + pregunta.equals("puedes") || + pregunta.equals("tenes") || + pregunta.equals("te") || + pregunta.equals("conoces") || + pregunta.equals("queres") || + pregunta.equals("quieres") || + pregunta.equals("vas") || + pregunta.equals("ya") || + pregunta.equals("tienes") || + pregunta.equals("tomaste") || + pregunta.equals("es") || + pregunta.equals("lo") || + pregunta.equals("hace") || + pregunta.equals("somos") || + pregunta.equals("sos"); + + case "en": + switch (pregunta.substring(0, 2)) { + case "wh": + return false; + case "ho": + return false; + default: + return true; + } + + default: + switch (pregunta.substring(0, 2)) { + case "wh": + return false; + case "ho": + return false; + default: + return true; + } + } + } +} diff --git a/app/src/main/res/layout-hdpi/activity_main.xml b/app/src/main/res/layout-hdpi/activity_main.xml new file mode 100644 index 0000000..2eb1dd9 --- /dev/null +++ b/app/src/main/res/layout-hdpi/activity_main.xml @@ -0,0 +1,152 @@ + + + + + + + + + + + + + + + + + + + +