diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e574cd7..19da240 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.hi.melody.music.noise" minSdk = 24 targetSdk = 34 - versionCode = 2 - versionName = "1.0.2" + versionCode = 3 + versionName = "1.0.3" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/melody/offline/music/activity/LaunchActivity.kt b/app/src/main/java/melody/offline/music/activity/LaunchActivity.kt index 4ed45d4..19b71b1 100644 --- a/app/src/main/java/melody/offline/music/activity/LaunchActivity.kt +++ b/app/src/main/java/melody/offline/music/activity/LaunchActivity.kt @@ -60,7 +60,7 @@ class LaunchActivity : MoBaseActivity() { removeMessages(MSG_LOAD_AD_LOADED) return } - progress += 2 + progress += 3 progressBar.setProgress(progress) sendEmptyMessageDelayed(MSG_LOAD_AD_LOADED, delayMillis) } diff --git a/app/src/main/java/melody/offline/music/activity/MainActivity.kt b/app/src/main/java/melody/offline/music/activity/MainActivity.kt index 1c3aee1..0c4389b 100644 --- a/app/src/main/java/melody/offline/music/activity/MainActivity.kt +++ b/app/src/main/java/melody/offline/music/activity/MainActivity.kt @@ -43,10 +43,9 @@ class MainActivity : BaseActivity() { override fun onResume() { super.onResume() + LolAdWrapper.shared.loadAdIfNotCached(this, AdPlacement.INST_CUTTING_SONG) LolAdWrapper.shared.loadAdIfNotCached(this, AdPlacement.INST_DOWNLOAD) - LolAdWrapper.shared.loadAdIfNotCached(this, AdPlacement.INST_SEARCH) - LolAdWrapper.shared.loadAdIfNotCached(this, AdPlacement.INST_ME_PAGE_LIST) val currentPlayer = LocalMediaControllerManager.getController() if (melody.offline.music.App.currentPlayingAudio == null) { diff --git a/app/src/main/java/melody/offline/music/ads/LolAdWrapper.kt b/app/src/main/java/melody/offline/music/ads/LolAdWrapper.kt index 221cdd6..7dc651d 100644 --- a/app/src/main/java/melody/offline/music/ads/LolAdWrapper.kt +++ b/app/src/main/java/melody/offline/music/ads/LolAdWrapper.kt @@ -131,9 +131,20 @@ class LolAdWrapper { } fun showAdTiming(act: Activity, placement: String, listener: LolShowListener? = null) { - //当前时间减去旧时间,才展示广告 + //当前时间减去旧时间,才展示广告(满足间隔时间才show广告) if (System.currentTimeMillis() - App.app.lastAdDisplayTime.get() >= AppStore(App.app).showAdIntervalTime) { - showAdIfCached(act, placement, listener) + //判断当前广告位是否可以show,不能show则判断补位广告是否可以show。 + if (act.isFinishing || !hasCache(placement)) { + if (hasCache(AdPlacement.INST_BACKUP_ADS)) { + showAd(act, AdPlacement.INST_BACKUP_ADS, listener) + } else { + val map = mutableMapOf(Pair(AnalysisUtil.PARAM_VALUE, "No cache for ads")) + AnalysisUtil.placeToLogEvent(placement, AnalysisAdState.AD_SHOW_FAILED, map) + listener?.showFailed(LolShowError("No cache for ads")) + } + } else { + showAd(act, placement, listener) + } } } diff --git a/app/src/main/java/melody/offline/music/firebase/Constants.kt b/app/src/main/java/melody/offline/music/firebase/Constants.kt index a3be490..1e27f90 100644 --- a/app/src/main/java/melody/offline/music/firebase/Constants.kt +++ b/app/src/main/java/melody/offline/music/firebase/Constants.kt @@ -5,7 +5,7 @@ object Constants { const val KEY_SHOULD_ENTER_MUSIC_JSON = "key_should_enter_music_json" const val DEFAULT_SHOULD_ENTER_MUSIC_JSON = """ { - "versionCode": 2, + "versionCode": 3, "enter": false } """ diff --git a/app/src/main/java/melody/offline/music/fragment/MoMeFragment.kt b/app/src/main/java/melody/offline/music/fragment/MoMeFragment.kt index b39b86f..52a8ff2 100644 --- a/app/src/main/java/melody/offline/music/fragment/MoMeFragment.kt +++ b/app/src/main/java/melody/offline/music/fragment/MoMeFragment.kt @@ -30,6 +30,7 @@ class MoMeFragment : MoBaseFragment() { get() = FragmentMoMeBinding::inflate override suspend fun onViewCreated() { + LolAdWrapper.shared.loadAdIfNotCached(requireActivity(), AdPlacement.INST_ME_PAGE_LIST) initView() onReceive() } diff --git a/app/src/main/java/melody/offline/music/fragment/SearchFragment.kt b/app/src/main/java/melody/offline/music/fragment/SearchFragment.kt index 6ed9f27..bfe7228 100644 --- a/app/src/main/java/melody/offline/music/fragment/SearchFragment.kt +++ b/app/src/main/java/melody/offline/music/fragment/SearchFragment.kt @@ -71,6 +71,7 @@ class SearchFragment : MoBaseFragment(), TextWatcher, get() = FragmentSearchBinding::inflate override suspend fun onViewCreated() { + LolAdWrapper.shared.loadAdIfNotCached(requireActivity(), AdPlacement.INST_SEARCH) initView() initSearchSuggestionsAdapter() initSearchHistoryAdapter() diff --git a/app/src/main/java/melody/offline/music/view/MusicPlayerView.kt b/app/src/main/java/melody/offline/music/view/MusicPlayerView.kt index 021ed5f..5e18b1f 100644 --- a/app/src/main/java/melody/offline/music/view/MusicPlayerView.kt +++ b/app/src/main/java/melody/offline/music/view/MusicPlayerView.kt @@ -18,6 +18,8 @@ import com.bumptech.glide.Glide import melody.offline.music.R import melody.offline.music.activity.MoPlayDetailsActivity import melody.offline.music.activity.PrimaryActivity +import melody.offline.music.ads.AdPlacement +import melody.offline.music.ads.LolAdWrapper import melody.offline.music.fragment.MoHomeFragment import melody.offline.music.fragment.MoMeFragment import melody.offline.music.fragment.SearchFragment @@ -39,6 +41,7 @@ class MusicPlayerView( private var name: TextView private var desc: TextView private var playBlackBtn: LinearLayout + private var playSkipForwardBtn:LinearLayout init { LayoutInflater.from(context).inflate(R.layout.music_player_layout, this, true) @@ -49,6 +52,7 @@ class MusicPlayerView( name = findViewById(R.id.name) desc = findViewById(R.id.desc) playBlackBtn = findViewById(R.id.play_black_btn) + playSkipForwardBtn = findViewById(R.id.play_skip_forward_btn) initOnClickListener() } @@ -65,6 +69,17 @@ class MusicPlayerView( updateProgressState(meController) } } + playSkipForwardBtn.setOnClickListener { + if (meController != null) { + meController.seekToNextMediaItem() + updateInfoUi(meController.currentMediaItem) + updateProgressState(meController) + if (!meController.isPlaying) { + meController.prepare() + meController.play() + } + } + } goDetailsBtn.setOnClickListener { when (context) { is PrimaryActivity -> { diff --git a/app/src/main/res/drawable/play_skip_forward_black_icon.xml b/app/src/main/res/drawable/play_skip_forward_black_icon.xml new file mode 100644 index 0000000..8d5dc72 --- /dev/null +++ b/app/src/main/res/drawable/play_skip_forward_black_icon.xml @@ -0,0 +1,12 @@ + + + + diff --git a/app/src/main/res/layout/ad_layout_admob_banner.xml b/app/src/main/res/layout/ad_layout_admob_banner.xml index e6a2519..ccd739b 100644 --- a/app/src/main/res/layout/ad_layout_admob_banner.xml +++ b/app/src/main/res/layout/ad_layout_admob_banner.xml @@ -7,7 +7,7 @@ @@ -44,7 +44,7 @@ android:layout_marginBottom="4dp" android:gravity="center_vertical" android:orientation="vertical" - android:paddingHorizontal="12dp"> + android:paddingHorizontal="8dp"> @@ -27,32 +27,51 @@ - + android:orientation="horizontal" + android:gravity="center_vertical" + android:paddingBottom="4dp"> + + + + + + + @@ -62,10 +81,10 @@ android:id="@+id/ll_ad_options_view" android:layout_width="wrap_content" android:layout_height="wrap_content" - android:orientation="vertical" + android:layout_alignParentEnd="true" android:layout_marginTop="-10dp" - android:visibility="visible" - android:layout_alignParentEnd="true"> + android:orientation="vertical" + android:visibility="visible"> @@ -74,13 +93,13 @@ android:id="@+id/tv_event_content" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_marginHorizontal="12dp" + android:layout_marginBottom="12dp" android:ellipsize="end" android:fontFamily="@string/Roboto_Regular" android:lineSpacingExtra="0dp" android:maxLines="2" - android:layout_marginBottom="12dp" - android:layout_marginHorizontal="12dp" - android:textColor="@color/text_gray" + android:textColor="@color/white_60" android:textSize="12dp" tools:text="xxxxxxxxxxxxxxxxxxxxx" /> @@ -88,10 +107,9 @@ - + tools:background="@color/black_60">