A面合并

This commit is contained in:
lihongwei 2024-11-18 16:52:58 +08:00
parent 3aac60e3ca
commit c62e38eb7e
157 changed files with 741 additions and 910 deletions

BIN
app/OfflineMusicPlayer.jks Normal file

Binary file not shown.

View File

@ -13,19 +13,21 @@ plugins {
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
android { android {
namespace = "com.hi.music.player" namespace = "com.offline.music.playermp3"
compileSdk = 34 compileSdk = 34
defaultConfig { defaultConfig {
//com.hi.music.player //com.hi.music.player
applicationId = "com.hi.music.player.test1" applicationId = "com.offline.music.playermp3"
minSdk = 23 minSdk = 23
targetSdk = 34 targetSdk = 34
versionCode = 1 versionCode = 1
versionName = "1.0.0" versionName = "1.0.0"
setProperty("archivesBaseName", "MusicApp_V" + versionName + "(${versionCode})_$timestamp") setProperty(
"archivesBaseName",
"Offline Music Player" + versionName + "(${versionCode})_$timestamp"
)
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
} }

View File

@ -9,7 +9,7 @@
"client_info": { "client_info": {
"mobilesdk_app_id": "1:550960818622:android:96fd4141e43410fb24f1ef", "mobilesdk_app_id": "1:550960818622:android:96fd4141e43410fb24f1ef",
"android_client_info": { "android_client_info": {
"package_name": "com.hi.music.player.test1" "package_name": "com.offline.music.playermp3"
} }
}, },
"oauth_client": [], "oauth_client": [],

View File

@ -1,6 +1,6 @@
app_name=Music Player app_name=Offline Music Player
package_name=com.hi.music.player.test package_name=com.offline.music.player
keystoreFile=app/MusicPlayer.jks keystoreFile=app/OfflineMusicPlayer.jks
key_alias=MusicPlayerkey0 key_alias=OfflineMusicPlayerkey0
key_store_password=MusicPlayer key_store_password=OfflineMusicPlayer
key_password=MusicPlayer key_password=OfflineMusicPlayer

View File

@ -29,7 +29,7 @@
-dontwarn retrofit2.** -dontwarn retrofit2.**
-dontwarn javax.annotation.Nullable -dontwarn javax.annotation.Nullable
-keep class com.hi.music.player.javabean.A_data.AudioItem { *; } -keep class com.offline.music.playermp3.javabean.A_data.AudioItem { *; }
# 保持 ContextIntent 和权限相关的公共方法 # 保持 ContextIntent 和权限相关的公共方法
-keep class android.content.Context { *; } -keep class android.content.Context { *; }

View File

@ -1,4 +1,4 @@
package com.hi.music.player; package com.offline.music.playermp3;
import android.content.Context; import android.content.Context;

View File

@ -17,9 +17,9 @@
android:allowBackup="true" android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules" android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules" android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/im_logo" android:icon="@drawable/music_player_launch"
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/im_logo" android:roundIcon="@drawable/music_player_launch"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.MusicApp" android:theme="@style/Theme.MusicApp"
tools:targetApi="31"> tools:targetApi="31">

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

View File

@ -1,7 +0,0 @@
package com.hi.music.player.api;
import com.hi.music.player.javabean.CustomerDownload;
public interface onCheckDownload {
void onHasDownload(CustomerDownload customerDownload);
}

View File

@ -1,4 +1,4 @@
package com.hi.music.player; package com.offline.music.playermp3;
import android.app.Application; import android.app.Application;
import android.content.Context; import android.content.Context;
@ -6,16 +6,14 @@ import android.content.Context;
import androidx.annotation.OptIn; import androidx.annotation.OptIn;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.media3.database.StandaloneDatabaseProvider; import androidx.media3.database.StandaloneDatabaseProvider;
import androidx.media3.datasource.cache.LeastRecentlyUsedCacheEvictor;
import androidx.media3.datasource.cache.SimpleCache;
import com.hi.music.player.api.MediaControllerStatusListener; import com.offline.music.playermp3.api.MediaControllerStatusListener;
import com.hi.music.player.firebase.RemoteConfigJava; import com.offline.music.playermp3.firebase.RemoteConfigJava;
import com.hi.music.player.firebase.Sp; import com.offline.music.playermp3.firebase.Sp;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.media3.MyDownloadService; import com.offline.music.playermp3.media3.MyDownloadService;
import com.hi.music.player.media3.MyMediaControllerManager; import com.offline.music.playermp3.media3.MyMediaControllerManager;
import com.hi.music.player.objectbox.ObjectBoxManager; import com.offline.music.playermp3.objectbox.ObjectBoxManager;
public class MusicApplication extends Application { public class MusicApplication extends Application {

View File

@ -1,12 +1,12 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.hi.music.player.ui.fragmnt.A_HomeFragment; import com.offline.music.playermp3.ui.fragmnt.A_HomeFragment;
import com.hi.music.player.ui.fragmnt.A_ImportFragment; import com.offline.music.playermp3.ui.fragmnt.A_ImportFragment;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -12,23 +12,24 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.ui.activity.A_PlayActivity; import com.offline.music.playermp3.ui.activity.A_PlayActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
public class A_ImportFragmentAdapter extends RecyclerView.Adapter<A_ImportFragmentAdapter.ViewHolder> { public class A_ImportFragmentAdapter extends RecyclerView.Adapter<A_ImportFragmentAdapter.ViewHolder> {
private Context context; private Context context;
private List<AudioItem> audioFiles = new ArrayList<>(); private List<AudioItem> audioFiles = new ArrayList<>();
private AudioItem audioItem; private AudioItem audioItem;
private OnOptionClickListener onOptionClickListener;; private OnOptionClickListener onOptionClickListener;
private String newName;
public A_ImportFragmentAdapter(Context context) { public A_ImportFragmentAdapter(Context context, String newName) {
this.context = context; this.context = context;
this.newName = newName;
} }
@NonNull @NonNull
@ -39,21 +40,31 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter<A_ImportFragme
@Override @Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) { public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
audioItem = audioFiles.get(position); AudioItem audioItem1 = audioFiles.get(position);
holder.title.setText(audioItem.getName()); holder.title.setText(audioItem1.getName());
holder.time.setText(audioItem.getDuration()); holder.time.setText(audioItem1.getDuration());
Log.d("Adapter", "onBindViewHolder: " + audioItem.getDuration()); Log.d("Adapter", "onBindViewHolder: " + audioItem1.getDuration());
holder.itemView.setOnClickListener(new View.OnClickListener() { holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
Intent intent = new Intent(context, A_PlayActivity.class); Intent intent = new Intent(context, A_PlayActivity.class);
intent.putExtra("Path", audioItem); intent.putExtra("Path", audioItem1);
intent.putExtra("newName",newName);
context.startActivity(intent);
}
});holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(context, A_PlayActivity.class);
intent.putExtra("Path", audioItem1);
intent.putExtra("newName",newName);
context.startActivity(intent); context.startActivity(intent);
} }
}); });
holder.bind(audioItem1); // 通过 bind 方法将 audioItem1 传递到 ViewHolder
} }
@Override @Override
@ -66,6 +77,11 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter<A_ImportFragme
notifyDataSetChanged(); // Update UI when the data changes notifyDataSetChanged(); // Update UI when the data changes
} }
// 假设你的 adapter 类中有这个方法来返回某个位置的 AudioItem 对象
public AudioItem getAudioFile(int position) {
return audioFiles.get(position); // 返回位置上的 AudioItem 对象
}
public void updateTitle(int position, String newTitle) { public void updateTitle(int position, String newTitle) {
if (position >= 0 && position < audioFiles.size()) { if (position >= 0 && position < audioFiles.size()) {
audioFiles.get(position).setName(newTitle); // 假设 AudioItem 有一个 setName 方法 audioFiles.get(position).setName(newTitle); // 假设 AudioItem 有一个 setName 方法
@ -86,12 +102,12 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter<A_ImportFragme
void onOptionClick(int position, String filePath, View anchorView); void onOptionClick(int position, String filePath, View anchorView);
} }
class ViewHolder extends RecyclerView.ViewHolder { class ViewHolder extends RecyclerView.ViewHolder {
ImageView option; ImageView option;
TextView title; TextView title;
TextView time; TextView time;
private AudioItem audioItem; // 定义一个 audioItem 字段
public ViewHolder(@NonNull View itemView) { public ViewHolder(@NonNull View itemView) {
super(itemView); super(itemView);
@ -101,14 +117,16 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter<A_ImportFragme
time = itemView.findViewById(R.id.time); time = itemView.findViewById(R.id.time);
option.setOnClickListener(v -> { option.setOnClickListener(v -> {
int position = getBindingAdapterPosition(); int position = getAdapterPosition();
if (position != RecyclerView.NO_POSITION && onOptionClickListener != null) { if (position != RecyclerView.NO_POSITION && onOptionClickListener != null && audioItem != null) {
onOptionClickListener.onOptionClick(position, audioItem.getFile(), option); onOptionClickListener.onOptionClick(position, audioItem.getFile(), option);
} }
}); });
} }
// 添加 bind 方法 audioItem 传递给 ViewHolder
public void bind(AudioItem audioItem) {
this.audioItem = audioItem;
}
} }
} }

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -14,10 +14,10 @@ import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.helper.AudioItemDiffCallback; import com.offline.music.playermp3.helper.AudioItemDiffCallback;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.ui.activity.A_PlayActivity; import com.offline.music.playermp3.ui.activity.A_PlayActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -13,10 +13,10 @@ import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.helper.AudioItemDiffCallback; import com.offline.music.playermp3.helper.AudioItemDiffCallback;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.ui.activity.A_PlayActivity; import com.offline.music.playermp3.ui.activity.A_PlayActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -14,10 +14,10 @@ import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.helper.AudioItemDiffCallback; import com.offline.music.playermp3.helper.AudioItemDiffCallback;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.ui.activity.A_PlayActivity; import com.offline.music.playermp3.ui.activity.A_PlayActivity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,27 +1,18 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource; import com.offline.music.playermp3.MusicApplication;
import com.bumptech.glide.load.engine.GlideException; import com.offline.music.playermp3.R;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.offline.music.playermp3.databinding.ItemCategoryBinding;
import com.bumptech.glide.request.RequestListener; import com.offline.music.playermp3.helper.CommonUtils;
import com.bumptech.glide.request.RequestOptions; import com.offline.music.playermp3.javabean.response.child.ResponseCategory;
import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication;
import com.hi.music.player.R;
import com.hi.music.player.databinding.ItemCategoryBinding;
import com.hi.music.player.helper.CommonUtils;
import com.hi.music.player.helper.MyValue;
import com.hi.music.player.javabean.response.child.ResponseCategory;
public class AdapterCategory extends BaseAdapter<ResponseCategory, ItemCategoryBinding>{ public class AdapterCategory extends BaseAdapter<ResponseCategory, ItemCategoryBinding>{

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -14,20 +14,15 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.api.onImageColorListener; import com.offline.music.playermp3.databinding.ItemCategoryListBinding;
import com.hi.music.player.databinding.ItemCategoryListBinding; import com.offline.music.playermp3.databinding.ItemSingerBinding;
import com.hi.music.player.databinding.ItemSingerBinding; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.MyValue;
import com.hi.music.player.helper.MyValue; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.javabean.response.child.ResponseCategoryListChild;
import com.hi.music.player.javabean.response.child.ResponseSingle;
public class AdapterCategoryList extends BaseAdapter<ResponsePlayListInfo, ItemCategoryListBinding> { public class AdapterCategoryList extends BaseAdapter<ResponsePlayListInfo, ItemCategoryListBinding> {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -17,12 +17,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ItemLikeSongBinding; import com.offline.music.playermp3.databinding.ItemLikeSongBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.BoxDownloadSong; import com.offline.music.playermp3.javabean.BoxDownloadSong;
import com.hi.music.player.javabean.BoxLikeSong;
public class AdapterDownloadSong extends BaseAdapter<Download, ItemLikeSongBinding> { public class AdapterDownloadSong extends BaseAdapter<Download, ItemLikeSongBinding> {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -10,13 +10,13 @@ import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.databinding.ItemFooterLoadingBinding; import com.offline.music.playermp3.databinding.ItemFooterLoadingBinding;
import com.hi.music.player.databinding.ItemHomeBinding; import com.offline.music.playermp3.databinding.ItemHomeBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.child.ResponseCategory; import com.offline.music.playermp3.javabean.response.child.ResponseCategory;
import com.hi.music.player.javabean.response.child.ResponseHomeChild; import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild;
import com.hi.music.player.javabean.response.child.ResponseSingle; import com.offline.music.playermp3.javabean.response.child.ResponseSingle;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
@ -12,9 +12,7 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.OptIn; import androidx.annotation.OptIn;
import androidx.lifecycle.Observer;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.media3.exoplayer.offline.Download;
import androidx.media3.exoplayer.offline.DownloadRequest; import androidx.media3.exoplayer.offline.DownloadRequest;
import androidx.media3.exoplayer.offline.DownloadService; import androidx.media3.exoplayer.offline.DownloadService;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
@ -27,22 +25,20 @@ import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.api.onCheckDownload; import com.offline.music.playermp3.api.onCheckDownload;
import com.hi.music.player.databinding.ItemLikeSongBinding; import com.offline.music.playermp3.databinding.ItemLikeSongBinding;
import com.hi.music.player.databinding.ItemSingerBinding; import com.offline.music.playermp3.databinding.ItemSingerBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.BoxDownloadSong; import com.offline.music.playermp3.javabean.BoxDownloadSong;
import com.hi.music.player.javabean.BoxLikeSong; import com.offline.music.playermp3.javabean.BoxLikeSong;
import com.hi.music.player.javabean.CustomerDownload; import com.offline.music.playermp3.javabean.CustomerDownload;
import com.hi.music.player.javabean.response.ResponsePlayUrl; import com.offline.music.playermp3.javabean.response.ResponsePlayUrl;
import com.hi.music.player.javabean.response.child.ResponseSingle; import com.offline.music.playermp3.media3.MyDownloadService;
import com.hi.music.player.media3.MyDownloadService; import com.offline.music.playermp3.network.JsonHelper;
import com.hi.music.player.media3.MyMediaControllerManager; import com.offline.music.playermp3.network.RetrofitManager;
import com.hi.music.player.network.JsonHelper; import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication;
import com.hi.music.player.network.RetrofitManager;
import com.hi.music.player.ui.activity.viewmodel.VMApplication;
import org.json.JSONObject; import org.json.JSONObject;
@ -122,7 +118,7 @@ public class AdapterLikeSong extends BaseAdapter<BoxLikeSong, ItemLikeSongBindin
vb.imDownload.setVisibility(View.GONE); vb.imDownload.setVisibility(View.GONE);
vb.downloadPb.setVisibility(View.VISIBLE); vb.downloadPb.setVisibility(View.VISIBLE);
RetrofitManager.getInstance().getPlayUrl(videoId, new com.hi.music.player.api.RequestListener<ResponseBody>() { RetrofitManager.getInstance().getPlayUrl(videoId, new com.offline.music.playermp3.api.RequestListener<ResponseBody>() {
@Override @Override
public void onFail(String errorMsg) { public void onFail(String errorMsg) {

View File

@ -1,6 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import static androidx.media3.session.legacy.MediaControllerCompat.getMediaController;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -11,16 +9,12 @@ import androidx.media3.common.MediaItem;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners; import com.offline.music.playermp3.MusicApplication;
import com.bumptech.glide.request.RequestOptions; import com.offline.music.playermp3.R;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.databinding.ItemPlayListBinding;
import com.hi.music.player.R; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.api.MediaControllerListener; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.databinding.ItemPlayListBinding; import com.offline.music.playermp3.media3.MyMediaControllerManager;
import com.hi.music.player.helper.CommonUtils;
import com.hi.music.player.helper.MyValue;
import com.hi.music.player.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.media3.MyMediaControllerManager;
public class AdapterPlayList extends BaseAdapter<ResponsePlayListInfo, ItemPlayListBinding> { public class AdapterPlayList extends BaseAdapter<ResponsePlayListInfo, ItemPlayListBinding> {

View File

@ -1,7 +1,6 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
@ -10,13 +9,10 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.databinding.ItemResultBinding;
import com.hi.music.player.databinding.ItemResultBinding; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.ItemDecoration;
import com.hi.music.player.helper.ItemDecoration; import com.offline.music.playermp3.javabean.response.ResponseResultList;
import com.hi.music.player.helper.MyValue;
import com.hi.music.player.javabean.response.ResponseResultList;
import com.hi.music.player.ui.activity.PlayActivity;
public class AdapterResult extends BaseAdapter<ResponseResultList, ItemResultBinding>{ public class AdapterResult extends BaseAdapter<ResponseResultList, ItemResultBinding>{
public AdapterResult(Context mContext) { public AdapterResult(Context mContext) {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -16,11 +16,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ItemResultListAlbumBinding; import com.offline.music.playermp3.databinding.ItemResultListAlbumBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.child.ResponseResultListChild; import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild;
public class AdapterResultListAlbum extends BaseAdapter<ResponseResultListChild, ItemResultListAlbumBinding>{ public class AdapterResultListAlbum extends BaseAdapter<ResponseResultListChild, ItemResultListAlbumBinding>{
@Override @Override

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -16,11 +16,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ItemResultListSongBinding; import com.offline.music.playermp3.databinding.ItemResultListSongBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.child.ResponseResultListChild; import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild;
public class AdapterResultListSong extends BaseAdapter<ResponseResultListChild, ItemResultListSongBinding> { public class AdapterResultListSong extends BaseAdapter<ResponseResultListChild, ItemResultListSongBinding> {
@Override @Override

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -11,12 +11,12 @@ import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop; import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ItemSearchBinding; import com.offline.music.playermp3.databinding.ItemSearchBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.ResponseSearch; import com.offline.music.playermp3.javabean.response.ResponseSearch;
import com.hi.music.player.javabean.response.child.ResponseSearchChild; import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -16,13 +16,12 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ItemSearchBinding; import com.offline.music.playermp3.databinding.ItemSearchBinding;
import com.hi.music.player.databinding.ItemSearchChildBinding; import com.offline.music.playermp3.databinding.ItemSearchChildBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.ResponseSearch; import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild;
import com.hi.music.player.javabean.response.child.ResponseSearchChild;
public class AdapterSearchChild extends BaseAdapter<ResponseSearchChild, ItemSearchChildBinding> { public class AdapterSearchChild extends BaseAdapter<ResponseSearchChild, ItemSearchChildBinding> {
@Override @Override

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -16,11 +16,11 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ItemSingerBinding; import com.offline.music.playermp3.databinding.ItemSingerBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.child.ResponseSingle; import com.offline.music.playermp3.javabean.response.child.ResponseSingle;
public class AdapterSinger extends BaseAdapter<ResponseSingle, ItemSingerBinding> { public class AdapterSinger extends BaseAdapter<ResponseSingle, ItemSingerBinding> {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -7,7 +7,7 @@ import android.view.ViewGroup;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import com.hi.music.player.databinding.ItemSuggestionBinding; import com.offline.music.playermp3.databinding.ItemSuggestionBinding;
public class AdapterSuggestion extends BaseAdapter<String, ItemSuggestionBinding> { public class AdapterSuggestion extends BaseAdapter<String, ItemSuggestionBinding> {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import android.content.Context; import android.content.Context;
import android.view.LayoutInflater; import android.view.LayoutInflater;
@ -8,10 +8,8 @@ import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.viewbinding.ViewBinding; import androidx.viewbinding.ViewBinding;
import com.hi.music.player.api.HomeItemClickListener; import com.offline.music.playermp3.api.HomeItemClickListener;
import com.hi.music.player.databinding.ItemFooterLoadingBinding; import com.offline.music.playermp3.databinding.ItemFooterLoadingBinding;
import com.hi.music.player.javabean.response.child.ResponseCategory;
import com.hi.music.player.javabean.response.child.ResponseSingle;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,13 +1,13 @@
package com.hi.music.player.adapter; package com.offline.music.playermp3.adapter;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.fragment.app.Fragment; import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentActivity;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import com.hi.music.player.ui.fragmnt.HomeFragment; import com.offline.music.playermp3.ui.fragmnt.HomeFragment;
import com.hi.music.player.ui.fragmnt.ProfileFragment; import com.offline.music.playermp3.ui.fragmnt.ProfileFragment;
import com.hi.music.player.ui.fragmnt.SearchFragment; import com.offline.music.playermp3.ui.fragmnt.SearchFragment;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,14 +1,14 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
import androidx.media3.exoplayer.offline.Download; import androidx.media3.exoplayer.offline.Download;
import com.hi.music.player.javabean.BoxLikeSong; import com.offline.music.playermp3.javabean.BoxLikeSong;
import com.hi.music.player.javabean.response.ResponsePlayListInfo; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.javabean.response.ResponseSearch; import com.offline.music.playermp3.javabean.response.ResponseSearch;
import com.hi.music.player.javabean.response.child.ResponseCategory; import com.offline.music.playermp3.javabean.response.child.ResponseCategory;
import com.hi.music.player.javabean.response.child.ResponseResultListChild; import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild;
import com.hi.music.player.javabean.response.child.ResponseSearchChild; import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild;
import com.hi.music.player.javabean.response.child.ResponseSingle; import com.offline.music.playermp3.javabean.response.child.ResponseSingle;
public interface HomeItemClickListener { public interface HomeItemClickListener {

View File

@ -1,6 +1,6 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
import com.hi.music.player.javabean.BoxLikeSong; import com.offline.music.playermp3.javabean.BoxLikeSong;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
public interface MediaControllerStatusListener { public interface MediaControllerStatusListener {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
public interface OnHasUrlAction { public interface OnHasUrlAction {
void onHasUrl(); void onHasUrl();

View File

@ -1,9 +1,7 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
import org.json.JSONObject; import org.json.JSONObject;
import okhttp3.ResponseBody;
public interface RequestListener<T> { public interface RequestListener<T> {
void onFail(String errorMsg); void onFail(String errorMsg);

View File

@ -0,0 +1,7 @@
package com.offline.music.playermp3.api;
import com.offline.music.playermp3.javabean.CustomerDownload;
public interface onCheckDownload {
void onHasDownload(CustomerDownload customerDownload);
}

View File

@ -1,4 +1,4 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
public interface onImageColorListener { public interface onImageColorListener {
void onImageColor(int color); void onImageColor(int color);

View File

@ -1,4 +1,4 @@
package com.hi.music.player.api; package com.offline.music.playermp3.api;
public interface onPlayNextListener { public interface onPlayNextListener {
void onPlayNext(boolean hasNext); void onPlayNext(boolean hasNext);

View File

@ -1,4 +1,4 @@
package com.hi.music.player.customerview; package com.offline.music.playermp3.customerview;
import android.animation.ValueAnimator; import android.animation.ValueAnimator;
import android.content.Context; import android.content.Context;
@ -9,7 +9,7 @@ import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.view.animation.LinearInterpolator; import android.view.animation.LinearInterpolator;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.dialog; package com.offline.music.playermp3.dialog;
import android.annotation.SuppressLint; import android.annotation.SuppressLint;
@ -14,12 +14,10 @@ import android.view.WindowManager;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.DialogFragment; import androidx.fragment.app.DialogFragment;
import androidx.viewbinding.ViewBinding; import androidx.viewbinding.ViewBinding;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.R;
import com.hi.music.player.R;
public abstract class BaseDialog<T extends ViewBinding> extends DialogFragment { public abstract class BaseDialog<T extends ViewBinding> extends DialogFragment {

View File

@ -1,7 +1,6 @@
package com.hi.music.player.dialog; package com.offline.music.playermp3.dialog;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.net.Uri; import android.net.Uri;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
@ -21,15 +20,14 @@ import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions; import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.adapter.AdapterPlayList; import com.offline.music.playermp3.adapter.AdapterPlayList;
import com.hi.music.player.api.onImageColorListener; import com.offline.music.playermp3.api.onImageColorListener;
import com.hi.music.player.databinding.DialogPlayListBinding; import com.offline.music.playermp3.databinding.DialogPlayListBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.response.ResponsePlayListInfo; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.media3.MyControllerView; import com.offline.music.playermp3.media3.MyMediaControllerManager;
import com.hi.music.player.media3.MyMediaControllerManager;
import java.util.List; import java.util.List;

View File

@ -1,21 +1,19 @@
package com.hi.music.player.firebase package com.offline.music.playermp3.firebase
import android.annotation.SuppressLint
import android.app.Application import android.app.Application
import android.content.Context import android.content.Context
import android.os.Handler import android.os.Handler
import android.os.Looper import android.os.Looper
import android.os.Message import android.os.Message
import android.text.TextUtils import android.text.TextUtils
import android.util.Log
import com.google.firebase.remoteconfig.ConfigUpdate import com.google.firebase.remoteconfig.ConfigUpdate
import com.google.firebase.remoteconfig.ConfigUpdateListener import com.google.firebase.remoteconfig.ConfigUpdateListener
import com.google.firebase.remoteconfig.FirebaseRemoteConfig import com.google.firebase.remoteconfig.FirebaseRemoteConfig
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException import com.google.firebase.remoteconfig.FirebaseRemoteConfigException
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue
import com.hi.music.player.BuildConfig import com.offline.music.playermp3.BuildConfig
import com.hi.music.player.helper.CommonUtils import com.offline.music.playermp3.helper.CommonUtils
import java.lang.ref.WeakReference import java.lang.ref.WeakReference

View File

@ -1,4 +1,4 @@
package com.hi.music.player.firebase; package com.offline.music.playermp3.firebase;
import android.content.Context; import android.content.Context;
import android.os.Handler; import android.os.Handler;
@ -17,7 +17,7 @@ import com.google.firebase.remoteconfig.FirebaseRemoteConfig;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigException; import com.google.firebase.remoteconfig.FirebaseRemoteConfigException;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings; import com.google.firebase.remoteconfig.FirebaseRemoteConfigSettings;
import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue; import com.google.firebase.remoteconfig.FirebaseRemoteConfigValue;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Map; import java.util.Map;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.firebase; package com.offline.music.playermp3.firebase;
import android.content.Context; import android.content.Context;
import android.content.SharedPreferences; import android.content.SharedPreferences;
@ -39,6 +39,6 @@ public class Sp {
} }
public String getStringValue(String key) { public String getStringValue(String key) {
return preferences.getString(key, RemoteConfigJava.value_open_type_1); return preferences.getString(key, RemoteConfigJava.value_open_type_0);
} }
} }

View File

@ -1,8 +1,8 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import androidx.recyclerview.widget.DiffUtil; import androidx.recyclerview.widget.DiffUtil;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModelStore; import androidx.lifecycle.ViewModelStore;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import android.content.Context; import android.content.Context;
import android.graphics.Canvas; import android.graphics.Canvas;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import android.content.Context; import android.content.Context;
import android.graphics.Bitmap; import android.graphics.Bitmap;
@ -10,36 +10,26 @@ import android.net.Uri;
import android.util.DisplayMetrics; import android.util.DisplayMetrics;
import android.util.Log; import android.util.Log;
import android.view.View; import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import androidx.annotation.OptIn; import androidx.annotation.OptIn;
import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem;
import androidx.media3.common.MediaMetadata; import androidx.media3.common.MediaMetadata;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.media3.datasource.cache.Cache;
import androidx.media3.datasource.cache.CacheEvictor;
import androidx.media3.datasource.cache.CacheSpan;
import androidx.media3.datasource.cache.SimpleCache;
import androidx.media3.exoplayer.offline.Download; import androidx.media3.exoplayer.offline.Download;
import androidx.palette.graphics.Palette; import androidx.palette.graphics.Palette;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.api.onImageColorListener; import com.offline.music.playermp3.api.onImageColorListener;
import com.hi.music.player.javabean.BoxDownloadSong; import com.offline.music.playermp3.javabean.BoxDownloadSong;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.util.NavigableSet;
import java.util.TreeSet;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
public class CommonUtils { public class CommonUtils {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import android.graphics.Rect; import android.graphics.Rect;
import android.view.View; import android.view.View;
@ -9,7 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView; import androidx.recyclerview.widget.RecyclerView;
import androidx.recyclerview.widget.StaggeredGridLayoutManager; import androidx.recyclerview.widget.StaggeredGridLayoutManager;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
public class ItemDecoration extends RecyclerView.ItemDecoration { public class ItemDecoration extends RecyclerView.ItemDecoration {

View File

@ -1,9 +1,9 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import android.content.Context; import android.content.Context;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.javabean.A_data.Category; import com.offline.music.playermp3.javabean.A_data.Category;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONObject; import org.json.JSONObject;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
public class MyValue { public class MyValue {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import android.content.ActivityNotFoundException; import android.content.ActivityNotFoundException;
import android.content.Context; import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.helper; package com.offline.music.playermp3.helper;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
@ -6,8 +6,6 @@ import androidx.fragment.app.Fragment;
import androidx.lifecycle.ViewModel; import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider; import androidx.lifecycle.ViewModelProvider;
import com.hi.music.player.MusicApplication;
public class ViewModelScope { public class ViewModelScope {
private ViewModelProvider mFragmentProvider; private ViewModelProvider mFragmentProvider;
private ViewModelProvider mActivityProvider; private ViewModelProvider mActivityProvider;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.A_data; package com.offline.music.playermp3.javabean.A_data;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.A_data; package com.offline.music.playermp3.javabean.A_data;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean; package com.offline.music.playermp3.javabean;
import io.objectbox.annotation.Entity; import io.objectbox.annotation.Entity;
import io.objectbox.annotation.Id; import io.objectbox.annotation.Id;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean; package com.offline.music.playermp3.javabean;
import io.objectbox.annotation.Entity; import io.objectbox.annotation.Entity;
import io.objectbox.annotation.Id; import io.objectbox.annotation.Id;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean; package com.offline.music.playermp3.javabean;
import androidx.media3.exoplayer.offline.Download; import androidx.media3.exoplayer.offline.Download;

View File

@ -1,6 +1,6 @@
package com.hi.music.player.javabean; package com.offline.music.playermp3.javabean;
import com.hi.music.player.javabean.response.ResponsePlayUrl; import com.offline.music.playermp3.javabean.response.ResponsePlayUrl;
public class CustomerUrlInfo { public class CustomerUrlInfo {

View File

@ -1,6 +1,6 @@
package com.hi.music.player.javabean.requestbody; package com.offline.music.playermp3.javabean.requestbody;
import com.hi.music.player.javabean.requestbody.child.ContextBody; import com.offline.music.playermp3.javabean.requestbody.child.ContextBody;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,6 +1,6 @@
package com.hi.music.player.javabean.requestbody; package com.offline.music.playermp3.javabean.requestbody;
import com.hi.music.player.javabean.requestbody.child.ContextBody; import com.offline.music.playermp3.javabean.requestbody.child.ContextBody;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,6 +1,6 @@
package com.hi.music.player.javabean.requestbody; package com.offline.music.playermp3.javabean.requestbody;
import com.hi.music.player.javabean.requestbody.child.ContextBody; import com.offline.music.playermp3.javabean.requestbody.child.ContextBody;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,7 +1,6 @@
package com.hi.music.player.javabean.requestbody; package com.offline.music.playermp3.javabean.requestbody;
import com.hi.music.player.javabean.requestbody.child.Client; import com.offline.music.playermp3.javabean.requestbody.child.ContextBody;
import com.hi.music.player.javabean.requestbody.child.ContextBody;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,7 +1,6 @@
package com.hi.music.player.javabean.requestbody; package com.offline.music.playermp3.javabean.requestbody;
import com.hi.music.player.javabean.requestbody.child.Client; import com.offline.music.playermp3.javabean.requestbody.child.ContextBody;
import com.hi.music.player.javabean.requestbody.child.ContextBody;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.requestbody.child; package com.offline.music.playermp3.javabean.requestbody.child;
import java.io.Serializable; import java.io.Serializable;
import java.util.Locale; import java.util.Locale;

View File

@ -1,7 +1,4 @@
package com.hi.music.player.javabean.requestbody.child; package com.offline.music.playermp3.javabean.requestbody.child;
import java.io.Serializable;
import java.util.Locale;
public class ContextBody { public class ContextBody {

View File

@ -1,6 +1,4 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
import com.hi.music.player.javabean.response.child.ResponseCategoryListChild;
import java.io.Serializable; import java.io.Serializable;
import java.util.List; import java.util.List;

View File

@ -1,8 +1,8 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.hi.music.player.javabean.response.child.ResponseHomeChild; import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,4 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
import com.hi.music.player.helper.MyValue;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
/** /**

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,6 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
import com.hi.music.player.javabean.response.child.ResponseResultListChild; import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild;
import java.util.List; import java.util.List;

View File

@ -1,6 +1,6 @@
package com.hi.music.player.javabean.response; package com.offline.music.playermp3.javabean.response;
import com.hi.music.player.javabean.response.child.ResponseSearchChild; import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response.child; package com.offline.music.playermp3.javabean.response.child;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response.child; package com.offline.music.playermp3.javabean.response.child;
public class ResponseCategoryListChild { public class ResponseCategoryListChild {
private String SongTitle; private String SongTitle;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response.child; package com.offline.music.playermp3.javabean.response.child;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response.child; package com.offline.music.playermp3.javabean.response.child;
public class ResponseResultListChild { public class ResponseResultListChild {
private String thumbnail; private String thumbnail;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response.child; package com.offline.music.playermp3.javabean.response.child;
public class ResponseSearchChild { public class ResponseSearchChild {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.javabean.response.child; package com.offline.music.playermp3.javabean.response.child;
import java.io.Serializable; import java.io.Serializable;

View File

@ -1,37 +1,15 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.net.Uri;
import androidx.media3.common.MediaItem; import androidx.media3.common.MediaItem;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.media3.datasource.DataSource; import androidx.media3.datasource.DataSource;
import androidx.media3.datasource.DataSpec;
import androidx.media3.datasource.DefaultDataSource;
import androidx.media3.datasource.DefaultDataSourceFactory;
import androidx.media3.datasource.DefaultHttpDataSource;
import androidx.media3.datasource.ResolvingDataSource;
import androidx.media3.datasource.cache.CacheDataSource;
import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.datasource.cache.SimpleCache;
import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider; import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.MediaSourceFactory;
import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.exoplayer.source.ProgressiveMediaSource;
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy; import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.api.RequestListener;
import com.hi.music.player.helper.CommonUtils;
import com.hi.music.player.javabean.response.ResponsePlayUrl;
import com.hi.music.player.network.JsonHelper;
import com.hi.music.player.network.RetrofitManager;
import org.json.JSONObject;
import java.io.IOException;
import okhttp3.ResponseBody;
public class DynamicMediaSourceFactory implements MediaSource.Factory { public class DynamicMediaSourceFactory implements MediaSource.Factory {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.content.Context; import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.content.Context; import android.content.Context;
@ -8,7 +8,7 @@ import androidx.media3.database.StandaloneDatabaseProvider;
import androidx.media3.datasource.cache.NoOpCacheEvictor; import androidx.media3.datasource.cache.NoOpCacheEvictor;
import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.datasource.cache.SimpleCache;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import java.io.File; import java.io.File;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.app.Notification; import android.app.Notification;
import android.content.Context; import android.content.Context;
@ -18,11 +18,11 @@ import androidx.media3.exoplayer.offline.DownloadNotificationHelper;
import androidx.media3.exoplayer.offline.DownloadService; import androidx.media3.exoplayer.offline.DownloadService;
import androidx.media3.exoplayer.scheduler.Scheduler; import androidx.media3.exoplayer.scheduler.Scheduler;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.api.onCheckDownload; import com.offline.music.playermp3.api.onCheckDownload;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.CustomerDownload; import com.offline.music.playermp3.javabean.CustomerDownload;
import com.hi.music.player.ui.activity.viewmodel.VMApplication; import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.content.ComponentName; import android.content.ComponentName;
import android.net.Uri; import android.net.Uri;
@ -15,21 +15,20 @@ import androidx.media3.session.SessionToken;
import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFuture;
import com.google.common.util.concurrent.MoreExecutors; import com.google.common.util.concurrent.MoreExecutors;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.api.MediaControllerListener; import com.offline.music.playermp3.api.MediaControllerListener;
import com.hi.music.player.api.MediaControllerStatusListener; import com.offline.music.playermp3.api.MediaControllerStatusListener;
import com.hi.music.player.api.OnHasUrlAction; import com.offline.music.playermp3.api.OnHasUrlAction;
import com.hi.music.player.api.onCheckDownload; import com.offline.music.playermp3.api.onCheckDownload;
import com.hi.music.player.api.onPlayNextListener; import com.offline.music.playermp3.api.onPlayNextListener;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.helper.MyValue; import com.offline.music.playermp3.helper.MyValue;
import com.hi.music.player.javabean.CustomerDownload; import com.offline.music.playermp3.javabean.CustomerDownload;
import com.hi.music.player.javabean.response.ResponsePlayListInfo; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.javabean.response.ResponsePlayUrl; import com.offline.music.playermp3.javabean.response.ResponsePlayUrl;
import com.hi.music.player.network.RetrofitManager; import com.offline.music.playermp3.network.RetrofitManager;
import com.hi.music.player.ui.activity.viewmodel.VMApplication; import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutionException;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.content.Context; import android.content.Context;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
@ -14,21 +14,17 @@ import androidx.media3.datasource.DataSpec;
import androidx.media3.datasource.DefaultDataSource; import androidx.media3.datasource.DefaultDataSource;
import androidx.media3.datasource.DefaultHttpDataSource; import androidx.media3.datasource.DefaultHttpDataSource;
import androidx.media3.datasource.ResolvingDataSource; import androidx.media3.datasource.ResolvingDataSource;
import androidx.media3.datasource.TransferListener;
import androidx.media3.datasource.cache.CacheDataSource; import androidx.media3.datasource.cache.CacheDataSource;
import androidx.media3.datasource.cache.SimpleCache; import androidx.media3.datasource.cache.SimpleCache;
import androidx.media3.exoplayer.DefaultLoadControl; import androidx.media3.exoplayer.DefaultLoadControl;
import androidx.media3.exoplayer.ExoPlayer; import androidx.media3.exoplayer.ExoPlayer;
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
import androidx.media3.exoplayer.source.MediaSource; import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.source.ProgressiveMediaSource; import androidx.media3.exoplayer.source.ProgressiveMediaSource;
import androidx.media3.session.MediaSession; import androidx.media3.session.MediaSession;
import androidx.media3.session.MediaSessionService; import androidx.media3.session.MediaSessionService;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import java.io.IOException;
public class PlaybackService extends MediaSessionService { public class PlaybackService extends MediaSessionService {
private MediaSession mediaSession = null; private MediaSession mediaSession = null;

View File

@ -1,14 +1,8 @@
package com.hi.music.player.media3; package com.offline.music.playermp3.media3;
import androidx.media3.common.MediaItem;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.media3.datasource.DataSource; import androidx.media3.datasource.DataSource;
import androidx.media3.exoplayer.drm.DrmSessionManagerProvider;
import androidx.media3.exoplayer.source.DefaultMediaSourceFactory; import androidx.media3.exoplayer.source.DefaultMediaSourceFactory;
import androidx.media3.exoplayer.source.MediaSource;
import androidx.media3.exoplayer.upstream.LoadErrorHandlingPolicy;
import com.hi.music.player.helper.CommonUtils;
public class testSourceFactory implements DataSource.Factory { public class testSourceFactory implements DataSource.Factory {

View File

@ -1,26 +1,25 @@
package com.hi.music.player.network; package com.offline.music.playermp3.network;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.helper.MyValue; import com.offline.music.playermp3.helper.MyValue;
import com.hi.music.player.javabean.response.ResponseCategoryList; import com.offline.music.playermp3.javabean.response.ResponseCategoryList;
import com.hi.music.player.javabean.response.ResponsePlayListInfo; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.javabean.response.ResponsePlayUrl; import com.offline.music.playermp3.javabean.response.ResponsePlayUrl;
import com.hi.music.player.javabean.response.ResponseResult; import com.offline.music.playermp3.javabean.response.ResponseResult;
import com.hi.music.player.javabean.response.ResponseResultList; import com.offline.music.playermp3.javabean.response.ResponseResultList;
import com.hi.music.player.javabean.response.ResponseSearch; import com.offline.music.playermp3.javabean.response.ResponseSearch;
import com.hi.music.player.javabean.response.child.ResponseCategory; import com.offline.music.playermp3.javabean.response.child.ResponseCategory;
import com.hi.music.player.javabean.response.ResponseHome; import com.offline.music.playermp3.javabean.response.ResponseHome;
import com.hi.music.player.javabean.response.child.ResponseHomeChild; import com.offline.music.playermp3.javabean.response.child.ResponseHomeChild;
import com.hi.music.player.javabean.response.child.ResponseResultListChild; import com.offline.music.playermp3.javabean.response.child.ResponseResultListChild;
import com.hi.music.player.javabean.response.child.ResponseSearchChild; import com.offline.music.playermp3.javabean.response.child.ResponseSearchChild;
import com.hi.music.player.javabean.response.child.ResponseSingle; import com.offline.music.playermp3.javabean.response.child.ResponseSingle;
import org.json.JSONArray; import org.json.JSONArray;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;

View File

@ -1,10 +1,9 @@
package com.hi.music.player.network; package com.offline.music.playermp3.network;
import io.reactivex.Observable; import io.reactivex.Observable;
import okhttp3.RequestBody; import okhttp3.RequestBody;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;
import retrofit2.http.Body; import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header; import retrofit2.http.Header;
import retrofit2.http.Headers; import retrofit2.http.Headers;
import retrofit2.http.POST; import retrofit2.http.POST;

View File

@ -1,7 +1,7 @@
package com.hi.music.player.network; package com.offline.music.playermp3.network;
import com.hi.music.player.api.RequestListener; import com.offline.music.playermp3.api.RequestListener;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import org.json.JSONException; import org.json.JSONException;
import org.json.JSONObject; import org.json.JSONObject;

View File

@ -1,15 +1,14 @@
package com.hi.music.player.network; package com.offline.music.playermp3.network;
import com.google.gson.Gson; import com.google.gson.Gson;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.api.RequestListener; import com.offline.music.playermp3.api.RequestListener;
import com.hi.music.player.javabean.requestbody.BodyHome; import com.offline.music.playermp3.javabean.requestbody.BodyHome;
import com.hi.music.player.javabean.requestbody.BodyPlay; import com.offline.music.playermp3.javabean.requestbody.BodyPlay;
import com.hi.music.player.javabean.requestbody.BodyPlayUrl; import com.offline.music.playermp3.javabean.requestbody.BodyPlayUrl;
import com.hi.music.player.javabean.requestbody.BodySearch; import com.offline.music.playermp3.javabean.requestbody.BodySearch;
import com.hi.music.player.javabean.requestbody.BodySearchSuggestion; import com.offline.music.playermp3.javabean.requestbody.BodySearchSuggestion;
import com.hi.music.player.javabean.requestbody.child.Client; import com.offline.music.playermp3.javabean.requestbody.child.Client;
import com.hi.music.player.javabean.requestbody.child.ContextBody;
import java.util.HashMap; import java.util.HashMap;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;

View File

@ -1,14 +1,14 @@
package com.hi.music.player.objectbox; package com.offline.music.playermp3.objectbox;
import android.content.Context; import android.content.Context;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import com.hi.music.player.api.LikeSongListener; import com.offline.music.playermp3.api.LikeSongListener;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.javabean.BoxLikeSong; import com.offline.music.playermp3.javabean.BoxLikeSong;
import com.hi.music.player.javabean.BoxLikeSong_; import com.offline.music.playermp3.javabean.BoxLikeSong_;
import com.hi.music.player.javabean.MyObjectBox; import com.offline.music.playermp3.javabean.MyObjectBox;
import java.util.List; import java.util.List;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.service; package com.offline.music.playermp3.service;
import android.app.Notification; import android.app.Notification;
import android.app.NotificationChannel; import android.app.NotificationChannel;
@ -24,9 +24,9 @@ import androidx.core.app.NotificationCompat;
import androidx.lifecycle.LiveData; import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData; import androidx.lifecycle.MutableLiveData;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.ui.activity.A_PlayActivity; import com.offline.music.playermp3.ui.activity.A_PlayActivity;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
@ -101,8 +101,8 @@ public class MusicPlayerForegroundService extends Service {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_IMMUTABLE : 0); // 适配Android 12 Build.VERSION.SDK_INT >= Build.VERSION_CODES.S ? PendingIntent.FLAG_IMMUTABLE : 0); // 适配Android 12
return new NotificationCompat.Builder(this, CHANNEL_ID) return new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("正在播放音频") // 通知标题 .setContentTitle("Playing audio") // 通知标题
.setContentText("您的音频正在播放") // 通知内容 .setContentText("Your audio is playing") // 通知内容
.setSmallIcon(R.drawable.home_select) // 小图标 .setSmallIcon(R.drawable.home_select) // 小图标
.setContentIntent(pendingIntent) // 点击通知的Intent .setContentIntent(pendingIntent) // 点击通知的Intent
.setPriority(NotificationCompat.PRIORITY_LOW) // 低优先级 .setPriority(NotificationCompat.PRIORITY_LOW) // 低优先级
@ -113,7 +113,7 @@ public class MusicPlayerForegroundService extends Service {
private void createNotificationChannel() { private void createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel serviceChannel = new NotificationChannel( NotificationChannel serviceChannel = new NotificationChannel(
CHANNEL_ID, "音乐播放器频道", NotificationManager.IMPORTANCE_LOW); CHANNEL_ID, "Music player channel", NotificationManager.IMPORTANCE_LOW);
NotificationManager manager = getSystemService(NotificationManager.class); NotificationManager manager = getSystemService(NotificationManager.class);
if (manager != null) { if (manager != null) {
manager.createNotificationChannel(serviceChannel); // 创建渠道 manager.createNotificationChannel(serviceChannel); // 创建渠道
@ -190,7 +190,7 @@ public class MusicPlayerForegroundService extends Service {
if (afd != null) { if (afd != null) {
mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); // 设置数据源 mediaPlayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength()); // 设置数据源
} else { } else {
throw new IOException("无法打开内容URI: " + path); throw new IOException("Unable to open the content URI: " + path);
} }
} catch (SecurityException e) { } catch (SecurityException e) {
Log.e("MusicPlayerService", "权限被拒绝无法访问内容URI: " + path, e); Log.e("MusicPlayerService", "权限被拒绝无法访问内容URI: " + path, e);
@ -208,7 +208,7 @@ public class MusicPlayerForegroundService extends Service {
if (file.exists()) { if (file.exists()) {
mediaPlayer.setDataSource(file.getAbsolutePath()); // 从文件加载 mediaPlayer.setDataSource(file.getAbsolutePath()); // 从文件加载
} else { } else {
throw new IOException("文件未找到: " + path); throw new IOException("File not found: " + path);
} }
} }
} }
@ -225,7 +225,7 @@ public class MusicPlayerForegroundService extends Service {
return (dotIndex > 0) ? fileName.substring(0, dotIndex) : fileName; return (dotIndex > 0) ? fileName.substring(0, dotIndex) : fileName;
} catch (Exception e) { } catch (Exception e) {
Log.e("MusicPlayerService", "获取文件名失败", e); Log.e("MusicPlayerService", "获取文件名失败", e);
return "未知文件"; // 默认文件名 return "Unknown file"; // 默认文件名
} }
} }
@ -249,7 +249,7 @@ public class MusicPlayerForegroundService extends Service {
} else { } else {
pauseAudio(); // 时间到暂停音乐 pauseAudio(); // 时间到暂停音乐
isPlaying.postValue(false); // 更新播放状态 isPlaying.postValue(false); // 更新播放状态
Toast.makeText(getApplicationContext(), "定时器结束", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "Timer end", Toast.LENGTH_SHORT).show();
stopTimer(); // 时间到结束计时器 stopTimer(); // 时间到结束计时器
} }
} }

View File

@ -1,24 +1,22 @@
package com.hi.music.player.ui.activity; package com.offline.music.playermp3.ui.activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.content.ServiceConnection; import android.content.ServiceConnection;
import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.Looper;
import android.util.Log; import android.util.Log;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.View; import android.view.View;
import com.google.android.material.tabs.TabLayout; import com.google.android.material.tabs.TabLayout;
import com.google.android.material.tabs.TabLayoutMediator; import com.google.android.material.tabs.TabLayoutMediator;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.adapter.A_HomeViewPagerAdapter; import com.offline.music.playermp3.adapter.A_HomeViewPagerAdapter;
import com.hi.music.player.databinding.ActivityAhomeBinding; import com.offline.music.playermp3.databinding.ActivityAhomeBinding;
import com.hi.music.player.databinding.HomeTabCustomBinding; import com.offline.music.playermp3.databinding.HomeTabCustomBinding;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.service.MusicPlayerForegroundService; import com.offline.music.playermp3.service.MusicPlayerForegroundService;
import java.util.Locale; import java.util.Locale;

View File

@ -1,4 +1,4 @@
package com.hi.music.player.ui.activity; package com.offline.music.playermp3.ui.activity;
import android.content.ComponentName; import android.content.ComponentName;
import android.content.Context; import android.content.Context;
@ -11,7 +11,6 @@ import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.os.Handler; import android.os.Handler;
import android.os.IBinder; import android.os.IBinder;
import android.os.Looper;
import android.renderscript.Allocation; import android.renderscript.Allocation;
import android.renderscript.Element; import android.renderscript.Element;
import android.renderscript.RenderScript; import android.renderscript.RenderScript;
@ -22,7 +21,6 @@ import android.view.View;
import android.widget.RadioGroup; import android.widget.RadioGroup;
import android.widget.SeekBar; import android.widget.SeekBar;
import android.widget.TextView; import android.widget.TextView;
import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
@ -32,10 +30,10 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.request.target.CustomTarget; import com.bumptech.glide.request.target.CustomTarget;
import com.bumptech.glide.request.transition.Transition; import com.bumptech.glide.request.transition.Transition;
import com.google.android.material.bottomsheet.BottomSheetDialog; import com.google.android.material.bottomsheet.BottomSheetDialog;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.databinding.ActivityAplayBinding; import com.offline.music.playermp3.databinding.ActivityAplayBinding;
import com.hi.music.player.javabean.A_data.AudioItem; import com.offline.music.playermp3.javabean.A_data.AudioItem;
import com.hi.music.player.service.MusicPlayerForegroundService; import com.offline.music.playermp3.service.MusicPlayerForegroundService;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -59,6 +57,7 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
// 设置观察者 // 设置观察者
musicService.getIsPlaying().observe(A_PlayActivity.this, this::updatePlayButton); musicService.getIsPlaying().observe(A_PlayActivity.this, this::updatePlayButton);
musicService.getFileName().observe(A_PlayActivity.this, vb.songTitle::setText); musicService.getFileName().observe(A_PlayActivity.this, vb.songTitle::setText);
// 更新进度条和时间 // 更新进度条和时间
@ -100,6 +99,10 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
loadBackgroundPreference(); // 加载之前保存的背景状态 loadBackgroundPreference(); // 加载之前保存的背景状态
updateSeekBarAndTime();
if (musicService != null) {
musicService.startUpdatingProgress();
}
// 从Intent获取音频项 // 从Intent获取音频项
AudioItem audioItem = (AudioItem) getIntent().getSerializableExtra("Path"); AudioItem audioItem = (AudioItem) getIntent().getSerializableExtra("Path");
@ -108,6 +111,8 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
return; return;
} }
Log.d("paly","-----" +audioItem.getName());
Glide.with(this) Glide.with(this)
.load("file:///android_asset/" + audioItem.getImage()) .load("file:///android_asset/" + audioItem.getImage())
.placeholder(R.mipmap.playing_background) // 默认图片 .placeholder(R.mipmap.playing_background) // 默认图片
@ -120,7 +125,7 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
@Override @Override
public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) { public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition<? super Bitmap> transition) {
// 对图片进行高斯模糊处理 // 对图片进行高斯模糊处理
Bitmap blurredBitmap = blurBitmap(A_PlayActivity.this, resource,5); Bitmap blurredBitmap = blurBitmap(A_PlayActivity.this, resource, 5);
// 将模糊后的图片作为背景设置到 vb.topContainer // 将模糊后的图片作为背景设置到 vb.topContainer
Drawable blurredDrawable = new BitmapDrawable(getResources(), blurredBitmap); Drawable blurredDrawable = new BitmapDrawable(getResources(), blurredBitmap);
@ -134,7 +139,6 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
}); });
startMusicService(audioItem); // 启动音乐服务 startMusicService(audioItem); // 启动音乐服务
setupPlayButtonClickListener(); // 设置播放按钮的点击事件 setupPlayButtonClickListener(); // 设置播放按钮的点击事件
@ -210,21 +214,21 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
// 更新进度条和时间显示 // 更新进度条和时间显示
private void updateSeekBarAndTime() { private void updateSeekBarAndTime() {
if (isBound && musicService != null) { if (isBound && musicService!= null) {
// 观察当前播放进度 // 观察当前播放进度
musicService.getCurrentPositionLiveData().observe(this, position -> { musicService.getCurrentPositionLiveData().observe(this, position -> {
if (musicService.getDurationLiveData().getValue() != null) { Integer duration = musicService.getDurationLiveData().getValue();
int duration = musicService.getDurationLiveData().getValue(); if (duration!= null && duration > 0) {
if (duration > 0) { vb.songSeekbar.setProgress((int) ((position / (float) duration) * 100));
vb.songSeekbar.setProgress((int) ((position / (float) duration) * 100)); vb.current.setText(formatTime(position));
vb.current.setText(formatTime(position));
}
} }
}); });
// 观察音频总时长 // 观察音频总时长
musicService.getDurationLiveData().observe(this, duration -> { musicService.getDurationLiveData().observe(this, duration -> {
vb.time.setText(formatTime(duration)); if (duration!= null) {
vb.time.setText(formatTime(duration));
}
}); });
} }
} }
@ -279,7 +283,6 @@ public class A_PlayActivity extends BaseActivity<ActivityAplayBinding> {
} }
// 保存背景状态到SharedPreferences // 保存背景状态到SharedPreferences
private void saveBackgroundPreference() { private void saveBackgroundPreference() {
SharedPreferences sharedPreferences = getSharedPreferences("AppPreferences", MODE_PRIVATE); SharedPreferences sharedPreferences = getSharedPreferences("AppPreferences", MODE_PRIVATE);

View File

@ -1,9 +1,9 @@
package com.hi.music.player.ui.activity; package com.offline.music.playermp3.ui.activity;
import android.view.View; import android.view.View;
import com.hi.music.player.databinding.ActivityAsettingBinding; import com.offline.music.playermp3.databinding.ActivityAsettingBinding;
import com.hi.music.player.helper.SettingUtil; import com.offline.music.playermp3.helper.SettingUtil;
public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> { public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> {
@ -40,6 +40,10 @@ public class A_SettingActivity extends BaseActivity<ActivityAsettingBinding> {
SettingUtil.openTermsOfService(this); SettingUtil.openTermsOfService(this);
}); });
vb.back.setOnClickListener(v -> {
finish();
});
} }

View File

@ -1,12 +1,12 @@
package com.hi.music.player.ui.activity; package com.offline.music.playermp3.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.os.CountDownTimer; import android.os.CountDownTimer;
import android.view.View; import android.view.View;
import com.hi.music.player.databinding.ActivityAsplashBinding; import com.offline.music.playermp3.databinding.ActivityAsplashBinding;
import com.hi.music.player.firebase.RemoteConfigJava; import com.offline.music.playermp3.firebase.RemoteConfigJava;
import com.hi.music.player.firebase.Sp; import com.offline.music.playermp3.firebase.Sp;
public class A_SplashActivity extends BaseActivity<ActivityAsplashBinding> { public class A_SplashActivity extends BaseActivity<ActivityAsplashBinding> {
@ -46,7 +46,7 @@ public class A_SplashActivity extends BaseActivity<ActivityAsplashBinding> {
return false; return false;
} }
public void intData(){ public void intData() {
countDownTimer = new CountDownTimer(SPLASH_TIME_OUT, 100) { countDownTimer = new CountDownTimer(SPLASH_TIME_OUT, 100) {

View File

@ -1,4 +1,4 @@
package com.hi.music.player.ui.activity; package com.offline.music.playermp3.ui.activity;
import android.content.Intent; import android.content.Intent;
import android.net.Uri; import android.net.Uri;
@ -25,16 +25,16 @@ import androidx.viewbinding.ViewBinding;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop; import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.api.onPlayNextListener; import com.offline.music.playermp3.api.onPlayNextListener;
import com.hi.music.player.databinding.ActivityBaseBinding; import com.offline.music.playermp3.databinding.ActivityBaseBinding;
import com.hi.music.player.databinding.LayoutPanelBinding; import com.offline.music.playermp3.databinding.LayoutPanelBinding;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.helper.MyValue; import com.offline.music.playermp3.helper.MyValue;
import com.hi.music.player.helper.ViewModelScope; import com.offline.music.playermp3.helper.ViewModelScope;
import com.hi.music.player.media3.MyMediaControllerManager; import com.offline.music.playermp3.media3.MyMediaControllerManager;
import com.hi.music.player.ui.activity.viewmodel.VMApplication; import com.offline.music.playermp3.ui.activity.viewmodel.VMApplication;
public abstract class BaseActivity<T extends ViewBinding> extends AppCompatActivity implements View.OnClickListener { public abstract class BaseActivity<T extends ViewBinding> extends AppCompatActivity implements View.OnClickListener {

View File

@ -1,48 +1,34 @@
package com.hi.music.player.ui.activity; package com.offline.music.playermp3.ui.activity;
import static com.bumptech.glide.request.RequestOptions.bitmapTransform; import static com.bumptech.glide.request.RequestOptions.bitmapTransform;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.OptIn; import androidx.annotation.OptIn;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer; import androidx.lifecycle.Observer;
import androidx.media3.common.util.UnstableApi; import androidx.media3.common.util.UnstableApi;
import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.LinearLayoutManager;
import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.GradientDrawable;
import android.os.Bundle;
import android.view.View; import android.view.View;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.engine.GlideException; import com.bumptech.glide.load.engine.GlideException;
import com.bumptech.glide.load.resource.bitmap.BitmapTransitionOptions;
import com.bumptech.glide.load.resource.bitmap.RoundedCorners;
import com.bumptech.glide.request.RequestListener; import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.RequestOptions;
import com.bumptech.glide.request.target.Target; import com.bumptech.glide.request.target.Target;
import com.hi.music.player.MusicApplication; import com.offline.music.playermp3.MusicApplication;
import com.hi.music.player.R; import com.offline.music.playermp3.R;
import com.hi.music.player.adapter.AdapterCategoryList; import com.offline.music.playermp3.adapter.AdapterCategoryList;
import com.hi.music.player.api.HomeItemClickListener; import com.offline.music.playermp3.api.HomeItemClickListener;
import com.hi.music.player.api.onImageColorListener; import com.offline.music.playermp3.databinding.ActivityCategoryListBinding;
import com.hi.music.player.databinding.ActivityCategoryListBinding; import com.offline.music.playermp3.databinding.ActivityHomeBinding;
import com.hi.music.player.databinding.ActivityHomeBinding; import com.offline.music.playermp3.helper.CommonUtils;
import com.hi.music.player.helper.CommonUtils; import com.offline.music.playermp3.helper.MyValue;
import com.hi.music.player.helper.MyValue; import com.offline.music.playermp3.javabean.response.ResponseCategoryList;
import com.hi.music.player.javabean.response.ResponseCategoryList; import com.offline.music.playermp3.javabean.response.ResponsePlayListInfo;
import com.hi.music.player.javabean.response.ResponsePlayListInfo; import com.offline.music.playermp3.ui.fragmnt.viewmodel.VMCategoryList;
import com.hi.music.player.javabean.response.child.ResponseCategory;
import com.hi.music.player.javabean.response.child.ResponseSingle;
import com.hi.music.player.ui.activity.viewmodel.VMApplication;
import com.hi.music.player.ui.fragmnt.viewmodel.VMCategoryList;
import com.hi.music.player.ui.fragmnt.viewmodel.VMHome;
import java.io.Serializable;
import jp.wasabeef.glide.transformations.BlurTransformation; import jp.wasabeef.glide.transformations.BlurTransformation;

Some files were not shown because too many files have changed in this diff Show More