diff --git a/app/build.gradle b/app/build.gradle
index fabd024..e397f3f 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,7 +8,7 @@ android {
minSdkVersion 9
targetSdkVersion 20
versionCode 1
- versionName "0.9.5-alpha.3"
+ versionName "0.9.5-test.2"
}
buildTypes {
release {
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index ec935e7..e29b7b8 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,6 +5,7 @@
+
-
+
+
-
+
diff --git a/app/src/main/java/com/example/yink/amadeus/Alarm.java b/app/src/main/java/com/example/yink/amadeus/Alarm.java
new file mode 100644
index 0000000..8c3d36e
--- /dev/null
+++ b/app/src/main/java/com/example/yink/amadeus/Alarm.java
@@ -0,0 +1,104 @@
+package com.example.yink.amadeus;
+
+import android.app.AlarmManager;
+import android.app.NotificationManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.media.MediaPlayer;
+import android.os.PowerManager;
+import android.os.Vibrator;
+import android.preference.PreferenceManager;
+import android.util.Log;
+
+class Alarm {
+
+ private static MediaPlayer m;
+ private static SharedPreferences settings;
+ private static Vibrator v;
+
+ static final int ALARM_ID = 104859;
+ static final int ALARM_NOTIFICATION_ID = 102434;
+
+ private static final String TAG = "Alarm";
+ private static boolean isPlaying = false;
+ private static PowerManager.WakeLock sCpuWakeLock;
+
+ static void start(Context context, int ringtone) {
+
+ acquireCpuWakeLock(context);
+
+ settings = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if (settings.getBoolean("vibrate", false)) {
+ v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
+ long[] pattern = {500, 2000};
+ v.vibrate(pattern, 0);
+ }
+
+ m = MediaPlayer.create(context, ringtone);
+
+ m.setLooping(true);
+ m.start();
+
+ if (m.isPlaying()) {
+ isPlaying = true;
+ }
+
+ Log.d(TAG, "Start");
+
+ }
+
+ static void cancel(Context context) {
+
+ settings = PreferenceManager.getDefaultSharedPreferences(context);
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
+ Intent alarmIntent = new Intent(context, AlarmReceiver.class);
+ final PendingIntent pendingIntent = PendingIntent.getBroadcast(context, ALARM_ID, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
+ NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
+
+ if (isPlaying) {
+ SharedPreferences.Editor editor = settings.edit();
+ editor.putBoolean("alarm_toggle", false);
+ editor.apply();
+ m.release();
+ notificationManager.cancel(ALARM_NOTIFICATION_ID);
+ alarmManager.cancel(pendingIntent);
+ releaseCpuLock();
+ isPlaying = false;
+ if (v != null) {
+ v.cancel();
+ }
+ }
+
+ Log.d(TAG, "Cancel");
+
+ }
+
+ static boolean isPlaying() {
+ return isPlaying;
+ }
+
+ private static void acquireCpuWakeLock(Context context) {
+ if (sCpuWakeLock != null) {
+ return;
+ }
+
+ PowerManager pm =
+ (PowerManager) context.getSystemService(Context.POWER_SERVICE);
+ sCpuWakeLock = pm.newWakeLock(
+ PowerManager.PARTIAL_WAKE_LOCK |
+ PowerManager.ACQUIRE_CAUSES_WAKEUP |
+ PowerManager.ON_AFTER_RELEASE, TAG);
+ sCpuWakeLock.acquire();
+ }
+
+ private static void releaseCpuLock() {
+ if (sCpuWakeLock != null) {
+ sCpuWakeLock.release();
+ sCpuWakeLock = null;
+ }
+ }
+
+}
diff --git a/app/src/main/java/com/example/yink/amadeus/AlarmActivity.java b/app/src/main/java/com/example/yink/amadeus/AlarmActivity.java
index 3bb32a2..a689fbc 100644
--- a/app/src/main/java/com/example/yink/amadeus/AlarmActivity.java
+++ b/app/src/main/java/com/example/yink/amadeus/AlarmActivity.java
@@ -1,7 +1,6 @@
package com.example.yink.amadeus;
import android.annotation.TargetApi;
-import android.app.Activity;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Intent;
@@ -9,6 +8,7 @@
import android.os.Build;
import android.os.Bundle;
import android.preference.PreferenceManager;
+import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View;
import android.widget.TimePicker;
@@ -17,21 +17,15 @@
import java.util.Calendar;
-public class AlarmActivity extends Activity {
+public class AlarmActivity extends AppCompatActivity {
- final String TAG = "Amadeus.Alarm";
- AlarmManager alarmManager;
- PendingIntent pendingIntent;
- TimePicker alarmTimePicker;
- ToggleButton alarmToggle;
- public static final int alarmCode = 104856;
- SharedPreferences settings;
- SharedPreferences.Editor editor;
+ private final String TAG = "AlarmActivity";
- @Override
- public void onStart() {
- super.onStart();
- }
+ private AlarmManager alarmManager;
+ private PendingIntent pendingIntent;
+ private TimePicker alarmTimePicker;
+ private ToggleButton alarmToggle;
+ private SharedPreferences settings;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -41,8 +35,9 @@ protected void onCreate(Bundle savedInstanceState) {
alarmTimePicker = (TimePicker) findViewById(R.id.alarmTimePicker);
alarmToggle = (ToggleButton) findViewById(R.id.alarmToggle);
alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
- Intent alarmIntent = new Intent(this, AlarmReceiver.class);
- pendingIntent = PendingIntent.getBroadcast(this, alarmCode, alarmIntent, PendingIntent.FLAG_NO_CREATE);
+ pendingIntent = PendingIntent.getBroadcast(this, Alarm.ALARM_ID, new Intent(this, AlarmReceiver.class), PendingIntent.FLAG_CANCEL_CURRENT);
+
+ alarmTimePicker.setIs24HourView(settings.getBoolean("24-hour_format", true));
if (settings.getBoolean("alarm_toggle", false)) {
alarmToggle.setChecked(true);
@@ -52,40 +47,55 @@ protected void onCreate(Bundle savedInstanceState) {
}
public void onToggleClicked(View view) {
- editor = settings.edit();
+ SharedPreferences.Editor editor = settings.edit();
+
if (alarmToggle.isChecked()) {
editor.putBoolean("alarm_toggle", true);
Calendar calendar = Calendar.getInstance();
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
Log.d(TAG, "Current API functions have been executed");
- setTime(calendar);
+ setTime(calendar, editor);
} else {
Log.d(TAG, "Legacy API functions have been executed");
- setTimeLegacy(calendar);
+ setTimeLegacy(calendar, editor);
}
+
Log.d(TAG, "Alarm On");
} else {
- AlarmReceiver.stopRingtone(this);
+ Alarm.cancel(this);
+
editor.putBoolean("alarm_toggle", false);
- alarmManager.cancel(pendingIntent);
Log.d(TAG, "Alarm Off");
}
editor.apply();
}
@SuppressWarnings("deprecation")
- public void setTimeLegacy(Calendar calendar) {
+ private void setTimeLegacy(Calendar calendar, SharedPreferences.Editor editor) {
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getCurrentHour());
- calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentHour());
+ calendar.set(Calendar.MINUTE, alarmTimePicker.getCurrentMinute());
+
+ if (calendar.before(Calendar.getInstance())) {
+ calendar.add(Calendar.DATE, 1);
+ }
+
alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
- Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getCurrentHour() + " hour(s) " + alarmTimePicker.getCurrentHour() + " minute(s)", Toast.LENGTH_SHORT).show();
+ editor.putLong("alarm_time", calendar.getTimeInMillis());
+ Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getCurrentHour() + " hour(s) " + alarmTimePicker.getCurrentMinute() + " minute(s)", Toast.LENGTH_SHORT).show();
}
@TargetApi(Build.VERSION_CODES.M)
- public void setTime(Calendar calendar) {
+ private void setTime(Calendar calendar, SharedPreferences.Editor editor) {
calendar.set(Calendar.HOUR_OF_DAY, alarmTimePicker.getHour());
calendar.set(Calendar.MINUTE, alarmTimePicker.getMinute());
+
+ if (calendar.before(Calendar.getInstance())) {
+ calendar.add(Calendar.DATE, 1);
+ }
+
alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
+ editor.putLong("alarm_time", calendar.getTimeInMillis());
Toast.makeText(this, "Alarm has been set for " + alarmTimePicker.getHour() + " hour(s) " + alarmTimePicker.getMinute() + " minute(s)", Toast.LENGTH_SHORT).show();
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/yink/amadeus/AlarmBootReceiver.java b/app/src/main/java/com/example/yink/amadeus/AlarmBootReceiver.java
new file mode 100644
index 0000000..d3d0349
--- /dev/null
+++ b/app/src/main/java/com/example/yink/amadeus/AlarmBootReceiver.java
@@ -0,0 +1,38 @@
+package com.example.yink.amadeus;
+
+import android.app.AlarmManager;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.Intent;
+import android.content.SharedPreferences;
+import android.os.Build;
+import android.preference.PreferenceManager;
+import android.support.v4.content.WakefulBroadcastReceiver;
+import android.util.Log;
+
+public class AlarmBootReceiver extends WakefulBroadcastReceiver {
+
+ final String TAG = "AlarmBootReceiver";
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+
+ SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
+
+ if ("android.intent.action.BOOT_COMPLETED".equals(intent.getAction())
+ && settings.getBoolean("alarm_toggle", false)) {
+ AlarmManager alarmManager = (AlarmManager) context.getSystemService(
+ Context.ALARM_SERVICE);
+ PendingIntent pendingIntent = PendingIntent.getBroadcast(context,
+ Alarm.ALARM_ID, new Intent(context, AlarmReceiver.class), 0);
+
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
+ alarmManager.setAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, settings.getLong("alarm_time", 0), pendingIntent);
+ } else {
+ alarmManager.set(AlarmManager.RTC_WAKEUP, settings.getLong("alarm_time", 0), pendingIntent);
+ }
+ Log.d(TAG, "Alarm has been recovered");
+ }
+
+ }
+}
diff --git a/app/src/main/java/com/example/yink/amadeus/AlarmReceiver.java b/app/src/main/java/com/example/yink/amadeus/AlarmReceiver.java
index 6660f28..494c3f9 100644
--- a/app/src/main/java/com/example/yink/amadeus/AlarmReceiver.java
+++ b/app/src/main/java/com/example/yink/amadeus/AlarmReceiver.java
@@ -1,23 +1,24 @@
package com.example.yink.amadeus;
import android.app.Activity;
+import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.media.MediaPlayer;
import android.preference.PreferenceManager;
import android.support.v4.content.WakefulBroadcastReceiver;
+import android.util.Log;
-public class AlarmReceiver extends WakefulBroadcastReceiver {
+public class AlarmReceiver extends BroadcastReceiver {
- static MediaPlayer m;
- static boolean isPlaying = false;
- static SharedPreferences settings;
- static SharedPreferences.Editor editor;
+ private final String TAG = "AlarmReceiver";
@Override
public void onReceive(Context context, Intent intent) {
+
+ Log.d(TAG, "Broadcast received!");
+
int[] ringtones = {
R.raw.ringtone_gate_of_steiner, R.raw.ringtone_village,
R.raw.ringtone_beginning_of_fight, R.raw.ringtone_easygoingness,
@@ -25,36 +26,16 @@ public void onReceive(Context context, Intent intent) {
R.raw.ringtone_over_the_sky
};
- settings = PreferenceManager.getDefaultSharedPreferences(context);
+ SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context);
int index = Integer.parseInt(settings.getString("ringtone", "0"));
- m = MediaPlayer.create(context, ringtones[index]);
-
- m.setLooping(true);
- m.start();
+ Log.d(TAG, "Starting alarm...");
- if (m.isPlaying()) {
- isPlaying = true;
- }
+ Alarm.start(context, ringtones[index]);
- ComponentName comp = new ComponentName(context.getPackageName(),
- AlarmService.class.getName());
- startWakefulService(context, (intent.setComponent(comp)));
+ Intent service = new Intent(context, AlarmService.class);
+ context.startService(service);
setResultCode(Activity.RESULT_OK);
}
- public static void stopRingtone(Context context) {
- settings = PreferenceManager.getDefaultSharedPreferences(context);
- if (isPlaying) {
- editor = settings.edit();
- editor.putBoolean("alarm_toggle", false);
- editor.apply();
- m.release();
- isPlaying = false;
- }
- }
-
- public static boolean isPlaying() {
- return isPlaying;
- }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/yink/amadeus/AlarmService.java b/app/src/main/java/com/example/yink/amadeus/AlarmService.java
index 5e61c72..ca5ef4d 100644
--- a/app/src/main/java/com/example/yink/amadeus/AlarmService.java
+++ b/app/src/main/java/com/example/yink/amadeus/AlarmService.java
@@ -8,22 +8,21 @@
import android.support.v4.app.NotificationCompat;
public class AlarmService extends IntentService {
- NotificationManager alarmNotificationManager;
public AlarmService() {
super("AlarmService");
}
@Override
- public void onHandleIntent(Intent intent) {
+ protected void onHandleIntent(Intent intent) {
sendNotification(getString(R.string.incoming_call));
Intent launch = new Intent(this, LaunchActivity.class);
+ launch.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(launch);
- AlarmReceiver.completeWakefulIntent(intent);
}
private void sendNotification(String msg) {
- alarmNotificationManager = (NotificationManager) this
+ NotificationManager alarmNotificationManager = (NotificationManager) this
.getSystemService(Context.NOTIFICATION_SERVICE);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
@@ -35,6 +34,6 @@ private void sendNotification(String msg) {
.setContentText(msg);
alarmNotificationBuilder.setContentIntent(contentIntent);
- alarmNotificationManager.notify(1, alarmNotificationBuilder.build());
+ alarmNotificationManager.notify(Alarm.ALARM_NOTIFICATION_ID, alarmNotificationBuilder.build());
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/example/yink/amadeus/LangContext.java b/app/src/main/java/com/example/yink/amadeus/LangContext.java
index 636dafe..cb37d59 100644
--- a/app/src/main/java/com/example/yink/amadeus/LangContext.java
+++ b/app/src/main/java/com/example/yink/amadeus/LangContext.java
@@ -19,12 +19,11 @@ public LangContext(Context base) {
@SuppressWarnings("deprecation")
public static ContextWrapper wrap(Context context) {
- SharedPreferences sharedPreferences;
Configuration config = context.getResources().getConfiguration();
- sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
+ SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(context.getApplicationContext());
- String lang = sharedPreferences.getString("lang", "ja");
+ String lang = settings.getString("lang", "en");
Locale locale = new Locale(lang);
Locale.setDefault(locale);
@@ -34,6 +33,7 @@ public static ContextWrapper wrap(Context context) {
} else {
setSystemLocaleLegacy(config, locale);
}
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
context = context.createConfigurationContext(config);
} else {
@@ -54,6 +54,7 @@ public static Context load(Context context, String lang) {
} else {
setSystemLocaleLegacy(config, locale);
}
+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
context = context.createConfigurationContext(config);
} else {
@@ -64,12 +65,12 @@ public static Context load(Context context, String lang) {
}
@SuppressWarnings("deprecation")
- public static void setSystemLocaleLegacy(Configuration config, Locale locale){
+ private static void setSystemLocaleLegacy(Configuration config, Locale locale){
config.locale = locale;
}
@TargetApi(Build.VERSION_CODES.N)
- public static void setSystemLocale(Configuration config, Locale locale){
+ private static void setSystemLocale(Configuration config, Locale locale){
config.setLocale(locale);
}
}
diff --git a/app/src/main/java/com/example/yink/amadeus/LaunchActivity.java b/app/src/main/java/com/example/yink/amadeus/LaunchActivity.java
index 284c9f2..14c62b1 100644
--- a/app/src/main/java/com/example/yink/amadeus/LaunchActivity.java
+++ b/app/src/main/java/com/example/yink/amadeus/LaunchActivity.java
@@ -1,6 +1,5 @@
package com.example.yink.amadeus;
-import android.app.AlarmManager;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
@@ -10,7 +9,6 @@
import android.media.MediaPlayer;
import android.os.Bundle;
import android.os.Handler;
-import android.os.Vibrator;
import android.preference.PreferenceManager;
import android.support.v4.app.NotificationCompat;
import android.support.v4.app.TaskStackBuilder;
@@ -23,33 +21,29 @@
import android.widget.TextView;
public class LaunchActivity extends AppCompatActivity {
- ImageView connect, cancel, imageViewLogo;
- TextView status;
- Boolean isPressed = false;
- SharedPreferences settings;
- MediaPlayer m;
- Handler aniHandle = new Handler();
- AlarmManager alarmManager;
- PendingIntent pendingIntent;
- NotificationManager notificationManager;
- Vibrator v;
-
- int i = 0;
- int id;
- int duration = 20;
+
+ private ImageView connect, cancel, logo;
+ private TextView status;
+ private Boolean isPressed = false;
+ private MediaPlayer m;
+ private Handler aniHandle = new Handler();
+
+ private int i = 0;
+
Runnable aniRunnable = new Runnable() {
public void run() {
+ final int DURATION = 20;
if (i < 39) {
- i += 1;
+ i++;
String imgName = "logo" + Integer.toString(i);
- id = getResources().getIdentifier(imgName, "drawable", getPackageName());
- imageViewLogo.setImageDrawable((ContextCompat.getDrawable(LaunchActivity.this, id)));
- aniHandle.postDelayed(this, duration);
+ int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
+ logo.setImageDrawable((ContextCompat.getDrawable(LaunchActivity.this, id)));
+ aniHandle.postDelayed(this, DURATION);
}
}
};
- private static boolean isAppInstalled(Context context, String packageName) {
+ private boolean isAppInstalled(Context context, String packageName) {
try {
context.getPackageManager().getApplicationInfo(packageName, 0);
return true;
@@ -65,31 +59,22 @@ protected void onCreate(Bundle savedInstanceState) {
connect = (ImageView) findViewById(R.id.imageView_connect);
cancel = (ImageView) findViewById(R.id.imageView_cancel);
status = (TextView) findViewById(R.id.textView_call);
- imageViewLogo = (ImageView) findViewById(R.id.imageView_logo);
- aniHandle.post(aniRunnable);
- alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
- v = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
- Intent alarmIntent = new Intent(LaunchActivity.this, AlarmReceiver.class);
- pendingIntent = PendingIntent.getBroadcast(LaunchActivity.this, AlarmActivity.alarmCode, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
- notificationManager = (NotificationManager) getBaseContext().getSystemService(Context.NOTIFICATION_SERVICE);
- settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
+ logo = (ImageView) findViewById(R.id.imageView_logo);
+ SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
final Window win = getWindow();
+
+ aniHandle.post(aniRunnable);
+
if (!isAppInstalled(LaunchActivity.this, "com.google.android.googlequicksearchbox")) {
status.setText(R.string.google_app_error);
}
- if (AlarmReceiver.isPlaying()) {
+
+ if (Alarm.isPlaying()) {
status.setText(R.string.incoming_call);
- if (settings.getBoolean("vibrate", false)) {
- long[] pattern = {500, 2000};
- v.vibrate(pattern, 0);
- }
win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
}
- connect.setImageResource(R.drawable.connect_unselect);
- cancel.setImageResource(R.drawable.cancel_unselect);
-
if (settings.getBoolean("show_notification", false)) {
showNotification();
}
@@ -102,7 +87,7 @@ public void onClick(View view) {
connect.setImageResource(R.drawable.connect_select);
- if (!AlarmReceiver.isPlaying()) {
+ if (!Alarm.isPlaying()) {
m = MediaPlayer.create(LaunchActivity.this, R.raw.tone);
m.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@@ -122,10 +107,7 @@ public void onCompletion(MediaPlayer mp) {
}
});
} else {
- AlarmReceiver.stopRingtone(LaunchActivity.this);
- notificationManager.cancel(1);
- alarmManager.cancel(pendingIntent);
- v.cancel();
+ Alarm.cancel(LaunchActivity.this);
win.clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
@@ -140,10 +122,7 @@ public void onCompletion(MediaPlayer mp) {
@Override
public void onClick(View view) {
cancel.setImageResource(R.drawable.cancel_select);
- AlarmReceiver.stopRingtone(getApplicationContext());
- notificationManager.cancel(1);
- alarmManager.cancel(pendingIntent);
- v.cancel();
+ Alarm.cancel(getApplicationContext());
win.clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
@@ -154,7 +133,7 @@ public void onClick(View view) {
}
});
- imageViewLogo.setOnClickListener(new View.OnClickListener() {
+ logo.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent settingIntent = new Intent(LaunchActivity.this, SettingsActivity.class);
@@ -171,13 +150,14 @@ protected void attachBaseContext(Context newBase) {
@Override
protected void onDestroy() {
super.onDestroy();
+
final Window win = getWindow();
- if (m != null)
+ if (m != null) {
m.release();
- AlarmReceiver.stopRingtone(LaunchActivity.this);
- notificationManager.cancel(1);
- v.cancel();
+ }
+
+ Alarm.cancel(LaunchActivity.this);
win.clearFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
win.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON | WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
aniHandle.removeCallbacks(aniRunnable);
@@ -185,19 +165,21 @@ protected void onDestroy() {
@Override
protected void onResume() {
+ super.onResume();
+
if (isPressed) {
status.setText(R.string.disconnected);
} else if (!isAppInstalled(LaunchActivity.this, "com.google.android.googlequicksearchbox")) {
status.setText(R.string.google_app_error);
- } else if (AlarmReceiver.isPlaying()) {
+ } else if (Alarm.isPlaying()) {
status.setText(R.string.incoming_call);
} else {
status.setText(R.string.call);
}
+
isPressed = false;
connect.setImageResource(R.drawable.connect_unselect);
cancel.setImageResource(R.drawable.cancel_unselect);
- super.onResume();
}
private void showNotification() {
diff --git a/app/src/main/java/com/example/yink/amadeus/MainActivity.java b/app/src/main/java/com/example/yink/amadeus/MainActivity.java
index 3f92f02..1d9d22e 100644
--- a/app/src/main/java/com/example/yink/amadeus/MainActivity.java
+++ b/app/src/main/java/com/example/yink/amadeus/MainActivity.java
@@ -38,20 +38,21 @@
import java.util.Random;
public class MainActivity extends AppCompatActivity {
- final String TAG = "Amadeus";
- final int REQUEST_PERMISSION_RECORD_AUDIO = 1;
- TextView subtitles;
- ImageView kurisu;
- Boolean isLoop = false;
- Boolean isSpeaking = false;
- VoiceLine[] voiceLines = VoiceLine.Line.getLines();
- AnimationDrawable animation;
- int shaman_girls = -1;
- Random randomgen = new Random();
- SharedPreferences settings;
- String lang, recogLang;
- MediaPlayer m;
- String[] contextLang;
+
+ private final String TAG = "MainActivity";
+
+ private TextView subtitles;
+ private ImageView kurisu;
+ private Boolean isLoop = false;
+ private Boolean isSpeaking = false;
+ private VoiceLine[] voiceLines = VoiceLine.Line.getLines();
+ private AnimationDrawable animation;
+ private int shaman_girls = -1;
+ private Random randomgen = new Random();
+ private SharedPreferences settings;
+ private String recogLang;
+ private MediaPlayer m;
+ private String[] contextLang;
private SpeechRecognizer sr;
@Override
@@ -62,21 +63,22 @@ protected void onCreate(Bundle savedInstanceState) {
subtitles = (TextView) findViewById(R.id.textView_subtitles);
ImageView subtitlesBackground = (ImageView) findViewById(R.id.imageView_subtitles);
settings = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
- lang = settings.getString("lang", "ja");
recogLang = settings.getString("recognition_lang", "ja-JP");
contextLang = recogLang.split("-");
+ sr = SpeechRecognizer.createSpeechRecognizer(this);
+ sr.setRecognitionListener(new listener());
+ final Handler handler = new Handler();
+ final int REQUEST_PERMISSION_RECORD_AUDIO = 11302;
+
if (!settings.getBoolean("show_subtitles", false)) {
subtitlesBackground.setVisibility(View.INVISIBLE);
}
- speak(voiceLines[VoiceLine.Line.HELLO]);
-
- final Handler handler = new Handler();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.RECORD_AUDIO}, REQUEST_PERMISSION_RECORD_AUDIO);
}
- sr = SpeechRecognizer.createSpeechRecognizer(this);
- sr.setRecognitionListener(new listener());
+
+ speak(voiceLines[VoiceLine.Line.HELLO]);
final Runnable loop = new Runnable() {
@Override
@@ -87,6 +89,7 @@ public void run() {
}
}
};
+
kurisu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -192,7 +195,7 @@ protected void onActivityResult(int requestCode, int resultCode, Intent data) {
}
}
- public void speak(VoiceLine line) {
+ private void speak(VoiceLine line) {
try {
m = MediaPlayer.create(getApplicationContext(), line.getId());
final Visualizer v = new Visualizer(m.getAudioSessionId());
@@ -456,7 +459,8 @@ private void answerSpeech(String input, Context context) {
}
private class listener implements RecognitionListener {
- final String TAG = "Amadeus.listener";
+
+ private final String TAG = "VoiceListener";
public void onReadyForSpeech(Bundle params) {
Log.d(TAG, "Speech recognition start");
diff --git a/app/src/main/java/com/example/yink/amadeus/SettingsActivity.java b/app/src/main/java/com/example/yink/amadeus/SettingsActivity.java
index f3bac3d..17f4490 100644
--- a/app/src/main/java/com/example/yink/amadeus/SettingsActivity.java
+++ b/app/src/main/java/com/example/yink/amadeus/SettingsActivity.java
@@ -5,10 +5,8 @@
*/
import android.content.Context;
-import android.content.SharedPreferences;
import android.os.Build;
import android.os.Bundle;
-import android.preference.PreferenceManager;
import android.support.v4.app.FragmentActivity;
public class SettingsActivity extends FragmentActivity {
diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml
index 0670e30..3a849b9 100644
--- a/app/src/main/res/values-ru/strings.xml
+++ b/app/src/main/res/values-ru/strings.xml
@@ -24,6 +24,7 @@
Выберите рингтон для будильника
Рингтон будильника
Вибрация будильника
+ 24-часовой формат
Привет.
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 63cbe43..d79eeac 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -25,6 +25,7 @@
Alarm ringtone
Select ringtone for alarm
Vibrate on alarm
+ 24-hour format
Hello.
diff --git a/app/src/main/res/xml/preferences.xml b/app/src/main/res/xml/preferences.xml
index 7b6bb1b..b320580 100644
--- a/app/src/main/res/xml/preferences.xml
+++ b/app/src/main/res/xml/preferences.xml
@@ -39,6 +39,10 @@
android:key="ringtone"
android:summary="@string/pref_alarm_ringtone_desc"
android:title="@string/pref_alarm_ringtone" />
+