diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 98ffe9d..3417aba 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -3,13 +3,16 @@ import java.text.SimpleDateFormat plugins { id("com.android.application") -// id("org.jetbrains.kotlin.android") + id("org.jetbrains.kotlin.android") // id ("kotlin-kapt") id("io.objectbox") id("com.google.gms.google-services") id("com.google.firebase.crashlytics") + id("applovin-quality-service") +} +applovin { + apiKey = "4CFHxOfvQvy95EqDxa_eNPe4pmq_KfoZPJeVscTMt2uT3VL2fO3iyZyBFMTOOTRbKw6WelbaDEhNzxOxVrlQTE" } - val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { @@ -17,12 +20,12 @@ android { compileSdk = 34 defaultConfig { - //com.hi.music.player - applicationId = "com.offline.music.player" + //com.offline.music.playermp3 + applicationId = "com.offline.music.playermp3" minSdk = 23 targetSdk = 34 - versionCode = 1 - versionName = "1.0.0" + versionCode = 3 + versionName = "1.0.2" setProperty("archivesBaseName", "Offline Music Player" + versionName + "(${versionCode})_$timestamp") @@ -39,9 +42,9 @@ android { ) } } -// kotlinOptions{ -// jvmTarget = "1.8" -// } + kotlinOptions{ + jvmTarget = "1.8" + } compileOptions { sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 @@ -78,24 +81,6 @@ dependencies { implementation ("jp.wasabeef:glide-transformations:4.3.0") - //提取图片主色 -// implementation ("androidx.palette:palette:1.0.0") - - //动画 -// implementation ("com.airbnb.android:lottie:6.5.0") - - //----------media3 -// implementation("androidx.media3:media3-exoplayer:1.4.1") -// implementation("androidx.media3:media3-exoplayer-dash:1.4.1") -// implementation("androidx.media3:media3-session:1.4.1") -// implementation("androidx.media3:media3-ui:1.4.1") -// implementation ("androidx.media3:media3-database:1.4.1") - //----------media3 - - - -// implementation ("com.geyifeng.immersionbar:immersionbar:3.2.2") -// implementation ("com.geyifeng.immersionbar:immersionbar-components:3.2.2") //------------------firebase @@ -103,4 +88,26 @@ dependencies { implementation("com.google.firebase:firebase-crashlytics") implementation("com.google.firebase:firebase-analytics") 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") } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json index 214f730..b447bd2 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -1,21 +1,21 @@ { "project_info": { - "project_number": "550960818622", - "project_id": "himelody-and", - "storage_bucket": "himelody-and.appspot.com" + "project_number": "764712897094", + "project_id": "offline-music-player-176ab", + "storage_bucket": "offline-music-player-176ab.firebasestorage.app" }, "client": [ { "client_info": { - "mobilesdk_app_id": "1:550960818622:android:96fd4141e43410fb24f1ef", + "mobilesdk_app_id": "1:764712897094:android:2d533528b5ff4271a45847", "android_client_info": { - "package_name": "com.offline.music.player" + "package_name": "com.offline.music.playermp3" } }, "oauth_client": [], "api_key": [ { - "current_key": "AIzaSyCp3XR60onMqiGj9pD8ADmrDEOOn__sQDk" + "current_key": "AIzaSyDohnv8AScCd1A7RTR-6LLLtQcE7EuJmIw" } ], "services": { diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index a2f7226..cc163d0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,9 +17,9 @@ android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" - android:icon="@mipmap/logo" + android:icon="@mipmap/music_logo" android:label="@string/app_name" - android:roundIcon="@mipmap/logo" + android:roundIcon="@mipmap/music_logo" android:supportsRtl="true" android:theme="@style/Theme.MusicApp" tools:targetApi="31"> diff --git a/app/src/main/java/com/offline/music/player/MusicApplication.java b/app/src/main/java/com/offline/music/player/MusicApplication.java index 13d7c65..9e17179 100644 --- a/app/src/main/java/com/offline/music/player/MusicApplication.java +++ b/app/src/main/java/com/offline/music/player/MusicApplication.java @@ -2,6 +2,14 @@ package com.offline.music.player; import android.app.Application; import android.content.Context; +import android.content.Intent; + +import androidx.localbroadcastmanager.content.LocalBroadcastManager; + +import com.applovin.sdk.AppLovinMediationProvider; +import com.applovin.sdk.AppLovinSdk; +import com.applovin.sdk.AppLovinSdkConfiguration; +import com.applovin.sdk.AppLovinSdkInitializationConfiguration; public class MusicApplication extends Application { @@ -10,7 +18,10 @@ public class MusicApplication extends Application { 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; @@ -25,6 +36,7 @@ public class MusicApplication extends Application { public void onCreate() { super.onCreate(); myApplication = this; + InitializeMax(); // Sp.init(this); // RemoteConfigJava.getInstance().init(this); // ObjectBoxManager.init(this); @@ -36,5 +48,19 @@ public class MusicApplication extends Application { // }); } + 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)); + } + }); + } } diff --git a/app/src/main/java/com/offline/music/player/adapter/A_ImportFragmentAdapter.java b/app/src/main/java/com/offline/music/player/adapter/A_ImportFragmentAdapter.java index 0cce4d2..f216783 100644 --- a/app/src/main/java/com/offline/music/player/adapter/A_ImportFragmentAdapter.java +++ b/app/src/main/java/com/offline/music/player/adapter/A_ImportFragmentAdapter.java @@ -1,5 +1,6 @@ package com.offline.music.player.adapter; +import android.app.Activity; import android.content.Context; import android.content.Intent; import android.util.Log; @@ -14,6 +15,8 @@ import androidx.recyclerview.widget.RecyclerView; import com.offline.music.player.R; import com.offline.music.player.javabean.A_data.AudioItem; +import com.offline.music.player.max.MaxManager; +import com.offline.music.player.max.onAdAfterAction; import com.offline.music.player.ui.activity.A_PlayActivity; import java.util.ArrayList; @@ -22,13 +25,13 @@ import java.util.List; public class A_ImportFragmentAdapter extends RecyclerView.Adapter { - private Context context; + private Activity context; private List audioFiles = new ArrayList<>(); private AudioItem audioItem; private OnOptionClickListener onOptionClickListener;; private String newName; - public A_ImportFragmentAdapter(Context context,String newName) { + public A_ImportFragmentAdapter(Activity context, String newName) { this.context = context; this.newName = newName; } @@ -50,10 +53,15 @@ public class A_ImportFragmentAdapter extends RecyclerView.Adapter { - private Context context; + private Activity context; private List audioItems = new ArrayList<>(); - public A_InstrumentAdapter(Context context) { + public A_InstrumentAdapter(Activity context) { this.context = context; } @@ -54,9 +57,14 @@ public class A_InstrumentAdapter extends RecyclerView.Adapter { - private Context context; + private Activity context; private List audioItems = new ArrayList<>(); - public A_NatureAdapter(Context context) { + public A_NatureAdapter(Activity context) { this.context = context; } @@ -51,9 +54,14 @@ public class A_NatureAdapter extends RecyclerView.Adapter { - private Context context; + private Activity context; private List audioItems = new ArrayList<>(); - public A_WhiteAdapter(Context context) { + public A_WhiteAdapter(Activity context) { this.context = context; } @@ -55,9 +58,14 @@ public class A_WhiteAdapter extends RecyclerView.Adapter adList = new ArrayList<>(); + + public static MaxInterstitialAd getAd(List list) { + Collections.shuffle(list); + for (MaxInterstitialAd ad : list) { + if (ad.isReady()) { + Log.d(AD_TAG, "isReady"); + return ad; + } + } + Log.d(AD_TAG, "no Ready"); + 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 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(); + } + } + }); + } + +} diff --git a/app/src/main/java/com/offline/music/player/max/NativeMaxListener.java b/app/src/main/java/com/offline/music/player/max/NativeMaxListener.java new file mode 100644 index 0000000..e6304d0 --- /dev/null +++ b/app/src/main/java/com/offline/music/player/max/NativeMaxListener.java @@ -0,0 +1,10 @@ +package com.offline.music.player.max; + +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.nativeAds.MaxNativeAdLoader; + +public interface NativeMaxListener { + void onLoaded(MaxAd ad, MaxNativeAdLoader maxNativeAdLoader); + + +} diff --git a/app/src/main/java/com/offline/music/player/max/WelComManager.kt b/app/src/main/java/com/offline/music/player/max/WelComManager.kt new file mode 100644 index 0000000..3a8261f --- /dev/null +++ b/app/src/main/java/com/offline/music/player/max/WelComManager.kt @@ -0,0 +1,80 @@ +package com.offline.music.player.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.player.MusicApplication + + +object WelComManager { + + private lateinit var timer: CountDownTimer + + private var need_Show = true + + private lateinit var lists: List + + + + @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") + } + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/offline/music/player/max/onAdAfterAction.java b/app/src/main/java/com/offline/music/player/max/onAdAfterAction.java new file mode 100644 index 0000000..d296a6f --- /dev/null +++ b/app/src/main/java/com/offline/music/player/max/onAdAfterAction.java @@ -0,0 +1,6 @@ +package com.offline.music.player.max; + +public interface onAdAfterAction { + + void onAction(); +} diff --git a/app/src/main/java/com/offline/music/player/max/onAdStatusListener.java b/app/src/main/java/com/offline/music/player/max/onAdStatusListener.java new file mode 100644 index 0000000..b758fb1 --- /dev/null +++ b/app/src/main/java/com/offline/music/player/max/onAdStatusListener.java @@ -0,0 +1,6 @@ +package com.offline.music.player.max; + +public interface onAdStatusListener { + + void onAdStatus(int type); +} diff --git a/app/src/main/java/com/offline/music/player/ui/activity/A_HomeActivity.java b/app/src/main/java/com/offline/music/player/ui/activity/A_HomeActivity.java index 37e4b43..13ae036 100644 --- a/app/src/main/java/com/offline/music/player/ui/activity/A_HomeActivity.java +++ b/app/src/main/java/com/offline/music/player/ui/activity/A_HomeActivity.java @@ -16,6 +16,8 @@ import com.offline.music.player.adapter.A_HomeViewPagerAdapter; import com.offline.music.player.databinding.ActivityAhomeBinding; import com.offline.music.player.databinding.HomeTabCustomBinding; import com.offline.music.player.javabean.A_data.AudioItem; +import com.offline.music.player.max.MaxManager; +import com.offline.music.player.max.onAdAfterAction; import com.offline.music.player.service.MusicPlayerForegroundService; import java.util.Locale; @@ -38,7 +40,6 @@ public class A_HomeActivity extends BaseActivity { public void onServiceConnected(ComponentName name, IBinder service) { musicService = ((MusicPlayerForegroundService.MusicBinder) service).getService(); // 获取服务实例 isBound = true; // 服务已绑定 - Log.d("A_HomeActivity", "isBound"); updatePlayButtonState(); // 更新播放按钮状态 updateProgress(); // 启动进度更新 observeIsPlaying(); // 观察播放状态变化 @@ -54,6 +55,8 @@ public class A_HomeActivity extends BaseActivity { @Override protected void onCreateInit() { + + MaxManager.onLoadAd(); Intent serviceIntent = new Intent(this, MusicPlayerForegroundService.class); startService(serviceIntent); // 启动音乐播放服务 bindService(serviceIntent, serviceConnection, Context.BIND_AUTO_CREATE); // 绑定服务 @@ -64,10 +67,15 @@ public class A_HomeActivity extends BaseActivity { vb.homeContainer.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - AudioItem audioItem = musicService.getAudioItem(); - Intent intent = new Intent(A_HomeActivity.this, A_PlayActivity.class); - intent.putExtra("Path", audioItem); - startActivity(intent); + MaxManager.startShowMaxAd(A_HomeActivity.this, new onAdAfterAction() { + @Override + public void onAction() { + AudioItem audioItem = musicService.getAudioItem(); + Intent intent = new Intent(A_HomeActivity.this, A_PlayActivity.class); + intent.putExtra("Path", audioItem); + startActivity(intent); + } + }); } }); setupProgressBar(); // 设置进度条 diff --git a/app/src/main/java/com/offline/music/player/ui/activity/A_PlayActivity.java b/app/src/main/java/com/offline/music/player/ui/activity/A_PlayActivity.java index caf3ddc..3cd2ffa 100644 --- a/app/src/main/java/com/offline/music/player/ui/activity/A_PlayActivity.java +++ b/app/src/main/java/com/offline/music/player/ui/activity/A_PlayActivity.java @@ -33,6 +33,8 @@ import com.google.android.material.bottomsheet.BottomSheetDialog; import com.offline.music.player.R; import com.offline.music.player.databinding.ActivityAplayBinding; import com.offline.music.player.javabean.A_data.AudioItem; +import com.offline.music.player.max.MaxManager; +import com.offline.music.player.max.onAdAfterAction; import com.offline.music.player.service.MusicPlayerForegroundService; import java.util.ArrayList; @@ -91,6 +93,7 @@ public class A_PlayActivity extends BaseActivity { @Override protected void onCreateInit() { + MaxManager.onLoadAd(); textViews.add(vb.songTitle); textViews.add(vb.artistAlbumText); textViews.add(vb.current); @@ -177,7 +180,14 @@ public class A_PlayActivity extends BaseActivity { @Override protected void onInitClick() { vb.songSeekbar.setOnSeekBarChangeListener(new SeekBarListener()); // 设置进度条监听 - vb.repeatButton.setOnClickListener(v -> showTimerDialog()); // 设置定时器按钮的点击事件 + vb.repeatButton.setOnClickListener(v -> { + MaxManager.startShowMaxAd(A_PlayActivity.this, new onAdAfterAction() { + @Override + public void onAction() { + showTimerDialog(); + } + }); + }); // 设置定时器按钮的点击事件 vb.prevButton.setOnClickListener(v -> toggleBackground()); // 设置切换背景按钮的点击事件 } @@ -193,20 +203,30 @@ public class A_PlayActivity extends BaseActivity { // 设置播放按钮的点击事件 private void setupPlayButtonClickListener() { vb.playButton.setOnClickListener(v -> { - if (isBound && musicService != null) { - // 根据播放状态切换播放/暂停 - if (Boolean.TRUE.equals(musicService.getIsPlaying().getValue())) { - musicService.pauseAudio(); - } else { - musicService.resumeAudio(); - } - } - if (musicService != null) { - musicService.startUpdatingProgress(); - } + MaxManager.startShowMaxAd(A_PlayActivity.this, new onAdAfterAction() { + @Override + public void onAction() { + if (isBound && musicService != null) { + // 根据播放状态切换播放/暂停 + if (Boolean.TRUE.equals(musicService.getIsPlaying().getValue())) { + musicService.pauseAudio(); + } else { + musicService.resumeAudio(); + } + } + if (musicService != null) { + musicService.startUpdatingProgress(); + } + } + }); }); - vb.backButton.setOnClickListener(v -> finish()); // 返回按钮点击事件 + vb.backButton.setOnClickListener(v -> MaxManager.startShowMaxAd(this, new onAdAfterAction() { + @Override + public void onAction() { + finish(); + } + })); // 返回按钮点击事件 } diff --git a/app/src/main/java/com/offline/music/player/ui/activity/A_SettingActivity.java b/app/src/main/java/com/offline/music/player/ui/activity/A_SettingActivity.java index 00d3fd0..62977d6 100644 --- a/app/src/main/java/com/offline/music/player/ui/activity/A_SettingActivity.java +++ b/app/src/main/java/com/offline/music/player/ui/activity/A_SettingActivity.java @@ -4,6 +4,7 @@ import android.view.View; import com.offline.music.player.databinding.ActivityAsettingBinding; import com.offline.music.player.helper.SettingUtil; +import com.offline.music.player.max.MaxManager; public class A_SettingActivity extends BaseActivity { @@ -15,7 +16,7 @@ public class A_SettingActivity extends BaseActivity { @Override protected void onCreateInit() { - + MaxManager.onLoadAd(); } @Override diff --git a/app/src/main/java/com/offline/music/player/ui/activity/A_SplashActivity.java b/app/src/main/java/com/offline/music/player/ui/activity/A_SplashActivity.java index a09644b..65c8db9 100644 --- a/app/src/main/java/com/offline/music/player/ui/activity/A_SplashActivity.java +++ b/app/src/main/java/com/offline/music/player/ui/activity/A_SplashActivity.java @@ -5,11 +5,17 @@ import android.os.CountDownTimer; import android.view.View; import com.offline.music.player.databinding.ActivityAsplashBinding; +import com.offline.music.player.max.WelComManager; + + +import kotlin.Unit; +import kotlin.jvm.functions.Function0; +import kotlin.jvm.functions.Function1; public class A_SplashActivity extends BaseActivity { - private static final int SPLASH_TIME_OUT = 1500; + private static final int SPLASH_TIME_OUT = 15000; private CountDownTimer countDownTimer; @Override @@ -46,25 +52,24 @@ public class A_SplashActivity extends BaseActivity { public void intData() { - countDownTimer = new CountDownTimer(SPLASH_TIME_OUT, 100) { - + countDownTimer = WelComManager.initTimer(this, SPLASH_TIME_OUT, new Function1() { @Override - public void onTick(long millisUntilFinished) { - - float v = 100 - (float) millisUntilFinished / SPLASH_TIME_OUT * 100; + public Unit invoke(Long aLong) { + float v = 100 - (float) aLong / SPLASH_TIME_OUT * 100; int v1 = (int) v; vb.progressBar.setProgress(v1); - + return null; } - + }, new Function0() { @Override - public void onFinish() { + public Unit invoke() { vb.progressBar.setProgress(100); enterHome(); + return null; } - }; + }); + - countDownTimer.start(); } @@ -79,4 +84,13 @@ public class A_SplashActivity extends BaseActivity { finish(); } + + @Override + protected void onDestroy() { + super.onDestroy(); + if (countDownTimer != null) { + countDownTimer.cancel(); + countDownTimer = null; + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/offline/music/player/ui/fragmnt/A_HomeFragment.java b/app/src/main/java/com/offline/music/player/ui/fragmnt/A_HomeFragment.java index 3e278a3..342c4de 100644 --- a/app/src/main/java/com/offline/music/player/ui/fragmnt/A_HomeFragment.java +++ b/app/src/main/java/com/offline/music/player/ui/fragmnt/A_HomeFragment.java @@ -38,9 +38,9 @@ public class A_HomeFragment extends BaseFragment { Vb.recyclerViewThird.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.VERTICAL, false)); // 初始化适配器 - instrumentAdapter = new A_InstrumentAdapter(requireContext()); - whiteAdapter = new A_WhiteAdapter(requireContext()); - natureAdapter = new A_NatureAdapter(requireContext()); + instrumentAdapter = new A_InstrumentAdapter(requireActivity()); + whiteAdapter = new A_WhiteAdapter(requireActivity()); + natureAdapter = new A_NatureAdapter(requireActivity()); // 设置适配器到 RecyclerView Vb.recyclerViewFirst.setAdapter(instrumentAdapter); diff --git a/app/src/main/java/com/offline/music/player/ui/fragmnt/A_ImportFragment.java b/app/src/main/java/com/offline/music/player/ui/fragmnt/A_ImportFragment.java index ce52ac8..d27433e 100644 --- a/app/src/main/java/com/offline/music/player/ui/fragmnt/A_ImportFragment.java +++ b/app/src/main/java/com/offline/music/player/ui/fragmnt/A_ImportFragment.java @@ -57,7 +57,7 @@ public class A_ImportFragment extends BaseFragment { @Override protected void initView() { viewModel = new ViewModelProvider(this).get(A_VMImport.class); - adapter = new A_ImportFragmentAdapter(requireContext(),newName); + adapter = new A_ImportFragmentAdapter(requireActivity(),newName); setupRecyclerView(); // observeAudioFiles(); diff --git a/app/src/main/res/layout/activity_asplash.xml b/app/src/main/res/layout/activity_asplash.xml index 8599aa8..53ed539 100644 --- a/app/src/main/res/layout/activity_asplash.xml +++ b/app/src/main/res/layout/activity_asplash.xml @@ -12,7 +12,7 @@ android:id="@+id/splash_image" android:layout_width="150dp" android:layout_height="150dp" - android:src="@mipmap/logo" + android:src="@mipmap/music_logo" app:layout_constraintBottom_toTopOf="@+id/splash_title" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" /> diff --git a/app/src/main/res/mipmap-xxxhdpi/logo.jpg b/app/src/main/res/mipmap-xxxhdpi/logo.jpg deleted file mode 100644 index 8b1f4a8..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/logo.jpg and /dev/null differ diff --git a/app/src/main/res/mipmap-xxxhdpi/music_logo.png b/app/src/main/res/mipmap-xxxhdpi/music_logo.png new file mode 100644 index 0000000..38d1bea Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/music_logo.png differ diff --git a/app/src/main/res/mipmap-xxxhdpi/placeholder.jpg b/app/src/main/res/mipmap-xxxhdpi/placeholder.jpg deleted file mode 100644 index 92a5d44..0000000 Binary files a/app/src/main/res/mipmap-xxxhdpi/placeholder.jpg and /dev/null differ diff --git a/build.gradle.kts b/build.gradle.kts index f0ca203..746bd86 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,7 +1,7 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { id("com.android.application") version "8.1.3" apply false -// id("org.jetbrains.kotlin.android") version "1.9.22" apply false + id("org.jetbrains.kotlin.android") version "1.9.22" apply false id("com.google.gms.google-services") version "4.3.15" apply false @@ -12,5 +12,6 @@ plugins { buildscript { dependencies { classpath("io.objectbox:objectbox-gradle-plugin:4.0.3") + classpath ("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 3e927b1..d703cac 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects diff --git a/settings.gradle.kts b/settings.gradle.kts index 194ef51..ddb9e75 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,7 @@ pluginManagement { google() mavenCentral() gradlePluginPortal() + maven { url = uri("https://artifacts.applovin.com/android") } } } dependencyResolutionManagement { @@ -10,6 +11,9 @@ dependencyResolutionManagement { repositories { google() mavenCentral() + maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") } + maven { url = uri("https://android-sdk.is.com") } + maven { url = uri("https://artifact.bytedance.com/repository/pangle") } } }