diff --git a/app/src/main/java/com/prangesoftwaresolutions/audioanchor/activities/PlayActivity.java b/app/src/main/java/com/prangesoftwaresolutions/audioanchor/activities/PlayActivity.java
index 66c6e16..5c147c8 100644
--- a/app/src/main/java/com/prangesoftwaresolutions/audioanchor/activities/PlayActivity.java
+++ b/app/src/main/java/com/prangesoftwaresolutions/audioanchor/activities/PlayActivity.java
@@ -53,6 +53,8 @@
import com.prangesoftwaresolutions.audioanchor.utils.SkipIntervalUtils;
import com.prangesoftwaresolutions.audioanchor.utils.StorageUtil;
import com.prangesoftwaresolutions.audioanchor.utils.Utils;
+import android.widget.ImageButton;
+
import java.util.ArrayList;
@@ -114,6 +116,11 @@ public class PlayActivity extends AppCompatActivity {
// Shared preferences
SharedPreferences mSharedPreferences;
+ // Volume
+ private int mCurrentVolumePercent = 100;
+ private final int VOLUME_STEP_PERCENT = 5; // Volume control step
+ private TextView mVolumeText;
+
@Override
protected void onCreate(Bundle savedInstanceState) {
Utils.setActivityTheme(this);
@@ -271,6 +278,31 @@ public void onStopTrackingTouch(SeekBar seekBar) {
params.addRule(RelativeLayout.BELOW, mAlbumTV.getId());
mCoverIV.setLayoutParams(params);
}
+
+ // Volume
+ ImageButton mVolDownIV = findViewById(R.id.volume_down);
+ ImageButton mVolUpIV = findViewById(R.id.volume_up);
+ mVolumeText = findViewById(R.id.volume_text);
+ mVolumeText.setText(getString(R.string.volume_label, mCurrentVolumePercent));
+
+ View.OnClickListener volumeClickListener = v -> {
+ if (mPlayer == null) return;
+
+ if (v.getId() == R.id.volume_down) {
+ mCurrentVolumePercent = Math.max(0, mCurrentVolumePercent - VOLUME_STEP_PERCENT);
+ } else if (v.getId() == R.id.volume_up) {
+ mCurrentVolumePercent = Math.min(100, mCurrentVolumePercent + VOLUME_STEP_PERCENT);
+ }
+
+ mPlayer.setVolume(mCurrentVolumePercent / 100f);
+ mPlayer.setCurrentVolume(mCurrentVolumePercent);
+
+ mVolumeText.setText(getString(R.string.volume_label, mCurrentVolumePercent));
+ };
+
+ mVolDownIV.setOnClickListener(volumeClickListener);
+ mVolUpIV.setOnClickListener(volumeClickListener);
+
}
void initSkipButtons() {
@@ -443,6 +475,10 @@ public void onServiceConnected(ComponentName name, IBinder service) {
} else if (mSleepTimer != null) {
mPlayer.connectSleepTimer(mSleepTimer);
}
+
+ // Volume
+ mCurrentVolumePercent = mPlayer.getCurrentVolume();
+ mVolumeText.setText(getString(R.string.volume_label, mCurrentVolumePercent));
}
@Override
diff --git a/app/src/main/java/com/prangesoftwaresolutions/audioanchor/services/MediaPlayerService.java b/app/src/main/java/com/prangesoftwaresolutions/audioanchor/services/MediaPlayerService.java
index b08c38d..e113687 100644
--- a/app/src/main/java/com/prangesoftwaresolutions/audioanchor/services/MediaPlayerService.java
+++ b/app/src/main/java/com/prangesoftwaresolutions/audioanchor/services/MediaPlayerService.java
@@ -136,6 +136,9 @@ public class MediaPlayerService extends Service implements MediaPlayer.OnComplet
SensorManager mSensorManager;
boolean mStopAtEndOfCurrentTrack = false;
+ // Volume variables
+ private int mCurrentVolume = 100;
+
@Override
public void onCreate() {
super.onCreate();
@@ -416,7 +419,7 @@ public void onAudioFocusChange(int focusState) {
play();
mIsPausedByTransientFocusLoss = false;
}
- setVolume(1.0f);
+ setVolume(mCurrentVolume / 100f);
break;
case AudioManager.AUDIOFOCUS_LOSS:
// Lost focus for an unbounded amount of time: stop playback and release media player
@@ -440,6 +443,7 @@ public void onAudioFocusChange(int focusState) {
if (mMediaPlayer.isPlaying()) {
boolean duckAudio = mSharedPreferences.getBoolean(getString(R.string.settings_duck_audio_key), Boolean.getBoolean(getString(R.string.settings_duck_audio_default)));
if (duckAudio) {
+ mCurrentVolume = 10;
setVolume(0.1f);
} else {
pauseDueToAudioInterruption();
@@ -950,6 +954,7 @@ public void decreaseVolume(int step, int totalSteps) {
float deltaVolume = (float) (1.0 / totalSteps);
float currVolume = (float) (1.0 - (step * deltaVolume));
if (mMediaPlayer != null) {
+ mCurrentVolume = (int)(currVolume * 100);
setVolume(currVolume);
}
}
@@ -1118,4 +1123,12 @@ private void setMediaPlaybackState(int state) {
}
mediaSession.setPlaybackState(playbackstateBuilder.build());
}
+
+ // Volume
+ public int getCurrentVolume() {
+ return mCurrentVolume;
+ }
+ public void setCurrentVolume(int value) {
+ mCurrentVolume = value;
+ }
}
diff --git a/app/src/main/res/drawable-hdpi/ic_volume_down.png b/app/src/main/res/drawable-hdpi/ic_volume_down.png
new file mode 100644
index 0000000..20bdd69
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_volume_down.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_volume_down_pressed.png b/app/src/main/res/drawable-hdpi/ic_volume_down_pressed.png
new file mode 100644
index 0000000..25f3f45
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_volume_down_pressed.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_volume_up.png b/app/src/main/res/drawable-hdpi/ic_volume_up.png
new file mode 100644
index 0000000..3f5c34a
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_volume_up.png differ
diff --git a/app/src/main/res/drawable-hdpi/ic_volume_up_pressed.png b/app/src/main/res/drawable-hdpi/ic_volume_up_pressed.png
new file mode 100644
index 0000000..2519b31
Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_volume_up_pressed.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_volume_down.png b/app/src/main/res/drawable-mdpi/ic_volume_down.png
new file mode 100644
index 0000000..3cc215a
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_volume_down.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_volume_down_pressed.png b/app/src/main/res/drawable-mdpi/ic_volume_down_pressed.png
new file mode 100644
index 0000000..e5325c9
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_volume_down_pressed.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_volume_up.png b/app/src/main/res/drawable-mdpi/ic_volume_up.png
new file mode 100644
index 0000000..923c485
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_volume_up.png differ
diff --git a/app/src/main/res/drawable-mdpi/ic_volume_up_pressed.png b/app/src/main/res/drawable-mdpi/ic_volume_up_pressed.png
new file mode 100644
index 0000000..244d26f
Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_volume_up_pressed.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_volume_down.png b/app/src/main/res/drawable-xhdpi/ic_volume_down.png
new file mode 100644
index 0000000..b5d1b55
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_volume_down.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_volume_down_pressed.png b/app/src/main/res/drawable-xhdpi/ic_volume_down_pressed.png
new file mode 100644
index 0000000..8a1ae31
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_volume_down_pressed.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_volume_up.png b/app/src/main/res/drawable-xhdpi/ic_volume_up.png
new file mode 100644
index 0000000..8413334
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_volume_up.png differ
diff --git a/app/src/main/res/drawable-xhdpi/ic_volume_up_pressed.png b/app/src/main/res/drawable-xhdpi/ic_volume_up_pressed.png
new file mode 100644
index 0000000..7c9b4a7
Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_volume_up_pressed.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_volume_down.png b/app/src/main/res/drawable-xxhdpi/ic_volume_down.png
new file mode 100644
index 0000000..2daa1fc
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_volume_down.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_volume_down_pressed.png b/app/src/main/res/drawable-xxhdpi/ic_volume_down_pressed.png
new file mode 100644
index 0000000..a20e2bf
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_volume_down_pressed.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_volume_up.png b/app/src/main/res/drawable-xxhdpi/ic_volume_up.png
new file mode 100644
index 0000000..627b855
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_volume_up.png differ
diff --git a/app/src/main/res/drawable-xxhdpi/ic_volume_up_pressed.png b/app/src/main/res/drawable-xxhdpi/ic_volume_up_pressed.png
new file mode 100644
index 0000000..27579af
Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_volume_up_pressed.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_volume_down.png b/app/src/main/res/drawable-xxxhdpi/ic_volume_down.png
new file mode 100644
index 0000000..1ecb205
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_volume_down.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_volume_down_pressed.png b/app/src/main/res/drawable-xxxhdpi/ic_volume_down_pressed.png
new file mode 100644
index 0000000..aa46fce
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_volume_down_pressed.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_volume_up.png b/app/src/main/res/drawable-xxxhdpi/ic_volume_up.png
new file mode 100644
index 0000000..16ca4af
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_volume_up.png differ
diff --git a/app/src/main/res/drawable-xxxhdpi/ic_volume_up_pressed.png b/app/src/main/res/drawable-xxxhdpi/ic_volume_up_pressed.png
new file mode 100644
index 0000000..eeb1cdf
Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_volume_up_pressed.png differ
diff --git a/app/src/main/res/layout/activity_play.xml b/app/src/main/res/layout/activity_play.xml
index 63ed13e..bbc9115 100644
--- a/app/src/main/res/layout/activity_play.xml
+++ b/app/src/main/res/layout/activity_play.xml
@@ -46,6 +46,52 @@
android:orientation="vertical"
android:paddingBottom="@dimen/small_margin"
android:paddingTop="@dimen/small_margin">
+
+
+
+
+
+
+
+
+
+
+
+
+
Воспроизвести
Назад
Вперед
+ Закладка
+ Громкость: %d%%
+ Увеличить громкость
+ Уменьшить громкость
Пусто. Добавьте папку в вашу библиотеку.
@@ -23,12 +27,41 @@
Введите название закладки.
Переход к закладке \"%s\" на %s.
Закладка удалена.
+ Добавлена закладка \"%s\" на %s.
+
+ - Трек %d удалён.
+ - Треков удалено: %d.
+
+
+ - Из библиотеки удалён %d трек.
+ - Из библиотеки удалено треков: %d.
+
+
+ - Альбом %d
+ - Альбомов: %d
+
+
+ - Трек %d
+ - Треков %d
+
+
+ Deleted %s and %s.
+
+ - Удалён %d альбом из вашей библиотеки.
+ - Удалёно альбом из вашей библиотеки: %d.
+
+
+ - Удалён %d каталог из вашей библиотеки.
+ - Удалёно каталогов из вашей библиотеки: %d.
+
Не удалось отметить проигрывемый эпизод как неначатый.
Не удалось отметить проигрывемый эпизод как прослушанный.
Путь: %s
Выбранная папка уже существует в вашей библиотеке: %s.
Нельзя добавлять подпапки уже существующих каталогов вашей библиотеки:\n%s\n%s.
Нельзя добавлять родительльские каталоги уже существующих папок вашей библиотеки:\n%s\n%s.
+ Текущий файл не может воспроизводиться на скорости %.1fx. Пожалуйста, выберите другое значение.
+
Автоматическое воспроизведение
@@ -43,16 +76,33 @@
Вибрировать при сбросе таймера встряхиванием
Воспроизводить текущий эпизод до конца
Получить название эпизода из метаданных файла
- Темная тема
+ Отображать обложку под информацией о треке
+ Тёмная тема
+ Использовать системную тему
+ Светлая тема
+ Тёмная тема
Время автоперемотки назад
Начать воспроизведение сразу после выбора эпизода
+ Приглушать звук при прерывании воспроизведения
Показывать скрытые файлы
Внешний вид
Воспроизведение
+ Закладки
Прочее
По названию
По папке
Порядок сортировки альбомов
+ Добавлять и обновлять закладки последней и предпоследней позиции при каждом нажатии воспроизведения
+ Отображать обложку на экране блокировки
+ Добавлять закладку по одному нажатию на значок закладки
+ Интервалы пропуска
+ Перемотка вперёд №1
+ Перемотка вперёд №2
+ Перемотка назад №1
+ Перемотка назад №2
+ Перемотка назад в уведомлении
+ Перемотка вперёд в уведомлении
+ Интервал пропуска для %s
Название
@@ -72,17 +122,24 @@
Поставить закладку на
Пока еще нет закладок в этой аудиокниге.
Закладки
+ Без названия
Удалить из устройства
Удалить из базы данных
Удалить из библиотеки
Отметить как неначатый
Отметить как прослушанный
+
+ - Выделен: %d
+ - Выделено: %d
+
Отметить все эпизоды как неначатые
Отметить все эпизоды как прослушанные
Скорость воспроизведения
Список участников можно найти по ссылке
Там же там можно сообщить об ошибке, внести свой вклад в развитие или поставить звезду, если приложение понравилось.
- Добавить папку\nс аудиофайлами
+ Если вам нравится приложение и вы хотите сделать пожертвование, вы можете сделать это через
+ Спасибо :)
+ Добавить папку\nс аудиофайлами
Добаавить папку\nс подпапками \nаудиофайлов
Вы можете выбрать одну папку с аудиофайлами или родительский каталог, содержащий несколько папок с аудиофайлами.
@@ -94,6 +151,25 @@
Закрыть
Удалить
Введите время, на которое хотите перейти
+
+ - Вы уверены, что хотите удалить выбранный каталог и его содержимое?
+ - Вы уверены, что хотите удалить выбранные каталоги и их содержимое?
+
+
+ - Вы уверены, что хотите удалить выбранный альбом и его содержимое из вашей библиотеки? Эта операция будет выполнена только для файлов, которых больше нет в файловой системе.
+ - Вы уверены, что хотите удалить выбранные альбомы и их содержимое из вашей библиотеки? Эта операция будет выполнена только для файлов, которых больше нет в файловой системе.
+
+
+ - Вы уверены, что хотите удалить выбранный трек?
+ - Вы уверены, что хотите удалить выбранные треки?
+
+
+ - Вы уверены, что хотите удалить выбранный трек из библиотеки? Эта операция будет выполнена только для файлов, которых больше нет в файловой системе.
+ - Вы уверены, что хотите удалить выбранные треки из библиотеки? Эта операция будет выполнена только для файлов, которых больше нет в файловой системе.
+
Удалить эту закладку?
Вы уверены, что хотите удалить выбранную папку из вашей библиотеки? Это также удалит альбомы, аудиофайлы и закладки из вашей библиотеки.
+
+ <предпоследняя позиция воспроизведения>
+ <последняя позиция воспроизведения>
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 70a97cf..cc1b404 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -6,6 +6,9 @@
Backward
Forward
Bookmark
+ Volume: %d%%
+ Volume up
+ Volume down
It\'s a bit empty here. Start by adding a directory to your library.