Skip to content

Commit 7771907

Browse files
authored
Merge pull request #25 from AP-Atul/fix/bugs
Fix/bugs
2 parents b51869a + 41ad689 commit 7771907

File tree

13 files changed

+79
-33
lines changed

13 files changed

+79
-33
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
| Lite | Online |
1414
| -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
15-
| [Github release v0.12](https://github.com/AP-Atul/music_player_lite/releases/download/v0.12/mplite.apk) | [Github release v0.3](https://github.com/AP-Atul/music_player_lite/releases/download/v0.3/mplite_online.apk) |
15+
| [Github release v0.13](https://github.com/AP-Atul/music_player_lite/releases/download/v0.13/mplite.apk) | [Github release v0.3](https://github.com/AP-Atul/music_player_lite/releases/download/v0.3/mplite_online.apk) |
1616
| <a href="https://apt.izzysoft.de/fdroid/index/apk/com.atul.musicplayer"><img src="https://github.com/AP-Atul/music_player_lite/raw/main/assets/IzzyOnDroid.png" width="200px"></a> | <a href="https://apt.izzysoft.de/fdroid/index/apk/com.atul.musicplayeronline"><img src="https://github.com/AP-Atul/music_player_lite/raw/main/assets/IzzyOnDroid.png" width="200px"></a> |
1717
| <a href="https://play.google.com/store/apps/details?id=com.atul.musicplayer"><img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" width="200px"></a> | |
1818

src/app/build.gradle

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ android {
1818
applicationId "com.atul.musicplayer"
1919
minSdkVersion 23
2020
targetSdkVersion 33
21-
versionCode 12
22-
versionName "0.12"
21+
versionCode 13
22+
versionName "0.13"
2323

2424
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2525
}
@@ -35,14 +35,15 @@ android {
3535
sourceCompatibility JavaVersion.VERSION_1_8
3636
targetCompatibility JavaVersion.VERSION_1_8
3737
}
38+
namespace 'com.atul.musicplayer'
3839
}
3940

4041
dependencies {
4142
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
42-
implementation 'androidx.appcompat:appcompat:1.3.0'
43-
implementation 'com.google.android.material:material:1.3.0'
44-
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
45-
implementation 'androidx.lifecycle:lifecycle-livedata:2.3.1'
46-
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.3.1'
47-
implementation 'com.github.bumptech.glide:glide:4.11.0'
43+
implementation 'androidx.appcompat:appcompat:1.5.1'
44+
implementation 'com.google.android.material:material:1.7.0'
45+
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
46+
implementation 'androidx.lifecycle:lifecycle-livedata:2.5.1'
47+
implementation 'androidx.lifecycle:lifecycle-viewmodel:2.5.1'
48+
implementation 'com.github.bumptech.glide:glide:4.14.2'
4849
}

src/app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
<?xml version="1.0" encoding="utf-8"?>
2-
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
3-
package="com.atul.musicplayer">
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
43

54
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
65
<uses-permission android:name="android.permission.WAKE_LOCK" />

src/app/src/main/java/com/atul/musicplayer/MainActivity.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -68,8 +68,8 @@ public class MainActivity extends AppCompatActivity
6868
@Override
6969
protected void onCreate(Bundle savedInstanceState) {
7070
super.onCreate(savedInstanceState);
71-
setTheme(ThemeHelper.getTheme(MPPreferences.getTheme(getApplicationContext())));
72-
AppCompatDelegate.setDefaultNightMode(MPPreferences.getThemeMode(getApplicationContext()));
71+
setTheme(ThemeHelper.getTheme(MPPreferences.getTheme(MainActivity.this)));
72+
AppCompatDelegate.setDefaultNightMode(MPPreferences.getThemeMode(MainActivity.this));
7373
setContentView(R.layout.activity_main);
7474
MPConstants.musicSelectListener = this;
7575

@@ -82,7 +82,6 @@ protected void onCreate(Bundle savedInstanceState) {
8282
manageStoragePermission(MainActivity.this);
8383

8484
albumState = MPPreferences.getAlbumRequest(this);
85-
MPConstants.musicSelectListener = this;
8685

8786
MaterialCardView playerLayout = findViewById(R.id.player_layout);
8887
albumArt = findViewById(R.id.albumArt);
@@ -274,7 +273,6 @@ else if (id == R.id.player_layout)
274273

275274
private void setUpPlayerDialog() {
276275
playerDialog = new PlayerDialog(this, playerManager, this);
277-
278276
playerDialog.show();
279277
}
280278

@@ -324,7 +322,11 @@ public void sleepTimerOptionSelect() {
324322

325323
private void setUpQueueDialog() {
326324
queueDialog = new QueueDialog(MainActivity.this, playerManager.getPlayerQueue());
327-
queueDialog.setOnDismissListener(v -> playerDialog.show());
325+
queueDialog.setOnDismissListener(v -> {
326+
if(!this.isDestroyed()) {
327+
playerDialog.show();
328+
}
329+
});
328330

329331
playerDialog.dismiss();
330332
queueDialog.show();
@@ -341,15 +343,19 @@ private void setUpSleepTimerDialog() {
341343
return;
342344
}
343345
SleepTimerDialog sleepTimerDialog = new SleepTimerDialog(MainActivity.this, this);
344-
sleepTimerDialog.setOnDismissListener(v -> playerDialog.show());
346+
sleepTimerDialog.setOnDismissListener(v -> {
347+
if(!this.isDestroyed()) playerDialog.show();
348+
});
345349

346350
playerDialog.dismiss();
347351
sleepTimerDialog.show();
348352
}
349353

350354
private void setUpSleepTimerDisplayDialog() {
351355
SleepTimerDisplayDialog sleepTimerDisplayDialog = new SleepTimerDisplayDialog(MainActivity.this, this);
352-
sleepTimerDisplayDialog.setOnDismissListener(v -> playerDialog.show());
356+
sleepTimerDisplayDialog.setOnDismissListener(v -> {
357+
if(!this.isDestroyed()) playerDialog.show();
358+
});
353359

354360
playerDialog.dismiss();
355361
sleepTimerDisplayDialog.show();

src/app/src/main/java/com/atul/musicplayer/activities/PlayerDialog.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,6 @@ public void onClick(View v) {
194194
else if (id == R.id.music_queue) this.playerDialogListener.queueOptionSelect();
195195
else if (id == R.id.sleep_timer) this.playerDialogListener.sleepTimerOptionSelect();
196196

197-
setUpUi();
198197
}
199198

200199
private void setRepeat() {

src/app/src/main/java/com/atul/musicplayer/adapter/QueueAdapter.java

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,15 @@ public class QueueAdapter extends RecyclerView.Adapter<QueueAdapter.MyViewHolder
2424

2525
private final List<Music> musicList;
2626
private final PlayerQueue playerQueue;
27+
private final Music currentMusic;
2728
private final @ColorInt
2829
int colorInt;
2930
int defaultTint;
3031

3132
public QueueAdapter(Context context, List<Music> musics, PlayerQueue playerQueue) {
3233
this.musicList = musics;
3334
this.playerQueue = playerQueue;
35+
this.currentMusic = playerQueue.getCurrentMusic();
3436

3537
colorInt = ThemeHelper.resolveColorAttr(
3638
context,
@@ -51,7 +53,7 @@ public MyViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType)
5153
public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
5254
holder.songName.setText(musicList.get(position).title);
5355

54-
if (playerQueue.getCurrentMusic().title.equals(musicList.get(position).title)) {
56+
if (currentMusic.title.equals(musicList.get(position).title)) {
5557
holder.albumName.setText(R.string.now_playing);
5658
holder.albumName.setTextColor(colorInt);
5759
holder.drag.setImageResource(R.drawable.ic_current_playing);
@@ -106,9 +108,17 @@ public MyViewHolder(@NonNull View itemView) {
106108
drag = itemView.findViewById(R.id.control_drag);
107109

108110
itemView.findViewById(R.id.control_close).setOnClickListener(v -> {
109-
musicList.remove(getAdapterPosition());
110-
playerQueue.removeMusicFromQueue(getAdapterPosition());
111-
notifyDataSetChanged();
111+
int position = getAdapterPosition();
112+
113+
if(position >= 0 && position < musicList.size()) {
114+
boolean isPlaying = currentMusic.title.equals(musicList.get(position).title);
115+
116+
if (!isPlaying) {
117+
musicList.remove(position);
118+
playerQueue.removeMusicFromQueue(position);
119+
notifyItemRemoved(position);
120+
}
121+
}
112122
});
113123
}
114124
}

src/app/src/main/java/com/atul/musicplayer/fragments/SongsFragment.java

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,13 +114,21 @@ private void setUpSearchView() {
114114

115115
@Override
116116
public boolean onQueryTextSubmit(String query) {
117-
updateAdapter(ListHelper.searchMusicByName(unChangedList, query.toLowerCase()));
117+
if(query.length() > 0) {
118+
updateAdapter(ListHelper.searchMusicByName(unChangedList, query.toLowerCase()));
119+
} else {
120+
updateAdapter(unChangedList);
121+
}
118122
return true;
119123
}
120124

121125
@Override
122-
public boolean onQueryTextChange(String newText) {
123-
updateAdapter(ListHelper.searchMusicByName(unChangedList, newText.toLowerCase()));
126+
public boolean onQueryTextChange(String query) {
127+
if(query.length() > 0) {
128+
updateAdapter(ListHelper.searchMusicByName(unChangedList, query.toLowerCase()));
129+
}else {
130+
updateAdapter(unChangedList);
131+
}
124132
return true;
125133
}
126134

src/app/src/main/java/com/atul/musicplayer/helper/ThemeHelper.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,11 @@ public static HashMap<Integer, Integer> getThemeMap() {
6161
}
6262

6363
public static Integer getTheme(Integer accentColor) {
64-
return getThemeMap().get(accentColor);
64+
Integer theme = getThemeMap().get(accentColor);
65+
if(theme == null) {
66+
return getThemeMap().get(R.color.blue);
67+
}
68+
return theme;
6569
}
6670

6771
public static void applySettings(Activity activity) {

src/app/src/main/java/com/atul/musicplayer/player/PlayerManager.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void onAudioFocusChange(final int focusChange) {
8484
public PlayerManager(@NonNull PlayerService playerService) {
8585
this.playerService = playerService;
8686
this.context = playerService.getApplicationContext();
87-
this.playerQueue = new PlayerQueue();
87+
this.playerQueue = PlayerQueue.getInstance();
8888
this.audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
8989

9090
Observer<Integer> progressObserver = percent -> {
@@ -174,7 +174,7 @@ public void setPlayerListener(PlayerListener listener) {
174174
}
175175

176176
public void setMusicList(List<Music> musicList) {
177-
playerQueue.setCurrentQueue(musicList);
177+
playerQueue.setCurrentQueue(new ArrayList<>(musicList));
178178
initMediaPlayer(); // play now
179179
}
180180

@@ -186,7 +186,7 @@ public void setMusic(Music music) {
186186
}
187187

188188
public void addMusicQueue(List<Music> musicList) {
189-
playerQueue.addMusicListToQueue(musicList);
189+
playerQueue.addMusicListToQueue(new ArrayList<>(musicList));
190190

191191
if (!mediaPlayer.isPlaying())
192192
initMediaPlayer(); // play when ready

src/app/src/main/java/com/atul/musicplayer/player/PlayerQueue.java

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,23 @@
88
import java.util.Random;
99

1010
public class PlayerQueue {
11+
private static PlayerQueue instance = null;
1112
private final Random random = new Random();
1213
private List<Music> currentQueue;
1314
private List<Integer> played;
1415
private boolean shuffle = false;
1516
private boolean repeat = false;
1617
private int currentPosition = 0;
1718

19+
public static PlayerQueue getInstance() {
20+
if (instance == null) {
21+
instance = new PlayerQueue();
22+
}
23+
return instance;
24+
}
25+
1826
private boolean isCurrentPositionOutOfBound(int pos) {
19-
return pos >= currentQueue.size() || pos <= 0;
27+
return pos >= currentQueue.size() || pos < 0;
2028
}
2129

2230
public boolean isShuffle() {
@@ -85,11 +93,19 @@ public void prev() {
8593
public void removeMusicFromQueue(int position) {
8694
if (!isCurrentPositionOutOfBound(position)) {
8795
currentQueue.remove(position);
96+
if(currentPosition > position)
97+
currentPosition -= 1;
8898
}
8999
}
90100

91101
public void swap(int one, int two) {
92102
if (!isCurrentPositionOutOfBound(one) && !isCurrentPositionOutOfBound(two)) {
103+
if(one == currentPosition) {
104+
currentPosition = two;
105+
}
106+
else if(two == currentPosition) {
107+
currentPosition = one;
108+
}
93109
Collections.swap(currentQueue, one, two);
94110
}
95111
}

0 commit comments

Comments
 (0)