Language switch improvement. Small fixes.
This commit is contained in:
parent
bb96db7093
commit
4dc64b4952
|
@ -10,7 +10,9 @@
|
|||
android:label="@string/app_name"
|
||||
android:supportsRtl="true"
|
||||
android:theme="@style/AppTheme">
|
||||
<activity android:name=".MainActivity">
|
||||
<activity
|
||||
android:name=".MainActivity"
|
||||
android:screenOrientation="portrait">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent-filter>
|
||||
|
|
|
@ -0,0 +1,59 @@
|
|||
package com.example.yink.amadeus;
|
||||
|
||||
/* Solution: http://stackoverflow.com/a/40704077 */
|
||||
|
||||
import android.annotation.TargetApi;
|
||||
import android.content.Context;
|
||||
import android.content.ContextWrapper;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.res.Configuration;
|
||||
import android.content.res.Resources;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.util.DisplayMetrics;
|
||||
|
||||
import java.util.Locale;
|
||||
|
||||
public class LangContextWrapper extends ContextWrapper {
|
||||
public LangContextWrapper(Context base) {
|
||||
super(base);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static ContextWrapper wrap(Context context) {
|
||||
SharedPreferences sharedPreferences;
|
||||
Configuration config = context.getResources().getConfiguration();
|
||||
String lang = "en";
|
||||
|
||||
sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
|
||||
|
||||
if (sharedPreferences.getBoolean("lang", true)) {
|
||||
lang = "ja";
|
||||
}
|
||||
|
||||
Locale locale = new Locale(lang);
|
||||
Locale.setDefault(locale);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
setSystemLocale(config, locale);
|
||||
} else {
|
||||
setSystemLocaleLegacy(config, locale);
|
||||
}
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
context = context.createConfigurationContext(config);
|
||||
} else {
|
||||
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
|
||||
}
|
||||
return new LangContextWrapper(context);
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
public static void setSystemLocaleLegacy(Configuration config, Locale locale){
|
||||
config.locale = locale;
|
||||
}
|
||||
|
||||
@TargetApi(Build.VERSION_CODES.N)
|
||||
public static void setSystemLocale(Configuration config, Locale locale){
|
||||
config.setLocale(locale);
|
||||
}
|
||||
}
|
|
@ -8,6 +8,7 @@ import android.content.res.Configuration;
|
|||
import android.content.res.Resources;
|
||||
import android.graphics.drawable.AnimationDrawable;
|
||||
import android.media.MediaPlayer;
|
||||
import android.os.Build;
|
||||
import android.os.Bundle;
|
||||
import android.preference.PreferenceManager;
|
||||
import android.support.v7.app.AppCompatActivity;
|
||||
|
@ -76,11 +77,6 @@ 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);
|
||||
}
|
||||
|
@ -113,6 +109,11 @@ public class LaunchActivity extends AppCompatActivity {
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context newBase) {
|
||||
super.attachBaseContext(LangContextWrapper.wrap(newBase));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onResume() {
|
||||
if (isPressed) {
|
||||
|
@ -128,14 +129,22 @@ public class LaunchActivity extends AppCompatActivity {
|
|||
super.onResume();
|
||||
}
|
||||
|
||||
private void setLocale(String lang) {
|
||||
@SuppressWarnings("deprecation")
|
||||
private void setLocale(Context context, String lang) {
|
||||
Configuration config = getBaseContext().getResources().getConfiguration();
|
||||
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);
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
|
||||
config.setLocale(myLocale);
|
||||
} else {
|
||||
config.locale = myLocale;
|
||||
}
|
||||
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
|
||||
context = context.createConfigurationContext(config);
|
||||
} else {
|
||||
context.getResources().updateConfiguration(config, context.getResources().getDisplayMetrics());
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ package com.example.yink.amadeus;
|
|||
*/
|
||||
|
||||
import android.Manifest;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.SharedPreferences;
|
||||
import android.content.pm.PackageManager;
|
||||
|
@ -116,6 +117,11 @@ public class MainActivity extends AppCompatActivity {
|
|||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void attachBaseContext(Context newBase) {
|
||||
super.attachBaseContext(LangContextWrapper.wrap(newBase));
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onDestroy() {
|
||||
if (sr != null)
|
||||
|
@ -143,7 +149,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
if (sharedPreferences.getBoolean("lang", true)) {
|
||||
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ja-JP");
|
||||
} else {
|
||||
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-EN");
|
||||
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "en-US");
|
||||
}
|
||||
|
||||
sr.startListening(intent);
|
||||
|
@ -254,7 +260,7 @@ public class MainActivity extends AppCompatActivity {
|
|||
speak(voiceLines.get(9));
|
||||
break;
|
||||
case 1:
|
||||
speak(voiceLines.get(42));
|
||||
speak(voiceLines.get(43));
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
|
@ -277,17 +283,28 @@ public class MainActivity extends AppCompatActivity {
|
|||
break;
|
||||
}
|
||||
}
|
||||
} else if (input.contains(getString(R.string.the_zombie)) || input.contains(getString(R.string.celeb17))) {
|
||||
} else if (input.contains(getString(R.string.the_zombie))
|
||||
|| input.contains(getString(R.string.celeb17))) {
|
||||
speak(voiceLines.get(32));
|
||||
} else if (input.contains(getString(R.string.atchannel)) || input.contains(getString(R.string.kurigohan)) || input.contains(getString(R.string.kamehameha))) {
|
||||
} 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(getString(R.string.salieri)) || input.contains(getString(R.string.maho)) || input.contains(getString(R.string.hiyajo))) {
|
||||
} 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(getString(R.string.time_machine)) || input.contains(getString(R.string.cern)) || input.contains(getString(R.string.time_travel))) {
|
||||
} 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(getString(R.string.memory)) || input.contains(getString(R.string.amadeus)) || input.contains(getString(R.string.science))) {
|
||||
} 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(getString(R.string.hello)) || input.contains(getString(R.string.good_morning)) || input.contains(getString(R.string.konnichiwa))
|
||||
} 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:
|
||||
|
@ -300,10 +317,14 @@ public class MainActivity extends AppCompatActivity {
|
|||
speak(voiceLines.get(25));
|
||||
break;
|
||||
case 3:
|
||||
speak(voiceLines.get(43));
|
||||
speak(voiceLines.get(1));
|
||||
break;
|
||||
}
|
||||
} 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))) {
|
||||
} 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));
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
<string name="call">Connect to Kurisu?</string>
|
||||
<string name="connecting">Connecting…</string>
|
||||
<string name="disconnected">Disconnected.</string>
|
||||
<string name="google_app_error">Google App wasn\'t detected.</string>
|
||||
<integer name="duration">40</integer>
|
||||
|
||||
<string name="line_hello">Hello.</string>
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<string name="science">science</string>
|
||||
<string name="hello">hello</string>
|
||||
<string name="good_morning">good morning</string>
|
||||
<string name="konnichiwa">konnichiwa</string>
|
||||
<string name="konnichiwa">good afternoon</string>
|
||||
<string name="good_evening">good evening</string>
|
||||
<string name="nice_body">nice body</string>
|
||||
<string name="hot">hot</string>
|
||||
|
|
Loading…
Reference in New Issue