Skip to content

Commit 074770c

Browse files
committed
Sparated SpeechToSign and TextToSpeech
1 parent 146948e commit 074770c

File tree

10 files changed

+227
-17
lines changed

10 files changed

+227
-17
lines changed

.idea/compiler.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/deploymentTargetSelector.xml

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,4 +73,9 @@ dependencies {
7373
def room_version = "2.8.0"
7474
implementation "androidx.room:room-runtime:$room_version"
7575
annotationProcessor "androidx.room:room-compiler:$room_version"
76+
}
77+
java {
78+
toolchain {
79+
languageVersion = JavaLanguageVersion.of(17)
80+
}
7681
}

app/src/main/AndroidManifest.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232
<activity android:name=".HomeActivity" android:launchMode="singleTask"/>
3333
<activity android:name=".SignToTextActivity"/>
3434
<activity android:name=".SignToSpeechActivity"/>
35-
<activity android:name=".TextSpeechToSignActivity"/>
35+
<activity android:name=".TextToSignActivity"/>
36+
<activity android:name=".SpeechToSignActivity"/>
3637
<activity android:name=".LearnActivity"/>
3738
<activity android:name=".HistoryActivity"/>
3839
</application>

app/src/main/java/com/example/voxignota/HomeActivity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import android.content.Intent;
44
import android.net.Uri;
55
import android.os.Bundle;
6-
import android.widget.Button;
76
import android.widget.Toast;
87
import android.view.View;
98
import androidx.appcompat.app.AppCompatActivity;
@@ -23,10 +22,10 @@ protected void onCreate(Bundle savedInstanceState) {
2322
startActivity(new Intent(HomeActivity.this, SignToSpeechActivity.class)));
2423

2524
findViewById(R.id.textToSignBtn).setOnClickListener(v ->
26-
startActivity(new Intent(HomeActivity.this, TextSpeechToSignActivity.class)));
25+
startActivity(new Intent(HomeActivity.this, TextToSignActivity.class)));
2726

2827
findViewById(R.id.speechToSignBtn).setOnClickListener(v ->
29-
startActivity(new Intent(HomeActivity.this, TextSpeechToSignActivity.class)));
28+
startActivity(new Intent(HomeActivity.this, SpeechToSignActivity.class)));
3029

3130
findViewById(R.id.learnBtn).setOnClickListener(v ->
3231
startActivity(new Intent(HomeActivity.this, LearnActivity.class)));

app/src/main/java/com/example/voxignota/TextSpeechToSignActivity.java renamed to app/src/main/java/com/example/voxignota/SpeechToSignActivity.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@
2929
import java.util.ArrayList;
3030
import java.util.Locale;
3131

