Compare commits
12 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
56c0d99b6c | ||
|
|
40a897c38b | ||
|
|
99bde9160e | ||
|
|
6412c21786 | ||
|
|
6666abcf17 | ||
|
|
2384b4d09d | ||
|
|
8d3921de0d | ||
|
|
7c739312e9 | ||
|
|
1b27a928b9 | ||
|
|
872a535cc0 | ||
|
|
7349c58e6d | ||
|
|
c62e38eb7e |
BIN
.safedk/api/SafeDKAndroid-6.6.2.jar
Normal file
BIN
.safedk/api/SafeDKAndroid-6.6.2.jar
Normal file
Binary file not shown.
BIN
.safedk/dex/SafeDKAndroid-6.6.2.dex
Normal file
BIN
.safedk/dex/SafeDKAndroid-6.6.2.dex
Normal file
Binary file not shown.
BIN
.safedk/dex/android-support-multidex.dex
Normal file
BIN
.safedk/dex/android-support-multidex.dex
Normal file
Binary file not shown.
1
.safedk/list.enc
Normal file
1
.safedk/list.enc
Normal file
File diff suppressed because one or more lines are too long
36
.safedk/proguard-safedk.pro
Normal file
36
.safedk/proguard-safedk.pro
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
-keep class androidx.multidex.** { *; }
|
||||||
|
-keep class androidx.browser.customtabs.CustomTabsIntent { *; }
|
||||||
|
-keep class androidx.** {
|
||||||
|
*** startActivityForResult(***);
|
||||||
|
*** startActivity(***);
|
||||||
|
}
|
||||||
|
-keep class android.support.multidex.** { *; }
|
||||||
|
-keep class android.support.v4.app.** { *; }
|
||||||
|
-keep class com.google.android.gms.location.FusedLocationProviderApi { *; }
|
||||||
|
-keep class com.google.android.gms.location.LocationListener { *; }
|
||||||
|
-keep class io.fabric.sdk.android.** { *; }
|
||||||
|
-keep class okio.** { *; }
|
||||||
|
-keep class retrofit2.** { *; }
|
||||||
|
-keep class okhttp3.** { *; }
|
||||||
|
-keep class com.squareup.okhttp.** { *; }
|
||||||
|
-keep class com.android.volley.** { *; }
|
||||||
|
-keep class com.flurry.** { *; }
|
||||||
|
-keep class org.apache.** { *; }
|
||||||
|
-keep class com.applovin.** { *; }
|
||||||
|
-keep class com.google.android.gms.ads.** { *; }
|
||||||
|
-keep class com.ironsource.** { *; }
|
||||||
|
-keep class com.fyber.inneractive.** { *; }
|
||||||
|
-keep class com.vungle.** { *; }
|
||||||
|
-keep class com.unity3d.ads.** { *; }
|
||||||
|
-keep class com.unity3d.services.** { *; }
|
||||||
|
-keep class com.mintegral.msdk.** { *; }
|
||||||
|
-keep class com.mbridge.msdk.** { *; }
|
||||||
|
-keep class com.adcolony.sdk.** { *; }
|
||||||
|
-keep class com.inmobi.** { *; }
|
||||||
|
-keep class com.five_corp.** { *; }
|
||||||
|
-keep class com.bytedance.** { *; }
|
||||||
|
-keep class com.smaato.** { *; }
|
||||||
|
-keep class com.explorestack.** { *; }
|
||||||
|
-keep class com.safedk.** { *; }
|
||||||
|
-keep class com.applovin.quality.** { *; }
|
||||||
|
-keep class com.braze.** { *; }
|
||||||
BIN
app/OfflineMusicPlayer.jks
Normal file
BIN
app/OfflineMusicPlayer.jks
Normal file
Binary file not shown.
@ -3,29 +3,34 @@ import java.text.SimpleDateFormat
|
|||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id("com.android.application")
|
id("com.android.application")
|
||||||
// id("org.jetbrains.kotlin.android")
|
id("org.jetbrains.kotlin.android")
|
||||||
// id ("kotlin-kapt")
|
// id ("kotlin-kapt")
|
||||||
id("io.objectbox")
|
id("io.objectbox")
|
||||||
id("com.google.gms.google-services")
|
id("com.google.gms.google-services")
|
||||||
id("com.google.firebase.crashlytics")
|
id("com.google.firebase.crashlytics")
|
||||||
}
|
|
||||||
|
|
||||||
|
id("applovin-quality-service")
|
||||||
|
}
|
||||||
|
applovin {
|
||||||
|
apiKey = "4CFHxOfvQvy95EqDxa_eNPe4pmq_KfoZPJeVscTMt2uT3VL2fO3iyZyBFMTOOTRbKw6WelbaDEhNzxOxVrlQTE"
|
||||||
|
}
|
||||||
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
|
applicationId = "com.offline.music.playermp3"
|
||||||
applicationId = "com.hi.music.player.test1"
|
|
||||||
minSdk = 23
|
minSdk = 23
|
||||||
targetSdk = 34
|
targetSdk = 34
|
||||||
versionCode = 1
|
versionCode = 2
|
||||||
versionName = "1.0.0"
|
versionName = "1.0.1"
|
||||||
|
|
||||||
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"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -38,10 +43,17 @@ android {
|
|||||||
"proguard-rules.pro"
|
"proguard-rules.pro"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
debug {
|
||||||
|
isMinifyEnabled = true
|
||||||
|
proguardFiles(
|
||||||
|
getDefaultProguardFile("proguard-android-optimize.txt"),
|
||||||
|
"proguard-rules.pro"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
kotlinOptions{
|
||||||
|
jvmTarget = "1.8"
|
||||||
}
|
}
|
||||||
// kotlinOptions{
|
|
||||||
// jvmTarget = "1.8"
|
|
||||||
// }
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
sourceCompatibility = JavaVersion.VERSION_1_8
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
||||||
targetCompatibility = JavaVersion.VERSION_1_8
|
targetCompatibility = JavaVersion.VERSION_1_8
|
||||||
@ -97,4 +109,26 @@ dependencies {
|
|||||||
implementation("com.google.firebase:firebase-crashlytics")
|
implementation("com.google.firebase:firebase-crashlytics")
|
||||||
implementation("com.google.firebase:firebase-analytics")
|
implementation("com.google.firebase:firebase-analytics")
|
||||||
implementation("com.google.firebase:firebase-config")
|
implementation("com.google.firebase:firebase-config")
|
||||||
|
|
||||||
|
|
||||||
|
//-----------------------applovin
|
||||||
|
implementation("com.applovin:applovin-sdk:+")
|
||||||
|
implementation("com.applovin.mediation:bigoads-adapter:+")
|
||||||
|
implementation("com.applovin.mediation:chartboost-adapter:+")
|
||||||
|
implementation("com.google.android.gms:play-services-base:16.1.0")
|
||||||
|
implementation("com.applovin.mediation:fyber-adapter:+")
|
||||||
|
|
||||||
|
implementation("com.applovin.mediation:inmobi-adapter:+")
|
||||||
|
implementation("com.squareup.picasso:picasso:2.71828")
|
||||||
|
implementation("androidx.recyclerview:recyclerview:1.1.0")
|
||||||
|
implementation("com.applovin.mediation:ironsource-adapter:+")
|
||||||
|
implementation("com.applovin.mediation:vungle-adapter:+")
|
||||||
|
implementation("com.applovin.mediation:facebook-adapter:+")
|
||||||
|
implementation("com.applovin.mediation:moloco-adapter:+")
|
||||||
|
implementation("com.applovin.mediation:bytedance-adapter:+")
|
||||||
|
implementation("com.applovin.mediation:unityads-adapter:+")
|
||||||
|
|
||||||
|
|
||||||
|
//applovin The SDK collects the Google Advertising ID. This requires the Android Advertising ID (AAID) module (com.google.android.gms:play-services-ads-identifier).
|
||||||
|
implementation("com.google.android.gms:play-services-ads-identifier:18.1.0")
|
||||||
}
|
}
|
||||||
@ -1,21 +1,21 @@
|
|||||||
{
|
{
|
||||||
"project_info": {
|
"project_info": {
|
||||||
"project_number": "550960818622",
|
"project_number": "764712897094",
|
||||||
"project_id": "himelody-and",
|
"project_id": "offline-music-player-176ab",
|
||||||
"storage_bucket": "himelody-and.appspot.com"
|
"storage_bucket": "offline-music-player-176ab.firebasestorage.app"
|
||||||
},
|
},
|
||||||
"client": [
|
"client": [
|
||||||
{
|
{
|
||||||
"client_info": {
|
"client_info": {
|
||||||
"mobilesdk_app_id": "1:550960818622:android:96fd4141e43410fb24f1ef",
|
"mobilesdk_app_id": "1:764712897094:android:2d533528b5ff4271a45847",
|
||||||
"android_client_info": {
|
"android_client_info": {
|
||||||
"package_name": "com.hi.music.player.test1"
|
"package_name": "com.offline.music.playermp3"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"oauth_client": [],
|
"oauth_client": [],
|
||||||
"api_key": [
|
"api_key": [
|
||||||
{
|
{
|
||||||
"current_key": "AIzaSyCp3XR60onMqiGj9pD8ADmrDEOOn__sQDk"
|
"current_key": "AIzaSyDohnv8AScCd1A7RTR-6LLLtQcE7EuJmIw"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"services": {
|
"services": {
|
||||||
|
|||||||
@ -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
|
||||||
59
app/proguard-rules.pro
vendored
59
app/proguard-rules.pro
vendored
@ -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 { *; }
|
||||||
|
|
||||||
# 保持 Context、Intent 和权限相关的公共方法
|
# 保持 Context、Intent 和权限相关的公共方法
|
||||||
-keep class android.content.Context { *; }
|
-keep class android.content.Context { *; }
|
||||||
@ -43,3 +43,60 @@
|
|||||||
-keep class * extends com.google.gson.reflect.TypeToken
|
-keep class * extends com.google.gson.reflect.TypeToken
|
||||||
-keepattributes AnnotationDefault,RuntimeVisibleAnnotations
|
-keepattributes AnnotationDefault,RuntimeVisibleAnnotations
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
# 使用R8全模式,对未保留的类剥离通用签名。挂起函数被包装在使用类型参数的continuation中。
|
||||||
|
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
|
||||||
|
|
||||||
|
# 如果不保留,R8完整模式将从返回类型中剥离通用签名。
|
||||||
|
-if interface * { @retrofit2.http.* public *** *(...); }
|
||||||
|
-keep,allowoptimization,allowshrinking,allowobfuscation class <3>
|
||||||
|
|
||||||
|
# 在R8全模式下,对未保留的类剥离通用签名。
|
||||||
|
-keep,allowobfuscation,allowshrinking class retrofit2.Response
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
## ---------Retrofit混淆方法---------------
|
||||||
|
-dontwarn javax.annotation.**
|
||||||
|
-dontwarn javax.inject.**
|
||||||
|
# OkHttp3
|
||||||
|
-dontwarn okhttp3.logging.**
|
||||||
|
-keep class okhttp3.internal.**{*;}
|
||||||
|
-dontwarn okio.**
|
||||||
|
# Retrofit
|
||||||
|
-dontwarn retrofit2.**
|
||||||
|
-keep class retrofit2.** { *; }
|
||||||
|
-keepattributes Signature
|
||||||
|
-keepattributes Exceptions
|
||||||
|
# RxJava RxAndroid
|
||||||
|
-dontwarn sun.misc.**
|
||||||
|
-keepclassmembers class rx.internal.util.unsafe.*ArrayQueue*Field* {
|
||||||
|
long producerIndex;
|
||||||
|
long consumerIndex;
|
||||||
|
}
|
||||||
|
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueProducerNodeRef {
|
||||||
|
rx.internal.util.atomic.LinkedQueueNode producerNode;
|
||||||
|
}
|
||||||
|
-keepclassmembers class rx.internal.util.unsafe.BaseLinkedQueueConsumerNodeRef {
|
||||||
|
rx.internal.util.atomic.LinkedQueueNode consumerNode;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Gson
|
||||||
|
-keep class com.google.gson.stream.** { *; }
|
||||||
|
-keepattributes EnclosingMethod
|
||||||
|
|
||||||
|
-keep class com.offline.music.playermp3.javabean.**{*;}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
-keep class org.chromium.** { *; }
|
||||||
|
-keep class androidx.media3.datasource.cronet.** { *; }
|
||||||
|
-keep class androidx.media3.exoplayer.scheduler.PlatformScheduler$PlatformSchedulerService { *; }
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
package com.hi.music.player;
|
package com.offline.music.playermp3;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
@ -5,44 +5,47 @@
|
|||||||
<uses-permission android:name="android.permission.INTERNET" />
|
<uses-permission android:name="android.permission.INTERNET" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_MEDIA_PLAYBACK" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
|
||||||
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC"/>
|
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
|
||||||
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
<uses-permission android:name="android.permission.WAKE_LOCK" />
|
||||||
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
<uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
|
||||||
<uses-permission
|
<uses-permission
|
||||||
android:name="android.permission.READ_EXTERNAL_STORAGE"
|
android:name="android.permission.READ_EXTERNAL_STORAGE"
|
||||||
android:maxSdkVersion="32" />
|
android:maxSdkVersion="32" />
|
||||||
|
|
||||||
|
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
|
||||||
|
|
||||||
<application
|
<application
|
||||||
android:name=".MusicApplication"
|
android:name=".MusicApplication"
|
||||||
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">
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.LikeSongActivity"
|
android:name=".ui.activity.LikeSongActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="false"
|
||||||
android:exported="false" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.ResultListActivity"
|
android:name=".ui.activity.ResultListActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="false"
|
||||||
android:exported="false" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.CategoryListActivity"
|
android:name=".ui.activity.CategoryListActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="false"
|
||||||
android:exported="false" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.A_PlayActivity"
|
android:name=".ui.activity.A_PlayActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="false"
|
||||||
android:exported="false" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.A_SettingActivity"
|
android:name=".ui.activity.A_SettingActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="false"
|
||||||
android:exported="false" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.PlayActivity"
|
android:name=".ui.activity.PlayActivity"
|
||||||
android:exported="false"
|
android:exported="false"
|
||||||
@ -53,14 +56,14 @@
|
|||||||
android:screenOrientation="portrait" />
|
android:screenOrientation="portrait" />
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.HomeActivity"
|
android:name=".ui.activity.HomeActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="false"
|
||||||
android:exported="false">
|
android:screenOrientation="portrait">
|
||||||
|
|
||||||
</activity>
|
</activity>
|
||||||
<activity
|
<activity
|
||||||
android:name=".ui.activity.A_SplashActivity"
|
android:name=".ui.activity.A_SplashActivity"
|
||||||
android:screenOrientation="portrait"
|
android:exported="true"
|
||||||
android:exported="true" >
|
android:screenOrientation="portrait">
|
||||||
<intent-filter>
|
<intent-filter>
|
||||||
<action android:name="android.intent.action.MAIN" />
|
<action android:name="android.intent.action.MAIN" />
|
||||||
|
|
||||||
|
|||||||
BIN
app/src/main/ic_launcher-playstore.png
Normal file
BIN
app/src/main/ic_launcher-playstore.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 41 KiB |
@ -1,57 +0,0 @@
|
|||||||
package com.hi.music.player;
|
|
||||||
|
|
||||||
import android.app.Application;
|
|
||||||
import android.content.Context;
|
|
||||||
|
|
||||||
import androidx.annotation.OptIn;
|
|
||||||
import androidx.media3.common.util.UnstableApi;
|
|
||||||
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.hi.music.player.firebase.RemoteConfigJava;
|
|
||||||
import com.hi.music.player.firebase.Sp;
|
|
||||||
import com.hi.music.player.helper.CommonUtils;
|
|
||||||
import com.hi.music.player.media3.MyDownloadService;
|
|
||||||
import com.hi.music.player.media3.MyMediaControllerManager;
|
|
||||||
import com.hi.music.player.objectbox.ObjectBoxManager;
|
|
||||||
|
|
||||||
public class MusicApplication extends Application {
|
|
||||||
|
|
||||||
public static Context myApplication;
|
|
||||||
|
|
||||||
public static String visitorData;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void setVisitorData(String visitorData) {
|
|
||||||
MusicApplication.visitorData = visitorData;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static String getVisitorData() {
|
|
||||||
return visitorData;
|
|
||||||
}
|
|
||||||
|
|
||||||
@OptIn(markerClass = UnstableApi.class)
|
|
||||||
@Override
|
|
||||||
public void onCreate() {
|
|
||||||
super.onCreate();
|
|
||||||
myApplication = this;
|
|
||||||
Sp.init(this);
|
|
||||||
RemoteConfigJava.getInstance().init(this);
|
|
||||||
ObjectBoxManager.init(this);
|
|
||||||
|
|
||||||
StandaloneDatabaseProvider databaseProvider = new StandaloneDatabaseProvider(this);
|
|
||||||
MyDownloadService.init(this,databaseProvider);
|
|
||||||
MyMediaControllerManager.getInstance().init(new MediaControllerStatusListener() {
|
|
||||||
@Override
|
|
||||||
public void onMediaControllerComplete(boolean isOk) {
|
|
||||||
CommonUtils.LogMsg("=-----mediaController+" + isOk);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
@ -1,7 +0,0 @@
|
|||||||
package com.hi.music.player.api;
|
|
||||||
|
|
||||||
import com.hi.music.player.javabean.CustomerDownload;
|
|
||||||
|
|
||||||
public interface onCheckDownload {
|
|
||||||
void onHasDownload(CustomerDownload customerDownload);
|
|
||||||
}
|
|
||||||
@ -0,0 +1,83 @@
|
|||||||
|
package com.offline.music.playermp3;
|
||||||
|
|
||||||
|
import android.app.Application;
|
||||||
|
import android.content.Context;
|
||||||
|
import android.content.Intent;
|
||||||
|
|
||||||
|
import androidx.annotation.OptIn;
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager;
|
||||||
|
import androidx.media3.common.util.UnstableApi;
|
||||||
|
import androidx.media3.database.StandaloneDatabaseProvider;
|
||||||
|
|
||||||
|
import com.applovin.sdk.AppLovinMediationProvider;
|
||||||
|
import com.applovin.sdk.AppLovinSdk;
|
||||||
|
import com.applovin.sdk.AppLovinSdkConfiguration;
|
||||||
|
import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
|
||||||
|
import com.offline.music.playermp3.api.MediaControllerStatusListener;
|
||||||
|
import com.offline.music.playermp3.firebase.RemoteConfigJava;
|
||||||
|
import com.offline.music.playermp3.firebase.Sp;
|
||||||
|
import com.offline.music.playermp3.helper.CommonUtils;
|
||||||
|
import com.offline.music.playermp3.media3.MyDownloadService;
|
||||||
|
import com.offline.music.playermp3.media3.MyMediaControllerManager;
|
||||||
|
import com.offline.music.playermp3.objectbox.ObjectBoxManager;
|
||||||
|
|
||||||
|
public class MusicApplication extends Application {
|
||||||
|
|
||||||
|
public static Context myApplication;
|
||||||
|
|
||||||
|
public static String visitorData;
|
||||||
|
|
||||||
|
private String MAx_SDK_key = "tAh5Z8CtFiG05NfRWh9UuOHCp3h3SaFvlh6Phw5ucaxFMCRs2d97F7lywfBKOEKSipdaGq8vZOaDLZkrL1fDDc";
|
||||||
|
|
||||||
|
public static boolean initSDkOK = false;
|
||||||
|
public static String initAction = "MUSIC_ACTION_INIT";
|
||||||
|
|
||||||
|
|
||||||
|
public static void setVisitorData(String visitorData) {
|
||||||
|
MusicApplication.visitorData = visitorData;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static String getVisitorData() {
|
||||||
|
return visitorData;
|
||||||
|
}
|
||||||
|
|
||||||
|
@OptIn(markerClass = UnstableApi.class)
|
||||||
|
@Override
|
||||||
|
public void onCreate() {
|
||||||
|
super.onCreate();
|
||||||
|
myApplication = this;
|
||||||
|
InitializeMax();
|
||||||
|
Sp.init(this);
|
||||||
|
RemoteConfigJava.getInstance().init(this);
|
||||||
|
ObjectBoxManager.init(this);
|
||||||
|
|
||||||
|
StandaloneDatabaseProvider databaseProvider = new StandaloneDatabaseProvider(this);
|
||||||
|
MyDownloadService.init(this,databaseProvider);
|
||||||
|
MyMediaControllerManager.getInstance().init(new MediaControllerStatusListener() {
|
||||||
|
@Override
|
||||||
|
public void onMediaControllerComplete(boolean isOk) {
|
||||||
|
CommonUtils.LogMsg("=-----mediaController+" + isOk);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
private void InitializeMax(){
|
||||||
|
AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder( MAx_SDK_key, this )
|
||||||
|
.setMediationProvider( AppLovinMediationProvider.MAX )
|
||||||
|
.build();
|
||||||
|
|
||||||
|
// Initialize the SDK with the configuration
|
||||||
|
AppLovinSdk.getInstance( this ).initialize( initConfig, new AppLovinSdk.SdkInitializationListener()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig)
|
||||||
|
{
|
||||||
|
initSDkOK = true;
|
||||||
|
LocalBroadcastManager.getInstance(MusicApplication.this).sendBroadcast(new Intent(initAction));
|
||||||
|
}
|
||||||
|
} );
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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>{
|
||||||
|
|
||||||
@ -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> {
|
||||||
|
|
||||||
@ -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> {
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -31,6 +31,7 @@ public class AdapterHome extends BaseAdapter<ResponseHomeChild, ItemHomeBinding>
|
|||||||
@Override
|
@Override
|
||||||
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
|
||||||
int itemViewType = getItemViewType(position);
|
int itemViewType = getItemViewType(position);
|
||||||
|
CommonUtils.LogMsg("-----------pos="+position+"---itemViewType="+itemViewType);
|
||||||
if (itemViewType == TYPE_ITEM) {
|
if (itemViewType == TYPE_ITEM) {
|
||||||
VHolder<ItemHomeBinding> itemHolder = (VHolder<ItemHomeBinding>) holder;
|
VHolder<ItemHomeBinding> itemHolder = (VHolder<ItemHomeBinding>) holder;
|
||||||
ItemHomeBinding vb = itemHolder.getVb();
|
ItemHomeBinding vb = itemHolder.getVb();
|
||||||
@ -39,7 +40,7 @@ public class AdapterHome extends BaseAdapter<ResponseHomeChild, ItemHomeBinding>
|
|||||||
|
|
||||||
List<ResponseSingle> singleList = responseHomeChild.getSingleList();
|
List<ResponseSingle> singleList = responseHomeChild.getSingleList();
|
||||||
List<ResponseCategory> categoryList = responseHomeChild.getCategoryList();
|
List<ResponseCategory> categoryList = responseHomeChild.getCategoryList();
|
||||||
CommonUtils.LogMsg("position="+position+"-----------headTitle-=" + responseHomeChild.getHeaderTitle()+"--singleList="+singleList+"---categoryList="+categoryList);
|
// CommonUtils.LogMsg("position="+position+"-----------headTitle-=" + responseHomeChild.getHeaderTitle()+"--singleList="+singleList+"---categoryList="+categoryList);
|
||||||
if (singleList != null && singleList.size() > 0) {
|
if (singleList != null && singleList.size() > 0) {
|
||||||
vb.recyclerSinger.setVisibility(View.VISIBLE);
|
vb.recyclerSinger.setVisibility(View.VISIBLE);
|
||||||
AdapterSinger adapterSinger = new AdapterSinger();
|
AdapterSinger adapterSinger = new AdapterSinger();
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -96,7 +92,7 @@ public class AdapterLikeSong extends BaseAdapter<BoxLikeSong, ItemLikeSongBindin
|
|||||||
vb.imDownload.setSelected(pair.first);
|
vb.imDownload.setSelected(pair.first);
|
||||||
vb.imDownload.setVisibility(View.VISIBLE);
|
vb.imDownload.setVisibility(View.VISIBLE);
|
||||||
vb.downloadPb.setVisibility(View.GONE);
|
vb.downloadPb.setVisibility(View.GONE);
|
||||||
CommonUtils.LogMsg("--------------------状态更新");
|
// CommonUtils.LogMsg("--------------------状态更新");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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) {
|
||||||
@ -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> {
|
||||||
|
|
||||||
@ -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) {
|
||||||
@ -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
|
||||||
@ -76,6 +76,6 @@ public class AdapterResultListAlbum extends BaseAdapter<ResponseResultListChild,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
CommonUtils.LogMsg("-------Album getBrowserId="+listChild.getBrowserId()+"---getPlayListId= "+listChild.getPlayListId()+"---getVideoId="+listChild.getVideoId());
|
// CommonUtils.LogMsg("-------Album getBrowserId="+listChild.getBrowserId()+"---getPlayListId= "+listChild.getPlayListId()+"---getVideoId="+listChild.getVideoId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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
|
||||||
@ -77,7 +77,7 @@ public class AdapterResultListSong extends BaseAdapter<ResponseResultListChild,
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
CommonUtils.LogMsg("-------Song getBrowserId=" + listChild.getBrowserId() + "---getPlayListId= " + listChild.getPlayListId() + "---getVideoId=" + listChild.getVideoId());
|
// CommonUtils.LogMsg("-------Song getBrowserId=" + listChild.getBrowserId() + "---getPlayListId= " + listChild.getPlayListId() + "---getVideoId=" + listChild.getVideoId());
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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
|
||||||
@ -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> {
|
||||||
|
|
||||||
@ -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> {
|
||||||
|
|
||||||
@ -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,9 @@ 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.offline.music.playermp3.helper.CommonUtils;
|
||||||
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;
|
||||||
@ -59,14 +58,16 @@ abstract public class BaseAdapter<K, T extends ViewBinding> extends RecyclerView
|
|||||||
public void addLoadingFooter() {
|
public void addLoadingFooter() {
|
||||||
isLoadingAdded = true;
|
isLoadingAdded = true;
|
||||||
notifyItemInserted(data.size());
|
notifyItemInserted(data.size());
|
||||||
|
CommonUtils.LogMsg("--------addLoadingFooter---position="+data.size());
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hide loading footer
|
// Hide loading footer
|
||||||
public void removeLoadingFooter() {
|
public void removeLoadingFooter() {
|
||||||
isLoadingAdded = false;
|
int position = getItemCount();
|
||||||
int position = data.size();
|
if (position >= 0)
|
||||||
if (position > 0)
|
|
||||||
notifyItemRemoved(position);
|
notifyItemRemoved(position);
|
||||||
|
isLoadingAdded = false;
|
||||||
|
CommonUtils.LogMsg("---------removeLoadingFooter--position="+position);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -92,6 +93,7 @@ abstract public class BaseAdapter<K, T extends ViewBinding> extends RecyclerView
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getItemCount() {
|
public int getItemCount() {
|
||||||
|
CommonUtils.LogMsg("---------getItemCount=");
|
||||||
return data.size() + (isLoadingAdded ? 1 : 0);
|
return data.size() + (isLoadingAdded ? 1 : 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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 {
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.hi.music.player.api;
|
package com.offline.music.playermp3.api;
|
||||||
|
|
||||||
public interface MediaControllerStatusListener {
|
public interface MediaControllerStatusListener {
|
||||||
|
|
||||||
@ -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();
|
||||||
@ -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);
|
||||||
@ -0,0 +1,7 @@
|
|||||||
|
package com.offline.music.playermp3.api;
|
||||||
|
|
||||||
|
import com.offline.music.playermp3.javabean.CustomerDownload;
|
||||||
|
|
||||||
|
public interface onCheckDownload {
|
||||||
|
void onHasDownload(CustomerDownload customerDownload);
|
||||||
|
}
|
||||||
@ -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);
|
||||||
@ -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);
|
||||||
@ -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;
|
||||||
@ -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 {
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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
|
||||||
@ -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;
|
||||||
@ -102,7 +102,7 @@ public class RemoteConfigJava {
|
|||||||
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
|
mFirebaseRemoteConfig.addOnConfigUpdateListener(new ConfigUpdateListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onUpdate(@NonNull ConfigUpdate configUpdate) {
|
public void onUpdate(@NonNull ConfigUpdate configUpdate) {
|
||||||
CommonUtils.LogMsg("Updated keys: " + configUpdate.getUpdatedKeys());
|
CommonUtils.LogMsg("---FirebaseRemote---Updated keys: " + configUpdate.getUpdatedKeys());
|
||||||
try {
|
try {
|
||||||
mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
|
mFirebaseRemoteConfig.activate().addOnCompleteListener(new OnCompleteListener<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
@ -113,13 +113,13 @@ public class RemoteConfigJava {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception ignore) {
|
} catch (Exception ignore) {
|
||||||
CommonUtils.LogErrorMsg("onConfigUpdate Exception " + ignore.getMessage());
|
CommonUtils.LogMsg("---FirebaseRemote---onConfigUpdate Exception " + ignore.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onError(@NonNull FirebaseRemoteConfigException error) {
|
public void onError(@NonNull FirebaseRemoteConfigException error) {
|
||||||
CommonUtils.LogErrorMsg("onConfigUpdate onError " + error.getMessage());
|
CommonUtils.LogMsg("---FirebaseRemote---onConfigUpdate onError " + error.getMessage());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -147,7 +147,7 @@ public class RemoteConfigJava {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Exception exception) {
|
} catch (Exception exception) {
|
||||||
CommonUtils.LogErrorMsg(" exception = " + exception.getMessage());
|
CommonUtils.LogMsg("---FirebaseRemote--- exception = " + exception.getMessage());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -156,7 +156,7 @@ public class RemoteConfigJava {
|
|||||||
for (Map.Entry<String, FirebaseRemoteConfigValue> entry : all.entrySet()) {
|
for (Map.Entry<String, FirebaseRemoteConfigValue> entry : all.entrySet()) {
|
||||||
FirebaseRemoteConfigValue value = entry.getValue();
|
FirebaseRemoteConfigValue value = entry.getValue();
|
||||||
String key = entry.getKey();
|
String key = entry.getKey();
|
||||||
CommonUtils.LogMsg("from = " + from + "Key = " + key + " Value = " + value.asString());
|
CommonUtils.LogMsg("---FirebaseRemote---from = " + from + "Key = " + key + " Value = " + value.asString());
|
||||||
|
|
||||||
if (TextUtils.equals(key_open_type, key)) {
|
if (TextUtils.equals(key_open_type, key)) {
|
||||||
Sp.getInstance()
|
Sp.getInstance()
|
||||||
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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 {
|
||||||
@ -160,9 +150,9 @@ public class CommonUtils {
|
|||||||
int dominantDarkColor = darkVibrantSwatch.getRgb();
|
int dominantDarkColor = darkVibrantSwatch.getRgb();
|
||||||
listener.onImageColor(dominantDarkColor);
|
listener.onImageColor(dominantDarkColor);
|
||||||
String dominantColorHex = String.format("#%06X", (0xFFFFFF & dominantDarkColor));
|
String dominantColorHex = String.format("#%06X", (0xFFFFFF & dominantDarkColor));
|
||||||
Log.d("Dominant Dark Color", "主色调: " + dominantColorHex); // 打印主色调
|
|
||||||
} else {
|
} else {
|
||||||
Log.d("Dominant Dark Color", "未找到深色主色调");
|
|
||||||
listener.onImageColor(-1);
|
listener.onImageColor(-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -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 {
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.hi.music.player.helper;
|
package com.offline.music.playermp3.helper;
|
||||||
|
|
||||||
public class MyValue {
|
public class MyValue {
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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 {
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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 {
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.hi.music.player.javabean.response;
|
package com.offline.music.playermp3.javabean.response;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -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 {
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -0,0 +1,11 @@
|
|||||||
|
package com.offline.music.playermp3.max;
|
||||||
|
|
||||||
|
import com.applovin.mediation.MaxAd;
|
||||||
|
|
||||||
|
public interface MaxListener {
|
||||||
|
void onFail(MaxAd ad);
|
||||||
|
|
||||||
|
void onShowSuccess(MaxAd ad);
|
||||||
|
|
||||||
|
void onHidden();
|
||||||
|
}
|
||||||
@ -0,0 +1,219 @@
|
|||||||
|
package com.offline.music.playermp3.max;
|
||||||
|
|
||||||
|
import android.app.Activity;
|
||||||
|
import android.util.Log;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
|
import androidx.annotation.NonNull;
|
||||||
|
import androidx.annotation.Nullable;
|
||||||
|
|
||||||
|
import com.applovin.mediation.MaxAd;
|
||||||
|
import com.applovin.mediation.MaxAdListener;
|
||||||
|
import com.applovin.mediation.MaxError;
|
||||||
|
import com.applovin.mediation.ads.MaxInterstitialAd;
|
||||||
|
import com.applovin.mediation.nativeAds.MaxNativeAdListener;
|
||||||
|
import com.applovin.mediation.nativeAds.MaxNativeAdLoader;
|
||||||
|
import com.applovin.mediation.nativeAds.MaxNativeAdView;
|
||||||
|
import com.offline.music.playermp3.MusicApplication;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MaxManager {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static final String AD_TAG = "------MAX---------";
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 原生广告
|
||||||
|
*/
|
||||||
|
//small
|
||||||
|
public static final String native_Ad1 = "318a8ed92bb2596d";
|
||||||
|
//small
|
||||||
|
public static final String native_Ad2 = "63e3d50c36c627d2";
|
||||||
|
/**
|
||||||
|
* 插页广告
|
||||||
|
*/
|
||||||
|
private static final String one_AD = "6510769676690c4d";
|
||||||
|
private static final String two_Ad = "7c6b55091a9aaf39";
|
||||||
|
private static final String three_ad = "39c6f571b5939dde";
|
||||||
|
|
||||||
|
|
||||||
|
public static final int type_no_cache = 0;
|
||||||
|
public static final int type_has_cache = 1;
|
||||||
|
public static final int type_show_success = 2;
|
||||||
|
public static final int type_show_close = 3;
|
||||||
|
public static final int type_show_fail = 4;
|
||||||
|
|
||||||
|
private static List<MaxInterstitialAd> adList = new ArrayList<>();
|
||||||
|
|
||||||
|
public static MaxInterstitialAd getAd(List<MaxInterstitialAd> list) {
|
||||||
|
Collections.shuffle(list);
|
||||||
|
for (MaxInterstitialAd ad : list) {
|
||||||
|
if (ad.isReady()) {
|
||||||
|
return ad;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void onLoadNativeAd(ViewGroup nativeAdContainer, String adPlace,NativeMaxListener listener) {
|
||||||
|
MaxNativeAdLoader nativeAdLoader;
|
||||||
|
|
||||||
|
nativeAdLoader = new MaxNativeAdLoader(adPlace, MusicApplication.myApplication);
|
||||||
|
nativeAdLoader.setNativeAdListener(new MaxNativeAdListener() {
|
||||||
|
MaxAd nativeAd;
|
||||||
|
@Override
|
||||||
|
public void onNativeAdLoaded(@Nullable MaxNativeAdView maxNativeAdView, @NonNull MaxAd maxAd) {
|
||||||
|
// Clean up any pre-existing native ad to prevent memory leaks.
|
||||||
|
if (nativeAd != null) {
|
||||||
|
nativeAdLoader.destroy(nativeAd);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save ad for cleanup.
|
||||||
|
nativeAd = maxAd;
|
||||||
|
|
||||||
|
// Add ad view to view.
|
||||||
|
nativeAdContainer.removeAllViews();
|
||||||
|
nativeAdContainer.addView(maxNativeAdView);
|
||||||
|
nativeAdContainer.setVisibility(View.VISIBLE);
|
||||||
|
listener.onLoaded(maxAd,nativeAdLoader);
|
||||||
|
Log.d(AD_TAG, "-------onNativeAdLoaded-----maxAd=" + maxAd.getAdUnitId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onNativeAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) {
|
||||||
|
super.onNativeAdLoadFailed(s, maxError);
|
||||||
|
Log.d(AD_TAG, "-------onNativeAdLoadFailed-----maxAd=" + maxError.getMessage());
|
||||||
|
}
|
||||||
|
});
|
||||||
|
nativeAdLoader.loadAd();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void clearNativeAd(MaxAd nativeAd, MaxNativeAdLoader nativeAdLoader) {
|
||||||
|
if (nativeAd != null) {
|
||||||
|
nativeAdLoader.destroy(nativeAd);
|
||||||
|
}
|
||||||
|
nativeAdLoader.destroy();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public static List<MaxInterstitialAd> onLoadAd() {
|
||||||
|
if (adList.isEmpty()) {
|
||||||
|
MaxInterstitialAd AdT = new MaxInterstitialAd(two_Ad, MusicApplication.myApplication);
|
||||||
|
MaxInterstitialAd AdOne = new MaxInterstitialAd(one_AD, MusicApplication.myApplication);
|
||||||
|
MaxInterstitialAd AdThree = new MaxInterstitialAd(three_ad, MusicApplication.myApplication);
|
||||||
|
adList.add(AdOne);
|
||||||
|
adList.add(AdT);
|
||||||
|
adList.add(AdThree);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (MaxInterstitialAd ad : adList) {
|
||||||
|
if (!ad.isReady()) {
|
||||||
|
setMyListener(ad, new MaxListener() {
|
||||||
|
@Override
|
||||||
|
public void onFail(MaxAd ad) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShowSuccess(MaxAd ad) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onHidden() {
|
||||||
|
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ad.loadAd();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
return adList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setMyListener(MaxInterstitialAd ad, MaxListener maxListener) {
|
||||||
|
ad.setListener(new MaxAdListener() {
|
||||||
|
@Override
|
||||||
|
public void onAdLoaded(@NonNull MaxAd maxAd) {
|
||||||
|
Log.d(AD_TAG, "-------onAdLoaded-----maxAd=" + maxAd.getAdUnitId());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdDisplayed(@NonNull MaxAd maxAd) {
|
||||||
|
Log.d(AD_TAG, "-------onAdDisplayed-----maxAd=" + maxAd.getAdUnitId());
|
||||||
|
maxListener.onShowSuccess(maxAd);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdHidden(@NonNull MaxAd maxAd) {
|
||||||
|
Log.d(AD_TAG, "-------onAdHidden-----maxAd=" + maxAd.getAdUnitId());
|
||||||
|
maxListener.onHidden();
|
||||||
|
ad.loadAd();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdClicked(@NonNull MaxAd maxAd) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) {
|
||||||
|
Log.d(AD_TAG, "-------onAdLoadFailed-----s=" + s + "----maxError=" + maxError.getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) {
|
||||||
|
maxListener.onFail(maxAd);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static void ShowAd(Activity activity, onAdStatusListener listener) {
|
||||||
|
MaxInterstitialAd ad = MaxManager.getAd(adList);
|
||||||
|
if (ad == null) {
|
||||||
|
listener.onAdStatus(type_no_cache);
|
||||||
|
} else {
|
||||||
|
listener.onAdStatus(type_has_cache);
|
||||||
|
MaxManager.setMyListener(ad, new MaxListener() {
|
||||||
|
@Override
|
||||||
|
public void onFail(MaxAd ad) {
|
||||||
|
listener.onAdStatus(type_show_fail);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onShowSuccess(MaxAd ad) {
|
||||||
|
listener.onAdStatus(type_show_success);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onHidden() {
|
||||||
|
listener.onAdStatus(type_show_close);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
ad.showAd(activity);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static void startShowMaxAd(Activity activity, onAdAfterAction listener) {
|
||||||
|
MaxManager.ShowAd(activity, new onAdStatusListener() {
|
||||||
|
@Override
|
||||||
|
public void onAdStatus(int type) {
|
||||||
|
if (type == MaxManager.type_show_close || type == MaxManager.type_show_fail || type == MaxManager.type_no_cache) {
|
||||||
|
if (listener != null)
|
||||||
|
listener.onAction();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,10 @@
|
|||||||
|
package com.offline.music.playermp3.max;
|
||||||
|
|
||||||
|
import com.applovin.mediation.MaxAd;
|
||||||
|
import com.applovin.mediation.nativeAds.MaxNativeAdLoader;
|
||||||
|
|
||||||
|
public interface NativeMaxListener {
|
||||||
|
void onLoaded(MaxAd ad, MaxNativeAdLoader maxNativeAdLoader);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,80 @@
|
|||||||
|
package com.offline.music.playermp3.max
|
||||||
|
|
||||||
|
import android.app.Activity
|
||||||
|
import android.content.BroadcastReceiver
|
||||||
|
import android.content.Context
|
||||||
|
import android.content.Intent
|
||||||
|
import android.content.IntentFilter
|
||||||
|
import android.os.CountDownTimer
|
||||||
|
import android.util.Log
|
||||||
|
import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
||||||
|
|
||||||
|
import com.applovin.mediation.ads.MaxInterstitialAd
|
||||||
|
import com.offline.music.playermp3.MusicApplication
|
||||||
|
|
||||||
|
|
||||||
|
object WelComManager {
|
||||||
|
|
||||||
|
private lateinit var timer: CountDownTimer
|
||||||
|
|
||||||
|
private var need_Show = true
|
||||||
|
|
||||||
|
private lateinit var lists: List<MaxInterstitialAd>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@JvmStatic
|
||||||
|
fun initTimer(activity: Activity, countTime: Long,countAction: (Long) -> Unit, goMainAction: () -> Unit): CountDownTimer {
|
||||||
|
need_Show = true
|
||||||
|
timer = object : CountDownTimer(countTime, 100) {
|
||||||
|
override fun onTick(millisUntilFinished: Long) {
|
||||||
|
countAction.invoke(millisUntilFinished)
|
||||||
|
if (need_Show) {
|
||||||
|
MaxManager.ShowAd(activity) {
|
||||||
|
Log.d(MaxManager.AD_TAG, "--onTick----------it=$it")
|
||||||
|
if (it == MaxManager.type_has_cache) {
|
||||||
|
need_Show = false
|
||||||
|
}
|
||||||
|
if (it == MaxManager.type_show_close || it == MaxManager.type_show_fail) {
|
||||||
|
Log.d(MaxManager.AD_TAG, "--onTick---------enter")
|
||||||
|
goMainAction.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun onFinish() {
|
||||||
|
if (need_Show) {
|
||||||
|
MaxManager.ShowAd(activity) {
|
||||||
|
if (it == MaxManager.type_show_close || it == MaxManager.type_show_fail || it == MaxManager.type_no_cache) {
|
||||||
|
Log.d(MaxManager.AD_TAG, "--onFinish---------enter")
|
||||||
|
goMainAction.invoke()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
startAd(activity)
|
||||||
|
return timer
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun startAd(activity: Activity) {
|
||||||
|
if (!MusicApplication.initSDkOK) {
|
||||||
|
timer.start()
|
||||||
|
LocalBroadcastManager.getInstance(activity)
|
||||||
|
.registerReceiver(object : BroadcastReceiver() {
|
||||||
|
override fun onReceive(context: Context?, intent: Intent?) {
|
||||||
|
lists = MaxManager.onLoadAd()
|
||||||
|
|
||||||
|
Log.d(MaxManager.AD_TAG, "------------1sucess")
|
||||||
|
}
|
||||||
|
}, IntentFilter(MusicApplication.initAction))
|
||||||
|
} else {
|
||||||
|
lists = MaxManager.onLoadAd()
|
||||||
|
timer.start()
|
||||||
|
Log.d(MaxManager.AD_TAG, "------------2sucess")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
package com.offline.music.playermp3.max;
|
||||||
|
|
||||||
|
public interface onAdAfterAction {
|
||||||
|
|
||||||
|
void onAction();
|
||||||
|
}
|
||||||
@ -0,0 +1,6 @@
|
|||||||
|
package com.offline.music.playermp3.max;
|
||||||
|
|
||||||
|
public interface onAdStatusListener {
|
||||||
|
|
||||||
|
void onAdStatus(int type);
|
||||||
|
}
|
||||||
@ -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 {
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.hi.music.player.media3;
|
package com.offline.music.playermp3.media3;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -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;
|
||||||
@ -90,14 +90,15 @@ public class MyDownloadService extends DownloadService {
|
|||||||
if (download.state == Download.STATE_COMPLETED) {
|
if (download.state == Download.STATE_COMPLETED) {
|
||||||
// 下载完成
|
// 下载完成
|
||||||
vmApplication.setDownloadChange(new Pair<>(true, download));
|
vmApplication.setDownloadChange(new Pair<>(true, download));
|
||||||
CommonUtils.LogMsg("----------------下载完成 id=" + id + "--thread=" + Thread.currentThread().getName());
|
// CommonUtils.LogMsg("----------------下载完成 id=" + id + "--thread=" + Thread.currentThread().getName());
|
||||||
updateDownloadUi(vmApplication);
|
updateDownloadUi(vmApplication);
|
||||||
|
|
||||||
} else if (download.state == Download.STATE_FAILED) {
|
} else if (download.state == Download.STATE_FAILED) {
|
||||||
// 下载失败
|
// 下载失败
|
||||||
CommonUtils.LogMsg("----------------下载失败 id=" + id + "---finalException=" + finalException.getMessage());
|
// CommonUtils.LogMsg("----------------下载失败 id=" + id + "---finalException=" + finalException.getMessage());
|
||||||
|
|
||||||
vmApplication.setDownloadChange(new Pair<>(false, download));
|
vmApplication.setDownloadChange(new Pair<>(false, download));
|
||||||
|
updateDownloadUi(vmApplication);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -118,7 +119,7 @@ public class MyDownloadService extends DownloadService {
|
|||||||
DownloadIndex downloadIndex = mDownloadManager.getDownloadIndex();
|
DownloadIndex downloadIndex = mDownloadManager.getDownloadIndex();
|
||||||
Download download = downloadIndex.getDownload(videoId);
|
Download download = downloadIndex.getDownload(videoId);
|
||||||
|
|
||||||
return new CustomerDownload(download, download != null);
|
return new CustomerDownload(download, download != null && download.state == Download.STATE_COMPLETED);
|
||||||
|
|
||||||
}).subscribeOn(Schedulers.io())
|
}).subscribeOn(Schedulers.io())
|
||||||
|
|
||||||
@ -162,7 +163,7 @@ public class MyDownloadService extends DownloadService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
CommonUtils.LogMsg("----------------下载总数量 -count=" + downloadList.size());
|
// CommonUtils.LogMsg("----------------下载总数量 -count=" + downloadList.size());
|
||||||
vmApplication.setDownloadData(downloadList);
|
vmApplication.setDownloadData(downloadList);
|
||||||
|
|
||||||
});
|
});
|
||||||
@ -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;
|
||||||
|
|
||||||
@ -144,7 +143,7 @@ public class MyMediaControllerManager {
|
|||||||
onCallRequestUrl(nextMediaItemIndex, playNextNow, new OnHasUrlAction() {
|
onCallRequestUrl(nextMediaItemIndex, playNextNow, new OnHasUrlAction() {
|
||||||
@Override
|
@Override
|
||||||
public void onHasUrl() {
|
public void onHasUrl() {
|
||||||
CommonUtils.LogMsg("-------------有有效URl--播放检查下一首 位置=" + nextMediaItemIndex);
|
// CommonUtils.LogMsg("-------------有有效URl--播放检查下一首 位置=" + nextMediaItemIndex);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -153,7 +152,7 @@ public class MyMediaControllerManager {
|
|||||||
onCallRequestUrl(previousMediaItemIndex, false, new OnHasUrlAction() {
|
onCallRequestUrl(previousMediaItemIndex, false, new OnHasUrlAction() {
|
||||||
@Override
|
@Override
|
||||||
public void onHasUrl() {
|
public void onHasUrl() {
|
||||||
CommonUtils.LogMsg("-------------有有效URl--播放检查上一首 位置=" + previousMediaItemIndex);
|
// CommonUtils.LogMsg("-------------有有效URl--播放检查上一首 位置=" + previousMediaItemIndex);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -253,7 +252,7 @@ public class MyMediaControllerManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
CharSequence title = mediaController.getMediaItemAt(i).mediaMetadata.title;
|
CharSequence title = mediaController.getMediaItemAt(i).mediaMetadata.title;
|
||||||
CommonUtils.LogMsg("-------------更新播放列表中的音频--id=" + playUrl.getVideoId());
|
// CommonUtils.LogMsg("-------------更新播放列表中的音频--id=" + playUrl.getVideoId());
|
||||||
mediaController.replaceMediaItem(i, builder.build());
|
mediaController.replaceMediaItem(i, builder.build());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -302,7 +301,7 @@ public class MyMediaControllerManager {
|
|||||||
MediaMetadata_builder.setArtworkUri(Uri.parse(playInfo.getCovert()));
|
MediaMetadata_builder.setArtworkUri(Uri.parse(playInfo.getCovert()));
|
||||||
MediaMetadata_builder.setTitle(playInfo.getSongTitle());
|
MediaMetadata_builder.setTitle(playInfo.getSongTitle());
|
||||||
|
|
||||||
CommonUtils.LogMsg("----------添加播放列表 i=" + i + "---" + playInfo.getSingerName() + "-------VideoId=" + videoId + "---playInfo.getDuration()=" + playInfo.getDuration());
|
// CommonUtils.LogMsg("----------添加播放列表 i=" + i + "---" + playInfo.getSingerName() + "-------VideoId=" + videoId + "---playInfo.getDuration()=" + playInfo.getDuration());
|
||||||
// MediaMetadata_builder.setRecordingYear(Integer.parseInt(playInfo.getYear()));
|
// MediaMetadata_builder.setRecordingYear(Integer.parseInt(playInfo.getYear()));
|
||||||
builder.setMediaMetadata(MediaMetadata_builder.build());
|
builder.setMediaMetadata(MediaMetadata_builder.build());
|
||||||
mediaController.addMediaItem(builder.build());
|
mediaController.addMediaItem(builder.build());
|
||||||
@ -387,7 +386,7 @@ public class MyMediaControllerManager {
|
|||||||
@Override
|
@Override
|
||||||
public void onHasUrl() {
|
public void onHasUrl() {
|
||||||
mediaController.play();
|
mediaController.play();
|
||||||
CommonUtils.LogMsg("-------------有有效URl--播放指定播放列表位置的歌曲 index=" + index);
|
// CommonUtils.LogMsg("-------------有有效URl--播放指定播放列表位置的歌曲 index=" + index);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -405,9 +404,9 @@ public class MyMediaControllerManager {
|
|||||||
if (customerDownload.isDownload()) {
|
if (customerDownload.isDownload()) {
|
||||||
MediaItem mediaItem = CommonUtils.downloadToMediaItem(customerDownload.getDownloadData());
|
MediaItem mediaItem = CommonUtils.downloadToMediaItem(customerDownload.getDownloadData());
|
||||||
mediaController.replaceMediaItem(index, mediaItem);
|
mediaController.replaceMediaItem(index, mediaItem);
|
||||||
CommonUtils.LogMsg("-------------请求URl 已经下载过 index" + index + "---playNow=" + playNow);
|
// CommonUtils.LogMsg("-------------请求URl 已经下载过 index" + index + "---playNow=" + playNow);
|
||||||
} else {
|
} else {
|
||||||
CommonUtils.LogMsg("-------------请求URl index" + index + "---playNow=" + playNow);
|
// CommonUtils.LogMsg("-------------请求URl index" + index + "---playNow=" + playNow);
|
||||||
mListener.onRequestNextUri(mediaItemAt.mediaId, index, playNow);
|
mListener.onRequestNextUri(mediaItemAt.mediaId, index, playNow);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1,4 +1,4 @@
|
|||||||
package com.hi.music.player.media3;
|
package com.offline.music.playermp3.media3;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
|
||||||
@ -30,7 +30,5 @@ public class MyPlayCacheManager {
|
|||||||
return playCache;
|
return playCache;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static SimpleCache getPlayCache() {
|
|
||||||
return playCache;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@ -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;
|
||||||
@ -74,21 +70,11 @@ public class PlaybackService extends MediaSessionService {
|
|||||||
DefaultDataSource.Factory factory = new DefaultDataSource.Factory(this);
|
DefaultDataSource.Factory factory = new DefaultDataSource.Factory(this);
|
||||||
playCache = MyPlayCacheManager.getInitPlayCache(context);
|
playCache = MyPlayCacheManager.getInitPlayCache(context);
|
||||||
CacheDataSource.Factory factory1 = new CacheDataSource.Factory().setCache(playCache)
|
CacheDataSource.Factory factory1 = new CacheDataSource.Factory().setCache(playCache)
|
||||||
.setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
|
.setUpstreamDataSourceFactory(factory);
|
||||||
.setConnectTimeoutMs(16000)
|
// .setUpstreamDataSourceFactory(new DefaultHttpDataSource.Factory()
|
||||||
.setReadTimeoutMs(8000)
|
// .setConnectTimeoutMs(16000)
|
||||||
.setUserAgent("Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"))
|
// .setReadTimeoutMs(8000)
|
||||||
.setEventListener(new CacheDataSource.EventListener() {
|
// .setUserAgent("Mozilla/5.0 (Windows NT 10.0; rv:91.0) Gecko/20100101 Firefox/91.0"));
|
||||||
@Override
|
|
||||||
public void onCachedBytesRead(long cacheSizeBytes, long cachedBytesRead) {
|
|
||||||
CommonUtils.LogMsg("-----------缓存2 -PlayCache-" + cacheSizeBytes + "----cacheSizeBytes=" + cachedBytesRead);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onCacheIgnored(int reason) {
|
|
||||||
CommonUtils.LogMsg("-----------缓存2忽略 PlayCache=" + reason);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
downloadCache = MyDownloadService.getDownloadCache();
|
downloadCache = MyDownloadService.getDownloadCache();
|
||||||
return new CacheDataSource.Factory()
|
return new CacheDataSource.Factory()
|
||||||
.setCache(downloadCache)
|
.setCache(downloadCache)
|
||||||
@ -97,12 +83,12 @@ public class PlaybackService extends MediaSessionService {
|
|||||||
.setEventListener(new CacheDataSource.EventListener() {
|
.setEventListener(new CacheDataSource.EventListener() {
|
||||||
@Override
|
@Override
|
||||||
public void onCachedBytesRead(long cacheSizeBytes, long cachedBytesRead) {
|
public void onCachedBytesRead(long cacheSizeBytes, long cachedBytesRead) {
|
||||||
CommonUtils.LogMsg("-----------缓存1 DownloadCache --" + cacheSizeBytes + "----cacheSizeBytes=" + cachedBytesRead);
|
// CommonUtils.LogMsg("-----------缓存1 DownloadCache --" + cacheSizeBytes + "----cacheSizeBytes=" + cachedBytesRead);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCacheIgnored(int reason) {
|
public void onCacheIgnored(int reason) {
|
||||||
CommonUtils.LogMsg("-----------缓存1忽略DownloadCache =" + reason);
|
// CommonUtils.LogMsg("-----------缓存1忽略DownloadCache =" + reason);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
// .setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR);
|
// .setFlags(CacheDataSource.FLAG_IGNORE_CACHE_ON_ERROR);
|
||||||
@ -117,7 +103,7 @@ public class PlaybackService extends MediaSessionService {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public DataSpec resolveDataSpec(DataSpec dataSpec) {
|
public DataSpec resolveDataSpec(DataSpec dataSpec) {
|
||||||
CommonUtils.LogMsg("--------resolveDataSpec dataSpec.key=" + dataSpec.key+"---dataSpec.uri="+dataSpec.uri);
|
CommonUtils.LogMsg("--------resolveDataSpec dataSpec.key=" + dataSpec.key);
|
||||||
return dataSpec;
|
return dataSpec;
|
||||||
|
|
||||||
// long length = 1L;
|
// long length = 1L;
|
||||||
@ -142,7 +128,7 @@ public class PlaybackService extends MediaSessionService {
|
|||||||
@Override
|
@Override
|
||||||
public Uri resolveReportedUri(Uri uri) {
|
public Uri resolveReportedUri(Uri uri) {
|
||||||
CommonUtils.LogMsg("--------resolveDataSpec uri=" + uri);
|
CommonUtils.LogMsg("--------resolveDataSpec uri=" + uri);
|
||||||
return ResolvingDataSource.Resolver.super.resolveReportedUri(Uri.parse("---"));
|
return ResolvingDataSource.Resolver.super.resolveReportedUri(uri);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -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 {
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user