Skip to content

Commit

Permalink
update Stream-->Shuffle, Repeat/Loop... Stream from list, Fix list..
Browse files Browse the repository at this point in the history
  • Loading branch information
kimsultech committed Feb 22, 2021
1 parent baffb1a commit eb566c3
Show file tree
Hide file tree
Showing 8 changed files with 575 additions and 170 deletions.
8 changes: 4 additions & 4 deletions app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ dependencies {
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.4'
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
//implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.2.0'
//implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.2.0'
implementation 'androidx.multidex:multidex:2.0.1'
implementation 'androidx.navigation:navigation-fragment:2.3.2'
implementation 'androidx.navigation:navigation-ui:2.3.2'
Expand All @@ -67,7 +67,7 @@ dependencies {
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.9.0'

// LiveData
implementation 'android.arch.lifecycle:extensions:1.1.1'
//implementation 'android.arch.lifecycle:extensions:1.1.1'

// Glide
implementation 'com.github.bumptech.glide:glide:4.11.0'
Expand All @@ -80,7 +80,7 @@ dependencies {
implementation 'com.google.android.gms:play-services-oss-licenses:17.0.0'

// Lottie
implementation "com.airbnb.android:lottie:3.6.0"
//implementation "com.airbnb.android:lottie:3.6.0"

// HX Audio
implementation project(':hxaudio-custom')
Expand Down
141 changes: 100 additions & 41 deletions app/src/main/java/com/kangtech/tauonremote/adapter/TrackListAdapter.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.kangtech.tauonremote.adapter;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Build;
import android.os.Handler;
import android.view.LayoutInflater;
Expand All @@ -20,6 +21,7 @@

import com.bumptech.glide.Glide;
import com.google.android.material.bottomsheet.BottomSheetBehavior;
import com.huhx0015.hxaudio.audio.HXMusic;
import com.kangtech.tauonremote.R;
import com.kangtech.tauonremote.api.ApiServiceInterface;
import com.kangtech.tauonremote.model.track.TrackListModel;
Expand All @@ -40,13 +42,17 @@
import io.reactivex.schedulers.Schedulers;
import okhttp3.ResponseBody;

import static android.content.Context.MODE_PRIVATE;

public class TrackListAdapter extends RecyclerView.Adapter<TrackListAdapter.TrackListViewHolder> implements Filterable {

private TrackListModel trackListModels;
private TrackListModel getTrackListModelsFiltered;
private final Context context;
private final String playlistID;

private SharedPreferences.Editor editor;

public TrackListAdapter(Context context, TrackListModel trackListModels, String playlistID) {
this.context = context;
this.trackListModels = trackListModels;
Expand Down Expand Up @@ -74,67 +80,113 @@ public void onBindViewHolder(@NonNull TrackListAdapter.TrackListViewHolder holde
.dontAnimate()
.into(holder.ivCover);

if (playlistID.equals(SharedPreferencesUtils.getString("playlistID", "0"))) {
if (trackListModels.tracks.get(position).position == SharedPreferencesUtils.getInt("TrackPosition", 0)) {
holder.llTrack.setBackgroundColor(context.getResources().getColor(R.color.rose_bg_seekbar1));
} else {
holder.llTrack.setBackgroundColor(context.getResources().getColor(R.color.rose_bg_list));
if (!SharedPreferencesUtils.getBoolean("is_stream_mode", true)) {
if (playlistID.equals(SharedPreferencesUtils.getString("playlistID", "0"))) {
if (trackListModels.tracks.get(position).position == SharedPreferencesUtils.getInt("TrackPosition", 0)) {
holder.llTrack.setBackgroundColor(context.getResources().getColor(R.color.rose_bg_seekbar1));
} else {
holder.llTrack.setBackgroundColor(context.getResources().getColor(R.color.rose_bg_list));
}
}
} else {
if (playlistID.equals(SharedPreferencesUtils.getString("playlist_stream", "0"))) {
if (trackListModels.tracks.get(position).id == SharedPreferencesUtils.getInt("trackId_stream", 0)) {
holder.llTrack.setBackgroundColor(context.getResources().getColor(R.color.rose_bg_seekbar1));
} else {
holder.llTrack.setBackgroundColor(context.getResources().getColor(R.color.rose_bg_list));
}
}
}

holder.llTrack.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (playlistID.equals(SharedPreferencesUtils.getString("playlistID", "0"))) {
holder.apiServiceInterface.start(SharedPreferencesUtils.getString("playlistID", "0"), trackListModels.tracks.get(position).position)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
if (!SharedPreferencesUtils.getBoolean("is_stream_mode", true)) {
if (playlistID.equals(SharedPreferencesUtils.getString("playlistID", "0"))) {
holder.apiServiceInterface.start(SharedPreferencesUtils.getString("playlistID", "0"), trackListModels.tracks.get(position).position)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {

}
}

@Override
public void onNext(@io.reactivex.annotations.NonNull ResponseBody responseBody) {
@Override
public void onNext(@io.reactivex.annotations.NonNull ResponseBody responseBody) {

}
}

@Override
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
@Override
public void onError(@io.reactivex.annotations.NonNull Throwable e) {

}
}

@Override
public void onComplete() {
@Override
public void onComplete() {

}
});
} else {
holder.apiServiceInterface.start(playlistID, trackListModels.tracks.get(position).position)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {
}
});

notifyDataSetChanged();

} else {
holder.apiServiceInterface.start(playlistID, trackListModels.tracks.get(position).position)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<ResponseBody>() {
@Override
public void onSubscribe(@io.reactivex.annotations.NonNull Disposable d) {

}

@Override
public void onNext(@io.reactivex.annotations.NonNull ResponseBody responseBody) {

}
}

@Override
public void onNext(@io.reactivex.annotations.NonNull ResponseBody responseBody) {
@Override
public void onError(@io.reactivex.annotations.NonNull Throwable e) {

}
}

@Override
public void onError(@io.reactivex.annotations.NonNull Throwable e) {
@Override
public void onComplete() {

}
}
});

@Override
public void onComplete() {
notifyDataSetChanged();
}
} else {
if (playlistID.equals(SharedPreferencesUtils.getString("playlist_stream", "0"))) {
if (HXMusic.isPlaying()) {
HXMusic.stop();
}

initStream(trackListModels.tracks.get(position).id);

editor = context.getSharedPreferences("tauon_remote", MODE_PRIVATE).edit();
editor.putInt("trackPosition_stream", trackListModels.tracks.get(position).position);
editor.putInt("trackId_stream", trackListModels.tracks.get(position).id);
editor.apply();

notifyDataSetChanged();
} else {
if (HXMusic.isPlaying()) {
HXMusic.stop();
}

initStream(trackListModels.tracks.get(position).id);

editor = context.getSharedPreferences("tauon_remote", MODE_PRIVATE).edit();
editor.putString("playlist_stream", playlistID);
editor.putInt("trackPosition_stream", trackListModels.tracks.get(position).position);
editor.putInt("trackId_stream", trackListModels.tracks.get(position).id);
editor.apply();

}
});
notifyDataSetChanged();
}
}

//MainActivity.bottomSheetBehavior.setState(BottomSheetBehavior.STATE_EXPANDED);
Expand All @@ -143,6 +195,13 @@ public void onComplete() {
});
}

private void initStream(int trackId) {
HXMusic.music()
.load("http://" + Server.BASE_URL + ":7814/api1/file/" + trackId)
.looped(false)
.play(context);
}

@Override
public int getItemCount() {
return trackListModels.tracks.size();
Expand Down
Loading

0 comments on commit eb566c3

Please sign in to comment.