32-
public class TextSpeechToSignActivity extends AppCompatActivity {
32+
public class SpeechToSignActivity extends AppCompatActivity {
3333

3434
private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
3535
private EditText inputText;
@@ -40,7 +40,7 @@ public class TextSpeechToSignActivity extends AppCompatActivity {
4040
@Override
4141
protected void onCreate(Bundle savedInstanceState) {
4242
super.onCreate(savedInstanceState);
43-
setContentView(R.layout.activity_text_speech_to_sign);
43+
setContentView(R.layout.activity_speechtosign);
4444

4545
inputText = findViewById(R.id.inputText);
4646
micBtn = findViewById(R.id.micBtn);
@@ -89,8 +89,8 @@ public void onEvent(int eventType, Bundle params) {}
8989
micBtn.setOnClickListener(new View.OnClickListener() {
9090
@Override
9191
public void onClick(View v) {
92-
if (ContextCompat.checkSelfPermission(TextSpeechToSignActivity.this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
93-
ActivityCompat.requestPermissions(TextSpeechToSignActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_RECORD_AUDIO_PERMISSION);
92+
if (ContextCompat.checkSelfPermission(SpeechToSignActivity.this, Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
93+
ActivityCompat.requestPermissions(SpeechToSignActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_RECORD_AUDIO_PERMISSION);
9494
} else {
9595
speechRecognizer.startListening(speechRecognizerIntent);
9696
}
@@ -102,7 +102,7 @@ public void onClick(View v) {
102102
public void onClick(View v) {
103103
String text = inputText.getText().toString().trim().toLowerCase();
104104
if (text.isEmpty()) {
105-
Toast.makeText(TextSpeechToSignActivity.this, "Please enter text or speak.", Toast.LENGTH_SHORT).show();
105+
Toast.makeText(SpeechToSignActivity.this, "Please enter text or speak.", Toast.LENGTH_SHORT).show();
106106
return;
107107
}
108108

@@ -111,20 +111,20 @@ public void onClick(View v) {
111111

112112
for (String word : words) {
113113
// --- START OF THE CHANGE ---
114-
HorizontalScrollView horizontalScrollView = new HorizontalScrollView(TextSpeechToSignActivity.this);
114+
HorizontalScrollView horizontalScrollView = new HorizontalScrollView(SpeechToSignActivity.this);
115115
LinearLayout.LayoutParams scrollParams = new LinearLayout.LayoutParams(
116116
LinearLayout.LayoutParams.WRAP_CONTENT,
117117
LinearLayout.LayoutParams.WRAP_CONTENT
118118
);
119119
horizontalScrollView.setLayoutParams(scrollParams);
120120

121-
LinearLayout wordLayout = new LinearLayout(TextSpeechToSignActivity.this);
121+
LinearLayout wordLayout = new LinearLayout(SpeechToSignActivity.this);
122122
wordLayout.setOrientation(LinearLayout.HORIZONTAL);
123123
wordLayout.setPadding(0, 0, 10, 10);
124124
// --- END OF THE CHANGE ---
125125

126126
for (char character : word.toCharArray()) {
127-
ImageView imageView = new ImageView(TextSpeechToSignActivity.this);
127+
ImageView imageView = new ImageView(SpeechToSignActivity.this);
128128

129129
float density = getResources().getDisplayMetrics().density;
130130
int sizeInDp = 60;
@@ -141,7 +141,7 @@ public void onClick(View v) {
141141
wordLayout.addView(imageView);
142142
} catch (IOException e) {
143143
e.printStackTrace();
144-
Toast.makeText(TextSpeechToSignActivity.this, "Error loading image for: " + character, Toast.LENGTH_SHORT).show();
144+
Toast.makeText(SpeechToSignActivity.this, "Error loading image for: " + character, Toast.LENGTH_SHORT).show();
145145
}
146146
}
147147
// --- START OF THE CHANGE ---
Lines changed: 154 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,154 @@
1+
2+
package com.example.voxignota;
3+
4+
import android.Manifest;
5+
import android.content.Intent;
6+
import android.content.pm.PackageManager;
7+
import android.graphics.drawable.Drawable;
8+
import android.os.Bundle;
9+
import android.speech.RecognitionListener;
10+
import android.speech.RecognizerIntent;
11+
import android.speech.SpeechRecognizer;
12+
import android.view.View;
13+
import android.widget.Button;
14+
import android.widget.EditText;
15+
import android.widget.HorizontalScrollView;
16+
import android.widget.ImageView;
17+
import android.widget.LinearLayout;
18+
import android.widget.Toast;
19+
20+
import androidx.annotation.NonNull;
21+
import androidx.appcompat.app.AppCompatActivity;
22+
import androidx.core.app.ActivityCompat;
23+
import androidx.core.content.ContextCompat;
24+
25+
import com.google.android.flexbox.FlexboxLayout;
26+
27+
import java.io.IOException;
28+
import java.io.InputStream;
29+
import java.util.ArrayList;
30+
import java.util.Locale;
31+
32+
public class TextToSignActivity extends AppCompatActivity {
33+
34+
private static final int REQUEST_RECORD_AUDIO_PERMISSION = 200;
35+
private EditText inputText;
36+
private Button micBtn, translateBtn;
37+
private SpeechRecognizer speechRecognizer;
38+
private FlexboxLayout signsLayout;
39+
40+
@Override
41+
protected void onCreate(Bundle savedInstanceState) {
42+
super.onCreate(savedInstanceState);
43+
setContentView(R.layout.activity_texttosign);
44+
45+
inputText = findViewById(R.id.inputText);
46+
translateBtn = findViewById(R.id.translateBtn);
47+
signsLayout = findViewById(R.id.signsLayout);
48+
49+
speechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
50+
final Intent speechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
51+
speechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
52+
speechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
53+
54+
speechRecognizer.setRecognitionListener(new RecognitionListener() {
55+
@Override
56+
public void onReadyForSpeech(Bundle params) {}
57+
58+
@Override
59+
public void onBeginningOfSpeech() {}
60+
61+
@Override
62+
public void onRmsChanged(float rmsdB) {}
63+
64+
@Override
65+
public void onBufferReceived(byte[] buffer) {}
66+
67+
@Override
68+
public void onEndOfSpeech() {}
69+
70+
@Override
71+
public void onError(int error) {}
72+
73+
@Override
74+
public void onResults(Bundle results) {
75+
ArrayList<String> data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
76+
if (data != null) {
77+
inputText.setText(data.get(0));
78+
}
79+
}
80+
81+
@Override
82+
public void onPartialResults(Bundle partialResults) {}
83+
84+
@Override
85+
public void onEvent(int eventType, Bundle params) {}
86+
});
87+
88+
89+
translateBtn.setOnClickListener(new View.OnClickListener() {
90+
@Override
91+
public void onClick(View v) {
92+
String text = inputText.getText().toString().trim().toLowerCase();
93+
if (text.isEmpty()) {
94+
Toast.makeText(TextToSignActivity.this, "Please enter text.", Toast.LENGTH_SHORT).show();
95+
return;
96+
}
97+
98+
signsLayout.removeAllViews();
99+
String[] words = text.split("\\s+");
100+
101+
for (String word : words) {
102+
// --- START OF THE CHANGE ---
103+
HorizontalScrollView horizontalScrollView = new HorizontalScrollView(TextToSignActivity.this);
104+
LinearLayout.LayoutParams scrollParams = new LinearLayout.LayoutParams(
105+
LinearLayout.LayoutParams.WRAP_CONTENT,
106+
LinearLayout.LayoutParams.WRAP_CONTENT
107+
);
108+
horizontalScrollView.setLayoutParams(scrollParams);
109+
110+
LinearLayout wordLayout = new LinearLayout(TextToSignActivity.this);
111+
wordLayout.setOrientation(LinearLayout.HORIZONTAL);
112+
wordLayout.setPadding(0, 0, 10, 10);
113+
// --- END OF THE CHANGE ---
114+
115+
for (char character : word.toCharArray()) {
116+
ImageView imageView = new ImageView(TextToSignActivity.this);
117+
118+
float density = getResources().getDisplayMetrics().density;
119+
int sizeInDp = 60;
120+
int sizeInPx = (int) (sizeInDp * density);
121+
122+
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(sizeInPx, sizeInPx);
123+
imageView.setLayoutParams(layoutParams);
124+
125+
try {
126+
InputStream is = getAssets().open("signs/" + character + ".jpeg");
127+
Drawable d = Drawable.createFromStream(is, null);
128+
imageView.setImageDrawable(d);
129+
imageView.setPadding(5,5,5,5);
130+
wordLayout.addView(imageView);
131+
} catch (IOException e) {
132+
e.printStackTrace();
133+
Toast.makeText(TextToSignActivity.this, "Error loading image for: " + character, Toast.LENGTH_SHORT).show();
134+
}
135+
}
136+
horizontalScrollView.addView(wordLayout);
137+
signsLayout.addView(horizontalScrollView);
138+
139+
}
140+
}
141+
});
142+
}
143+
144+
public void goHome(View v){
145+
startActivity(new Intent(this, HomeActivity.class));
146+
finish();
147+
}
148+
149+
@Override
150+
protected void onDestroy() {
151+
super.onDestroy();
152+
speechRecognizer.destroy();
153+
}
154+
}
File renamed without changes.
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:app="http://schemas.android.com/apk/res-auto"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent"
6+
android:orientation="vertical"
7+
android:padding="20dp"
8+
android:background="#E6E6FA">
9+
10+
<ImageButton
11+
android:id="@+id/backBtn"
12+
android:layout_width="50dp"
13+
android:layout_height="50dp"
14+
android:layout_margin="8dp"
15+
android:backgroundTint="#800080"
16+
android:contentDescription="goHome"
17+
android:onClick="goHome"
18+
android:src="@drawable/ic_home"
19+
android:text=""
20+
android:background="@drawable/custom_button2"/>
21+
22+
<EditText
23+
android:id="@+id/inputText"
24+
android:textColorHint="#800080"
25+
android:layout_width="match_parent"
26+
android:layout_height="wrap_content"
27+
android:hint="Enter text here" />
28+
29+
30+
<Button
31+
android:id="@+id/translateBtn"
32+
android:layout_width="match_parent"
33+
android:layout_height="45dp"
34+
android:backgroundTint="#800080"
35+
android:text="Translate"
36+
android:textColor="@color/white"
37+
android:background="@drawable/custom_button"
38+
android:layout_marginTop="10dp"/>
39+
40+
<ScrollView
41+
android:layout_width="match_parent"
42+
android:layout_height="wrap_content">
43+
44+
<com.google.android.flexbox.FlexboxLayout
45+
android:id="@+id/signsLayout"
46+
android:layout_width="match_parent"
47+
android:layout_height="wrap_content"
48+
app:flexWrap="wrap" />
49+
</ScrollView>
50+
51+
</LinearLayout>

0 commit comments

Comments
 (0)