Added english voice recognition support

This commit is contained in:
Yink 2017-03-06 22:45:44 +01:00
parent 3482250092
commit f80298f0e1
5 changed files with 163 additions and 22 deletions

View File

@ -2,21 +2,38 @@ package com.example.yink.amadeus;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.drawable.AnimationDrawable;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.support.v7.app.AppCompatActivity;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.Locale;
public class LaunchActivity extends AppCompatActivity {
ImageView connect, cancel;
TextView status;
AnimationDrawable logo;
ImageView imageViewLogo;
Boolean isPressed = false;
SharedPreferences sharedPreferences;
private static boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
} catch (PackageManager.NameNotFoundException e) {
return false;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
@ -29,6 +46,7 @@ public class LaunchActivity extends AppCompatActivity {
imageViewLogo.setImageResource(R.drawable.logo_animation);
logo = (AnimationDrawable) imageViewLogo.getDrawable();
logo.start();
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
if (!isAppInstalled(LaunchActivity.this, "com.google.android.googlequicksearchbox")) {
status.setText(R.string.google_app_error);
@ -59,6 +77,11 @@ public class LaunchActivity extends AppCompatActivity {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
if (sharedPreferences.getBoolean("lang", true)) {
setLocale("ja");
} else {
setLocale("en");
}
Intent intent = new Intent(LaunchActivity.this,MainActivity.class);
startActivity(intent);
}
@ -106,13 +129,14 @@ public class LaunchActivity extends AppCompatActivity {
super.onResume();
}
private static boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
}
catch (PackageManager.NameNotFoundException e) {
return false;
}
private void setLocale(String lang) {
Locale myLocale = new Locale(lang);
if (lang.equals("en"))
myLocale = Locale.getDefault();
Resources res = getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.locale = myLocale;
res.updateConfiguration(conf, dm);
}
}

View File

@ -29,8 +29,6 @@ import android.widget.ImageView;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Random;
public class MainActivity extends AppCompatActivity {
@ -67,7 +65,6 @@ public class MainActivity extends AppCompatActivity {
if (Build.VERSION.SDK_INT >= 23) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_PERMISSION_RECORD_AUDIO);
}
sr = SpeechRecognizer.createSpeechRecognizer(this);
sr.setRecognitionListener(new listener());
@ -143,7 +140,11 @@ public class MainActivity extends AppCompatActivity {
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ja-JP");
if (sharedPreferences.getBoolean("lang", true)) {
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ja-JP");
} else {
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-EN");
}
sr.startListening(intent);
}
@ -228,8 +229,9 @@ public class MainActivity extends AppCompatActivity {
private void answerSpeech(String input) {
Log.e(TAG, input);
input = input.toLowerCase();
Random randomGen = new Random();
if (input.contains("クリスティーナ")) {
if (input.contains(getString(R.string.christina))) {
switch (randomGen.nextInt(4)) {
case 0:
speak(voiceLines.get(10));
@ -244,7 +246,7 @@ public class MainActivity extends AppCompatActivity {
speak(voiceLines.get(15));
break;
}
} else if (input.contains("ぬるぽ")) {
} else if (input.contains(getString(R.string.nullpo))) {
shaman_girls += 1;
if (shaman_girls < 5) {
switch (randomGen.nextInt(2)) {
@ -275,18 +277,18 @@ public class MainActivity extends AppCompatActivity {
break;
}
}
} else if (input.contains("the zombie") || input.contains("セレブセブンティーン")) {
} else if (input.contains(getString(R.string.the_zombie)) || input.contains(getString(R.string.celeb17))) {
speak(voiceLines.get(32));
} else if (input.contains("アットチャンネル") || input.contains("栗ご飯") || input.contains("カメハメハ")) {
} else if (input.contains(getString(R.string.atchannel)) || input.contains(getString(R.string.kurigohan)) || input.contains(getString(R.string.kamehameha))) {
speak(voiceLines.get(30 + randomGen.nextInt(2)));
} else if (input.contains("サリエリ") || input.contains("真帆") || input.contains("比屋定")) {
} else if (input.contains(getString(R.string.salieri)) || input.contains(getString(R.string.maho)) || input.contains(getString(R.string.hiyajo))) {
speak(voiceLines.get(26 + randomGen.nextInt(4)));
} else if (input.contains("タイムマシーン") || input.contains("cern") || input.contains("タイムトラベル")) {
} else if (input.contains(getString(R.string.time_machine)) || input.contains(getString(R.string.cern)) || input.contains(getString(R.string.time_travel))) {
speak(voiceLines.get(33 + randomGen.nextInt(5)));
} else if (input.contains("メモリー") || input.contains("アマデウス") || input.contains("サイエンス")) {
} else if (input.contains(getString(R.string.memory)) || input.contains(getString(R.string.amadeus)) || input.contains(getString(R.string.science))) {
speak(voiceLines.get(38 + randomGen.nextInt(5)));
} else if (input.contains("ハロー" ) || input.contains("おはよう") || input.contains("こんにちは")
|| input.contains("こんばんは")) {
} else if (input.contains(getString(R.string.hello)) || input.contains(getString(R.string.good_morning)) || input.contains(getString(R.string.konnichiwa))
|| input.contains(getString(R.string.good_evening))) {
switch (randomGen.nextInt(4)) {
case 0:
speak(voiceLines.get(12));
@ -301,7 +303,7 @@ public class MainActivity extends AppCompatActivity {
speak(voiceLines.get(43));
break;
}
} else if (input.contains("ナイスボディ") || input.contains("ほっと") || input.contains("セクシー") || input.contains("ボビーズ") || input.contains("おっぱい")) {
} else if (input.contains(getString(R.string.nice_body)) || input.contains(getString(R.string.hot)) || input.contains(getString(R.string.sexy)) || input.contains(getString(R.string.boobies)) || input.contains(getString(R.string.oppai))) {
switch (randomGen.nextInt(3)) {
case 0:
speak(voiceLines.get(2));
@ -422,4 +424,5 @@ public class MainActivity extends AppCompatActivity {
}
}
}

View File

@ -0,0 +1,83 @@
<resources>
<string name="app_name">Amadeus</string>
<string name="call">Connect to Kurisu?</string>
<string name="connecting">Connecting…</string>
<string name="disconnected">Disconnected.</string>
<integer name="duration">40</integer>
<string name="line_hello">Hello.</string>
<string name="line_dont_call_me_like_that">Don\'t call me like that!</string>
<string name="line_but_i_refuse">But I refuse.</string>
<string name="line_devilish_pervert">I never thought you were such a devilish pervert. I guess I misjudged you.</string>
<string name="line_i_guess">I guess.</string>
<string name="line_nice">Nice.</string>
<string name="line_pervert_confirmed">PERVERT CONFIRMED.</string>
<string name="line_sorry">Sorry.</string>
<string name="line_sounds_tough">Sounds tough.</string>
<string name="line_this_guy_hopeless">This guy is hopeless, better do something quick.</string>
<string name="line_gah">Gah.</string>
<string name="line_dont_add_tina">Stop adding -tina!</string>
<string name="line_pervert_idiot_wanttodie">You pervert! Are you an idiot!? Do you wanna die?!</string>
<string name="line_pleased_to_meet_you">I\'m Makise Kurisu, pleased to meet you.</string>
<string name="line_who_the_hell_christina">Who the hell is Christina?</string>
<string name="line_why_christina">I am worried about it. Why am I Christina?</string>
<string name="line_christina">Christina?</string>
<string name="line_ask_me_whatever">Ask me whatever you want. I\'ll answer anything I can.</string>
<string name="line_could_i_help">Um, could I help you with that?</string>
<string name="line_what_do_you_want">What do you want?</string>
<string name="line_what_is_it">What is it?</string>
<string name="line_heheh">Hehehe.</string>
<string name="line_huh_why_say">Huh? Why do you say that?</string>
<string name="line_you_sure">You sure?</string>
<string name="line_nice_to_meet_okabe">Nice to meet you, Okabe Rintaro. I\'m Makise Kurisu.</string>
<string name="line_look_forward_to_working">I look forward to working with you.</string>
<string name="line_senpai_question">Anyway, can I ask a question?</string>
<string name="line_senpai_question_mark">Um… Senpai? Excuse me.</string>
<string name="line_senpai_what_we_talkin">Hey Senpai, about what we were just talking about…</string>
<string name="line_senpai_who_is_this">Uh, who is this?</string>
<string name="line_senpai_please_dont_tell">Senpai, please, don\'t tell the others…</string>
<string name="line_still_not_happy">I\'m still not happy about that.</string>
<string name="line_tm_nonsense">That\s pure nonsense.</string>
<string name="line_tm_not_possible">Let\'s see… My conclusion is that it\'s not possible.</string>
<string name="line_tm_scientist_no_evidence">That\'s probably because scientists haven\'t discovered something important yet.</string>
<string name="line_tm_we_dont_know">But we don\'t know for sure that it\'s impossible, I guess.</string>
<string name="line_tm_you_said">A time machine, you said?</string>
<string name="line_humans_software">Even humans speak of themselves as a combination of hardware and software, right?</string>
<string name="line_memory_complex">But memory data isn\'t like normal data. It\'s much more complex.</string>
<string name="line_secret_diary">I keep a secret diary.</string>
<string name="line_modifying_memories_impossible">Modifying my memories? It\'s theoretically possible.</string>
<string name="line_memories_christina">For example, it would be possible to make me think my name was Christina.</string>
<string name="line_gah_extended">Gah. Ah… Aaaaah.</string>
<string name="line_Leskinen_awesome">Awesome, he\'s really something!</string>
<string name="line_Leskinen_nice">Nice!</string>
<string name="line_Leskinen_oh_no">Oh no!</string>
<string name="line_Leskinen_shaman">Where are the Japanese shaman girls, Lintahlo?</string>
<string name="line_Leskinen_holy_cow">Holy Cow! So I said we should come soon.</string>
<string name="line_should_christina">Or should I have introduced myself with, \"It\'s Christina\"?</string>
<!-- Inputstrings -->
<string name="christina">クリスティーナ</string>
<string name="nullpo">ぬるぽ</string>
<string name="the_zombie">the zombie</string>
<string name="celeb17">セレブセブンティーン</string>
<string name="atchannel">アットチャンネル</string>
<string name="kurigohan">栗ご飯</string>
<string name="kamehameha">カメハメハ</string>
<string name="salieri">サリエリ</string>
<string name="maho">真帆</string>
<string name="hiyajo">比屋定</string>
<string name="time_machine">タイムマシーン</string>
<string name="cern">cern</string>
<string name="time_travel">タイムトラベル</string>
<string name="memory">メモリー</string>
<string name="amadeus">アマデウス</string>
<string name="science">サイエンス</string>
<string name="hello">ハロー</string>
<string name="good_morning">おはよう</string>
<string name="konnichiwa">こんにちは</string>
<string name="good_evening">こんばんは</string>
<string name="nice_body">ナイスボディ</string>
<string name="hot">ほっと</string>
<string name="sexy">セクシー</string>
<string name="boobies">ボビーズ</string>
<string name="oppai">おっぱい</string>
</resources>

View File

@ -55,4 +55,30 @@
<string name="line_Leskinen_shaman">Where are the Japanese shaman girls, Lintahlo?</string>
<string name="line_Leskinen_holy_cow">Holy Cow! So I said we should come soon.</string>
<string name="line_should_christina">Or should I have introduced myself with, \"It\'s Christina\"?</string>
<!-- Inputstrings -->
<string name="christina">christina</string>
<string name="nullpo">nullpo</string>
<string name="the_zombie">the zombie</string>
<string name="celeb17">celeb seventeen</string>
<string name="atchannel">atchannel</string>
<string name="kurigohan">kurigohan</string>
<string name="kamehameha">kamehameha</string>
<string name="salieri">salieri</string>
<string name="maho">maho</string>
<string name="hiyajo">hiyajo</string>
<string name="time_machine">time machine</string>
<string name="cern">cern</string>
<string name="time_travel">time travel</string>
<string name="memory">memory</string>
<string name="amadeus">amadeus</string>
<string name="science">science</string>
<string name="hello">hello</string>
<string name="good_morning">good morning</string>
<string name="konnichiwa">konnichiwa</string>
<string name="good_evening">good evening</string>
<string name="nice_body">nice body</string>
<string name="hot">hot</string>
<string name="sexy">sexy</string>
<string name="boobies">boobies</string>
<string name="oppai">oppai</string>
</resources>

View File

@ -6,5 +6,10 @@
android:key="show_subtitles"
android:summary="Shows subtitles for Amadeus' answers"
android:title="Show subtitles" />
<SwitchPreference
android:defaultValue="true"
android:key="lang"
android:summary="Use Japanese Voice Recognition"
android:title="Weeb Mode" />
</PreferenceCategory>
</PreferenceScreen>