Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .idea/compiler.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/gradle.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 10 additions & 0 deletions .idea/runConfigurations.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 12 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
package="com.com.clone_spotify">

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />

<application
android:name=".SpotifyApplication"
Expand Down Expand Up @@ -30,6 +31,17 @@
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service android:name=".service.MusicService">
<intent-filter>
<action android:name="android.media.browse.MediaBrowserService" />
</intent-filter>
</service>

<receiver android:name="androidx.media.session.MediaButtonReceiver">
<intent-filter>
<action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
</receiver>
</application>

</manifest>
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.com.clone_spotify.adapters;

import android.content.Context;
import android.support.v4.media.MediaMetadataCompat;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
Expand All @@ -12,44 +13,35 @@
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;
import com.bumptech.glide.request.RequestOptions;
import com.com.clone_spotify.R;
import com.com.clone_spotify.model.Library;
import com.google.firebase.storage.FirebaseStorage;
import com.google.firebase.storage.StorageReference;

import java.io.IOException;
import java.util.ArrayList;

public class LibraryAdapter extends RecyclerView.Adapter<LibraryAdapter.LibraryViewHolder> {

private static final String TAG = "LibraryAdapter";
private ArrayList<Library> arrayList;
private Context context;
private ArrayList<MediaMetadataCompat> mMediaList = new ArrayList<>();
private Context mContext;
private IMediaSelector mIMediaSelector;
private int mSelectedIndex;

//private LibraryAdapter mContext;

public LibraryAdapter(ArrayList<Library> arrayList, Context context) {
this.arrayList = arrayList;
this.context = context;
public LibraryAdapter(Context context, ArrayList<MediaMetadataCompat> mediaList, IMediaSelector mediaSelector) {
Log.d(TAG, "PlaylistRecyclerAdapter: called.");
this.mMediaList = mediaList;
this.mContext = context;
this.mIMediaSelector = mediaSelector;
mSelectedIndex = -1;
}

// public void includesForDownloadFiles() throws IOException {
// FirebaseStorage storage = FirebaseStorage.getInstance();
//
// // Create a reference from an HTTPS URL
// // Note that in the URL, characters are URL escaped!
// StorageReference httpsReference = storage.getReferenceFromUrl("https://firebasestorage.googleapis.com/v0/b/com-cos-clonespotifylogin.appspot.com/o/Bruno%20Mars%2C%20Anderson%20.Paak%2C%20Silk%20Sonic%20-%20Leave%20the%20Door%20Open.png?alt=media&token=157d3b00-7420-4cfd-a455-127df3de0c58");
// Log.d(TAG, "includesForDownloadFiles: 다운로드 ");
// }


@NonNull
@Override
// ViewHolder 만듬
public LibraryViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.library_item, parent,false);
LibraryViewHolder holder = new LibraryViewHolder(view);
LibraryViewHolder holder = new LibraryViewHolder(view, mIMediaSelector);
Log.d(TAG, "onCreateViewHolder: 온크레이트 뷰 홀더 만듬");

return holder;
Expand All @@ -64,32 +56,64 @@ public void onBindViewHolder(@NonNull LibraryViewHolder holder, int position) {
// 글라이드로 앨범 이미지 넣기
Glide.with(holder.itemView)
//.setDefaultRequestOptions(requestOptions)
.load(arrayList.get(position).getAlbumImg())
.load(mMediaList.get(position).getDescription().getIconUri())
.centerCrop()
.into(holder.ivAlbumImg);
holder.tvSongTitle.setText(arrayList.get(position).getSongTitle());
holder.tvArtistName.setText(arrayList.get(position).getArtistName());
holder.tvSongTitle.setText(mMediaList.get(position).getDescription().getTitle());
holder.tvArtistName.setText(mMediaList.get(position).getDescription().getSubtitle());
Log.d(TAG, "onBindViewHolder: 글라이드로 앨범 이미지 넣기");
}

@Override
public int getItemCount() {
Log.d(TAG, "getItemCount: ");
// 삼항 연산자
return (arrayList != null ? arrayList.size() : 0);
return (mMediaList != null ? mMediaList.size() : 0);
}

public void setSelectedIndex(int index){
mSelectedIndex = index;
notifyDataSetChanged();
}

public int getIndexOfItem(MediaMetadataCompat mediaItem){
for(int i = 0; i<mMediaList.size(); i++ ){
if(mMediaList.get(i).getDescription().getMediaId().equals(mediaItem.getDescription().getMediaId())){
return i;
}
}
return -1;
}

public int getSelectedIndex(){
return mSelectedIndex;
}

public class LibraryViewHolder extends RecyclerView.ViewHolder {
ImageView ivAlbumImg;
TextView tvSongTitle;
TextView tvArtistName;
private ImageView ivAlbumImg;
private TextView tvSongTitle;
private TextView tvArtistName;
private IMediaSelector iMediaSelector;

public LibraryViewHolder(@NonNull View itemView) {
public LibraryViewHolder(@NonNull View itemView, IMediaSelector songSelector) {
super(itemView);
this.ivAlbumImg = itemView.findViewById(R.id.ivAlbumImg);
this.tvSongTitle = itemView.findViewById(R.id.tvSongTitle);
this.tvArtistName = itemView.findViewById(R.id.tvArtistName);
ivAlbumImg = itemView.findViewById(R.id.ivAlbumImg);
tvSongTitle = itemView.findViewById(R.id.tvSongTitle);
tvArtistName = itemView.findViewById(R.id.tvArtistName);
iMediaSelector = songSelector;
Log.d(TAG, "LibraryViewHolder: 라이브러리 뷰 홀더");
initLr();
}

public void initLr(){
itemView.setOnClickListener(view -> {
Log.d(TAG, "initLr: LibraryAdapter 리스트중 곡 선택");
iMediaSelector.onMediaSelected(getAdapterPosition());
});
}
}

public interface IMediaSelector{
void onMediaSelected(int position);
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
package com.com.clone_spotify.adapters;

public class SongAdapter {
// 1곡 재생화면 어댑터 수정 중
}
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ public void subscribeToNewSong(String currentPlaySongId, String newPlatSongId){
}
mMediaBrowser.subscribe(newPlatSongId, mMediaBrowserSubscriptionCallback);
}

// 최근 재생 플레이 리스트
// public void subscribeToNewPlaylist(String currentPlaylistId, String newPlatlistId){
// if(!currentPlaylistId.equals("")){
// mMediaBrowser.unsubscribe(currentPlaylistId);
Expand Down
61 changes: 0 additions & 61 deletions app/src/main/java/com/com/clone_spotify/di/AppModule.java

This file was deleted.

47 changes: 0 additions & 47 deletions app/src/main/java/com/com/clone_spotify/di/ServiceModule.java

This file was deleted.

41 changes: 6 additions & 35 deletions app/src/main/java/com/com/clone_spotify/model/Library.java
Original file line number Diff line number Diff line change
@@ -1,45 +1,16 @@
package com.com.clone_spotify.model;

import android.widget.Button;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class Library {
private String mediaId;
private String albumImg;
private String songTitle;
private String artistName;
//private Button like;

public String getAlbumImg() {
return albumImg;
}

public void setAlbumImg(String albumImg) {
this.albumImg = albumImg;
}

public String getSongTitle() {
return songTitle;
}

public void setSongTitle(String songTitle) {
this.songTitle = songTitle;
}

public String getArtistName() {
return artistName;
}

public void setArtistName(String artistName) {
this.artistName = artistName;
}

// public Button getLike() {
// return like;
// }
//
// public void setLike(Button like) {
// this.like = like;
// }
private String songUrl;
}
16 changes: 16 additions & 0 deletions app/src/main/java/com/com/clone_spotify/model/Media.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.com.clone_spotify.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@AllArgsConstructor
@NoArgsConstructor
@Data
public class Media {
private String mediaId;
private String albumImg;
private String songTitle;
private String artistName;
private String songUrl;
}
Loading