diff --git a/app/build.gradle b/app/build.gradle
index 666fe26..1c3d8b0 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -8,8 +8,8 @@ android {
applicationId "com.github.axet.audiorecorder"
minSdkVersion 16
targetSdkVersion 23
- versionCode 67
- versionName "1.1.45"
+ versionCode 68
+ versionName "1.1.46"
}
signingConfigs {
release {
diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java
index 957ff34..bec381b 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/activities/MainActivity.java
@@ -177,10 +177,10 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
time.setText(s.format(new Date(f.lastModified())));
TextView dur = (TextView) convertView.findViewById(R.id.recording_duration);
- dur.setText(MainApplication.formatDuration(durations.get(f)));
+ dur.setText(MainApplication.formatDuration(getContext(), durations.get(f)));
TextView size = (TextView) convertView.findViewById(R.id.recording_size);
- size.setText(MainApplication.formatSize(f.length()));
+ size.setText(MainApplication.formatSize(getContext(), f.length()));
final View playerBase = convertView.findViewById(R.id.recording_player);
playerBase.setOnClickListener(new View.OnClickListener() {
@@ -193,9 +193,9 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
- builder.setTitle("Delete Recording");
- builder.setMessage("...\\" + f.getName() + "\n\n" + "Are you sure ? ");
- builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
+ builder.setTitle(R.string.delete_recording);
+ builder.setMessage("...\\" + f.getName() + "\n\n" + getString(R.string.are_you_sure));
+ builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
playerStop();
@@ -211,7 +211,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
});
}
});
- builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
+ builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
@@ -225,7 +225,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
@Override
public void run() {
final OpenFileDialog.EditTextDialog e = new OpenFileDialog.EditTextDialog(getContext());
- e.setTitle("Rename Recording");
+ e.setTitle(getString(R.string.rename_recording));
e.setText(Storage.getNameNoExt(f));
e.setPositiveButton(new DialogInterface.OnClickListener() {
@Override
@@ -281,7 +281,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
emailIntent.putExtra(Intent.EXTRA_EMAIL, "");
emailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(f));
emailIntent.putExtra(Intent.EXTRA_SUBJECT, f.getName());
- emailIntent.putExtra(Intent.EXTRA_TEXT, "Shared via Audio Recorder");
+ emailIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.shared_via, getString(R.string.app_name)));
shareProvider.setShareIntent(emailIntent);
@@ -347,7 +347,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
if (player == null)
player = MediaPlayer.create(getContext(), Uri.fromFile(f));
if (player == null) {
- Toast.makeText(MainActivity.this, "File not found", Toast.LENGTH_SHORT).show();
+ Toast.makeText(MainActivity.this, R.string.file_not_found, Toast.LENGTH_SHORT).show();
return;
}
player.start();
@@ -443,11 +443,11 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
}
});
- start.setText(MainApplication.formatDuration(c));
+ start.setText(MainApplication.formatDuration(getContext(), c));
bar.setMax(d);
bar.setKeyProgressIncrement(1);
bar.setProgress(c);
- end.setText("-" + MainApplication.formatDuration(d - c));
+ end.setText("-" + MainApplication.formatDuration(getContext(), d - c));
return playing;
}
@@ -557,7 +557,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
if (intent.resolveActivityInfo(getPackageManager(), 0) != null) {
startActivity(intent);
} else {
- Toast.makeText(this, "No folder view application installed", Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.no_folder_app, Toast.LENGTH_SHORT).show();
}
}
@@ -630,7 +630,7 @@ public class MainActivity extends AppCompatActivity implements AbsListView.OnScr
load();
checkPending();
} else {
- Toast.makeText(this, "Not permitted", Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.not_permitted, Toast.LENGTH_SHORT).show();
}
}
}
diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java
index d1823dc..1c5351a 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/activities/RecordingActivity.java
@@ -132,7 +132,7 @@ public class RecordingActivity extends AppCompatActivity {
case TelephonyManager.CALL_STATE_OFFHOOK:
wasRinging = true;
if (thread != null) {
- stopRecording("pause (hold by call)");
+ stopRecording(getString(R.string.hold_by_call));
pausedByCall = true;
}
break;
@@ -230,7 +230,7 @@ public class RecordingActivity extends AppCompatActivity {
done.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- stopRecording("encoding");
+ stopRecording(getString(R.string.encoding));
encoding(new Runnable() {
@Override
public void run() {
@@ -244,7 +244,7 @@ public class RecordingActivity extends AppCompatActivity {
if (a != null && a.equals(START_PAUSE)) {
// pretend we already start it
start = false;
- stopRecording("pause");
+ stopRecording(getString(R.string.pause));
}
receiver = new RecordingReceiver();
@@ -298,7 +298,7 @@ public class RecordingActivity extends AppCompatActivity {
void pauseButton() {
if (thread != null) {
- stopRecording("pause");
+ stopRecording(getString(R.string.pause));
} else {
editCut();
@@ -374,7 +374,7 @@ public class RecordingActivity extends AppCompatActivity {
void edit(boolean show, boolean animate) {
if (show) {
- setState("edit");
+ setState(getString(R.string.edit));
editPlay(false);
View box = findViewById(R.id.recording_edit_box);
@@ -409,7 +409,7 @@ public class RecordingActivity extends AppCompatActivity {
});
} else {
editSample = -1;
- setState("pause");
+ setState(getString(R.string.pause));
editPlay(false);
pitch.edit(-1);
pitch.stop();
@@ -431,7 +431,7 @@ public class RecordingActivity extends AppCompatActivity {
long perSec = (c * m * rate);
long sec = free / perSec * 1000;
- state.setText(s + " (" + ((MainApplication) getApplication()).formatFree(free, sec) + ")");
+ state.setText(s + "\n(" + ((MainApplication) getApplication()).formatFree(free, sec) + ")");
}
void editPlay(boolean show) {
@@ -509,15 +509,15 @@ public class RecordingActivity extends AppCompatActivity {
void cancelDialog(final Runnable run) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
- builder.setTitle("Confirm cancel");
- builder.setMessage("Are you sure you want to cancel?");
- builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
+ builder.setTitle(R.string.confirm_cancel);
+ builder.setMessage(R.string.are_you_sure_cancel);
+ builder.setPositiveButton(R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
run.run();
}
});
- builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
+ builder.setNegativeButton(R.string.no, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
@@ -551,7 +551,7 @@ public class RecordingActivity extends AppCompatActivity {
edit(false, true);
pitch.setOnTouchListener(null);
- setState("recording");
+ setState(getString(R.string.recording));
sound.silent();
@@ -712,7 +712,7 @@ public class RecordingActivity extends AppCompatActivity {
void updateSamples(long samplesTime) {
long ms = samplesTime / sampleRate * 1000;
- time.setText(MainApplication.formatDuration(ms));
+ time.setText(MainApplication.formatDuration(this, ms));
}
@Override
@@ -724,7 +724,7 @@ public class RecordingActivity extends AppCompatActivity {
if (permitted(permissions)) {
startRecording();
} else {
- Toast.makeText(this, "Not permitted", Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.not_permitted, Toast.LENGTH_SHORT).show();
finish();
}
}
@@ -784,7 +784,7 @@ public class RecordingActivity extends AppCompatActivity {
encoder = new FileEncoder(this, in, e);
final ProgressDialog d = new ProgressDialog(this);
- d.setTitle("Encoding...");
+ d.setTitle(getString(R.string.encoding_title));
d.setMessage(".../" + targetFile.getName());
d.setMax(100);
d.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
diff --git a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java
index 2271fdf..798e5e6 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/activities/SettingsActivity.java
@@ -192,7 +192,7 @@ public class SettingsActivity extends AppCompatPreferenceActivity implements Sha
if (permitted(this, permissions))
;
else
- Toast.makeText(this, "Not permitted", Toast.LENGTH_SHORT).show();
+ Toast.makeText(this, R.string.not_permitted, Toast.LENGTH_SHORT).show();
}
}
diff --git a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java b/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java
index 8d6eab3..f94f0dc 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/app/MainApplication.java
@@ -74,23 +74,23 @@ public class MainApplication extends Application {
str = getResources().getQuantityString(R.plurals.seconds, diffSeconds, diffSeconds);
}
- return String.format("%s free ~ %s left", MainApplication.formatSize(free), str);
+ return getString(R.string.title_header, MainApplication.formatSize(this, free), str);
}
- public static String formatSize(long s) {
+ public static String formatSize(Context context, long s) {
if (s > 0.1 * 1024 * 1024 * 1024) {
float f = s / 1024f / 1024f / 1024f;
- return String.format("%.1f GB", f);
+ return context.getString(R.string.size_gb, f);
} else if (s > 0.1 * 1024 * 1024) {
float f = s / 1024f / 1024f;
- return String.format("%.1f MB", f);
+ return context.getString(R.string.size_mb, f);
} else {
float f = s / 1024f;
- return String.format("%.1f kb", f);
+ return context.getString(R.string.size_kb, f);
}
}
- static public String formatDuration(long diff) {
+ static public String formatDuration(Context context, long diff) {
int diffMilliseconds = (int) (diff % 1000);
int diffSeconds = (int) (diff / 1000 % 60);
int diffMinutes = (int) (diff / (60 * 1000) % 60);
@@ -100,7 +100,7 @@ public class MainApplication extends Application {
String str = "";
if (diffDays > 0)
- str = diffDays + "d " + formatTime(diffHours) + ":" + formatTime(diffMinutes) + ":" + formatTime(diffSeconds);
+ str = diffDays + context.getString(R.string.days_symbol) + " " + formatTime(diffHours) + ":" + formatTime(diffMinutes) + ":" + formatTime(diffSeconds);
else if (diffHours > 0)
str = formatTime(diffHours) + ":" + formatTime(diffMinutes) + ":" + formatTime(diffSeconds);
else
diff --git a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java
index 1bebc8e..92d3cbe 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/services/RecordingService.java
@@ -149,7 +149,7 @@ public class RecordingService extends Service {
NotificationCompat.Builder builder = new NotificationCompat.Builder(this)
.setOngoing(true)
- .setContentTitle("Recording")
+ .setContentTitle(getString(R.string.recording_title))
.setSmallIcon(R.drawable.ic_mic_24dp)
.setContent(view);
diff --git a/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java b/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java
index b83940d..01456b3 100644
--- a/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java
+++ b/app/src/main/java/com/github/axet/audiorecorder/widgets/PitchView.java
@@ -273,7 +273,7 @@ public class PitchView extends ViewGroup {
public PitchCurrentView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
- text = "100 dB";
+ text = "100 " + getContext().getString(R.string.db);
textBounds = new Rect();
textPaint = new Paint();
@@ -314,7 +314,7 @@ public class PitchView extends ViewGroup {
String str = "";
- str = Integer.toString((int) getDB(end)) + " dB";
+ str = Integer.toString((int) getDB(end)) + " " + getContext().getString(R.string.db);
setText(str);
}
diff --git a/app/src/main/res/layout/activity_recording.xml b/app/src/main/res/layout/activity_recording.xml
index 98af164..fe95b63 100644
--- a/app/src/main/res/layout/activity_recording.xml
+++ b/app/src/main/res/layout/activity_recording.xml
@@ -29,6 +29,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
+ android:gravity="center"
android:text="preparing" />
diff --git a/app/src/main/res/layout/content_main.xml b/app/src/main/res/layout/content_main.xml
index 8d13482..ab10943 100644
--- a/app/src/main/res/layout/content_main.xml
+++ b/app/src/main/res/layout/content_main.xml
@@ -35,7 +35,7 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp"
- android:text="Recording List is Empty\n\nClick Record to Start Recording"
+ android:text="@string/recording_list_is_empty"
android:textAlignment="center">
diff --git a/app/src/main/res/menu/menu_context.xml b/app/src/main/res/menu/menu_context.xml
index 75a132e..84b9fb5 100644
--- a/app/src/main/res/menu/menu_context.xml
+++ b/app/src/main/res/menu/menu_context.xml
@@ -5,11 +5,11 @@
diff --git a/app/src/main/res/menu/menu_main.xml b/app/src/main/res/menu/menu_main.xml
index 3e020ba..e4cb74b 100644
--- a/app/src/main/res/menu/menu_main.xml
+++ b/app/src/main/res/menu/menu_main.xml
@@ -5,7 +5,7 @@
-
+ Аудио Рекордер
+
+
+
- Тема Светлая (по умолчанию)
+ - Тема Темная
+
+
+
+ - 48 kHz
+ - 44.1 kHz (CD)
+ - 32 kHz
+ - 22 kHz
+ - 16 kHz (по умолчанию)
+ - 11 kHz
+ - 8 kHz (телефон)
+
+
+
+ - .wav (по умолчанию)
+ - .m4a
+
+
+ Аудио Рекордер
+ Настройки
+ Доступ запрещен
+ Программа для просмотра папок не установлена
+ Файл не найден
+ "Создано с помощью: %1$s"
+ Переименовать запись
+ Нет
+ Да
+ Вы уверены?
+ Удалить запись
+ пауза (звонок)
+ кодировка
+ пауза
+ редактор
+ Отменить запись
+ Вы уверены?
+ запись
+ Кодирование...
+ Запись
+ дБ
+ д
+ %1$s свободно ~ %2$s осталось
+ %1$.1f ГБ
+ %1$.1f МБ
+ %1$.1f кб
+ Переименовать
+ Удалить
+ Открыть папку с записями
+ Список записей пуст\n\nНажмите на "Микрофон" чтобы начать запись
+
+
+ - %d день
+ - %d дня
+ - %d дней
+
+
+
+ - %d час
+ - %d часа
+ - %d часов
+
+
+
+ - %d минута
+ - %d минуты
+ - %d минут
+
+
+
+ - %d секунда
+ - %d секунды
+ - %d секунд
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index aeb2253..423ac87 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -1,7 +1,7 @@
Audio Recorder
-
+
- 48 kHz
- 44.1 kHz (CD)
- 32 kHz
@@ -11,7 +11,7 @@
- 8 kHz (telephone)
-
+
- 48000
- 44100
- 32000
@@ -21,28 +21,56 @@
- 8000
-
+
- .wav (default)
- .m4a
-
+
- wav
- m4a
-
+
- Theme White (default)
- Theme Dark
-
+
- Theme_White
- Theme_Dark
Audio Recorder
Settings
+ Not permitted
+ No folder view application installed
+ File not found
+ "Shared via %1$s"
+ Rename Recording
+ No
+ Yes
+ "Are you sure ? "
+ Delete Recording
+ pause (hold by call)
+ encoding
+ pause
+ edit
+ Confirm cancel
+ Are you sure you want to cancel?
+ recording
+ Encoding...
+ Recording
+ dB
+ "d"
+ %1$s free ~ %2$s left
+ %1$.1f GB
+ %1$.1f MB
+ %1$.1f kb
+ Rename
+ Delete
+ Open Recording Folder
+ Recording List is Empty\n\nClick Record to Start Recording
- %d day
diff --git a/app/src/main/res/xml-ru/pref_general.xml b/app/src/main/res/xml-ru/pref_general.xml
new file mode 100644
index 0000000..5389351
--- /dev/null
+++ b/app/src/main/res/xml-ru/pref_general.xml
@@ -0,0 +1,51 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/xml/pref_general.xml b/app/src/main/res/xml/pref_general.xml
index d4d59d5..faf1cff 100644
--- a/app/src/main/res/xml/pref_general.xml
+++ b/app/src/main/res/xml/pref_general.xml
@@ -8,7 +8,7 @@