update
This commit is contained in:
parent
f04a25ead9
commit
07bb4bf222
@ -70,7 +70,8 @@ import org.json.JSONObject
|
|||||||
|
|
||||||
|
|
||||||
@OptIn(UnstableApi::class)
|
@OptIn(UnstableApi::class)
|
||||||
abstract class MoBaseActivity : AppCompatActivity(), CoroutineScope by MainScope(), LifecycleOwner {
|
abstract class MoBaseActivity : AppCompatActivity(), MusicPlayerView.PlaySkipForwardListener,
|
||||||
|
CoroutineScope by MainScope(), LifecycleOwner {
|
||||||
private var playerListener: Player.Listener? = null
|
private var playerListener: Player.Listener? = null
|
||||||
|
|
||||||
enum class Event {
|
enum class Event {
|
||||||
@ -93,7 +94,7 @@ abstract class MoBaseActivity : AppCompatActivity(), CoroutineScope by MainScope
|
|||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
musicPlayerView = MusicPlayerView(this, meController)
|
musicPlayerView = MusicPlayerView(this, meController, this)
|
||||||
initPlayerListener()
|
initPlayerListener()
|
||||||
launch {
|
launch {
|
||||||
main()
|
main()
|
||||||
|
|||||||
@ -278,6 +278,12 @@ class MoListDetailsActivity : MoBaseActivity(), DetailsListAdapter.OnItemMoreCli
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun onOnPlaySkipForwardListener() {
|
||||||
|
if (adapter != null) {
|
||||||
|
adapter?.notifyDataSetChanged()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@SuppressLint("NotifyDataSetChanged")
|
@SuppressLint("NotifyDataSetChanged")
|
||||||
private fun activityOnResume() {
|
private fun activityOnResume() {
|
||||||
addMusicPlayerViewToLayout(binding.playMusicLayout)
|
addMusicPlayerViewToLayout(binding.playMusicLayout)
|
||||||
@ -374,7 +380,6 @@ class MoListDetailsActivity : MoBaseActivity(), DetailsListAdapter.OnItemMoreCli
|
|||||||
val mapList = it.moPlaylistOrAlbumListBean.map { item ->
|
val mapList = it.moPlaylistOrAlbumListBean.map { item ->
|
||||||
val offlineBean = App.appOfflineDBManager.getOfflineBeanByID(item.videoId!!)
|
val offlineBean = App.appOfflineDBManager.getOfflineBeanByID(item.videoId!!)
|
||||||
val favoriteBean = App.appFavoriteDBManager.getFavoriteBeanByID(item.videoId)
|
val favoriteBean = App.appFavoriteDBManager.getFavoriteBeanByID(item.videoId)
|
||||||
LogD(TAG,"offlineBean->$offlineBean")
|
|
||||||
item.copy(
|
item.copy(
|
||||||
isOffline = offlineBean?.isOffline ?: false,
|
isOffline = offlineBean?.isOffline ?: false,
|
||||||
isFavorite = favoriteBean?.isFavorite ?: false,
|
isFavorite = favoriteBean?.isFavorite ?: false,
|
||||||
|
|||||||
@ -274,29 +274,37 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
|
|
||||||
is Request.OnDownload -> {
|
is Request.OnDownload -> {
|
||||||
val contentId = it.mediaItem.mediaId
|
val contentId = it.mediaItem.mediaId
|
||||||
val offBean = App.appOfflineDBManager.getOfflineBeanByID(contentId)//得到当前ID的本地数据
|
val offBean =
|
||||||
|
App.appOfflineDBManager.getOfflineBeanByID(contentId)//得到当前ID的本地数据
|
||||||
if (offBean != null && offBean.bytesDownloaded?.let { bytes -> bytes > 0 } == true) {//判断当前数据库是否有这条数据。
|
if (offBean != null && offBean.bytesDownloaded?.let { bytes -> bytes > 0 } == true) {//判断当前数据库是否有这条数据。
|
||||||
showRemoveDownloadDialogHint(it.mediaItem)
|
showRemoveDownloadDialogHint(it.mediaItem)
|
||||||
LogD(TAG,"Request.OnDownload 11111")
|
LogD(TAG, "Request.OnDownload 11111")
|
||||||
} else {
|
} else {
|
||||||
LogD(TAG,"Request.OnDownload 22222")
|
LogD(TAG, "Request.OnDownload 22222")
|
||||||
//已经存在这条数据,直接写入数据
|
//已经存在这条数据,直接写入数据
|
||||||
if (DownloadUtil.downloadResourceExist(contentId)) {
|
if (DownloadUtil.downloadResourceExist(contentId)) {
|
||||||
insertOfflineData(it.mediaItem)
|
insertOfflineData(it.mediaItem)
|
||||||
requests.trySend(Request.UpdateDownloadUi(contentId))
|
requests.trySend(Request.UpdateDownloadUi(contentId))
|
||||||
|
|
||||||
LogD(TAG,"Request.OnDownload 33333")
|
LogD(TAG, "Request.OnDownload 33333")
|
||||||
}else{
|
} else {
|
||||||
val downloadRequest = DownloadRequest.Builder(contentId, contentId.toUri())
|
val downloadRequest =
|
||||||
.setCustomCacheKey(contentId).build()
|
DownloadRequest.Builder(contentId, contentId.toUri())
|
||||||
|
.setCustomCacheKey(contentId).build()
|
||||||
|
|
||||||
val downloadCount = DownloadUtil.getCurrentDownloads()
|
val downloadCount = DownloadUtil.getCurrentDownloads()
|
||||||
if (downloadCount >= 3) {
|
if (downloadCount >= 3) {
|
||||||
Toast.makeText(this@MoPlayDetailsActivity, getString(R.string.download_tips), Toast.LENGTH_LONG)
|
Toast.makeText(
|
||||||
.show()
|
this@MoPlayDetailsActivity,
|
||||||
|
getString(R.string.download_tips),
|
||||||
|
Toast.LENGTH_LONG
|
||||||
|
).show()
|
||||||
} else {
|
} else {
|
||||||
DownloadService.sendAddDownload(
|
DownloadService.sendAddDownload(
|
||||||
this@MoPlayDetailsActivity, MyDownloadService::class.java, downloadRequest, false
|
this@MoPlayDetailsActivity,
|
||||||
|
MyDownloadService::class.java,
|
||||||
|
downloadRequest,
|
||||||
|
false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -314,7 +322,9 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
AnalysisUtil.PARAM_VALUE, jsonObject.toString()
|
AnalysisUtil.PARAM_VALUE, jsonObject.toString()
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
AnalysisUtil.logEvent(AnalysisUtil.PLAYER_B_DOWNLOAD_CLICK, songMap)
|
AnalysisUtil.logEvent(
|
||||||
|
AnalysisUtil.PLAYER_B_DOWNLOAD_CLICK, songMap
|
||||||
|
)
|
||||||
|
|
||||||
LolAdWrapper.shared.loadAdIfNotCached(
|
LolAdWrapper.shared.loadAdIfNotCached(
|
||||||
this@MoPlayDetailsActivity, AdPlacement.INST_DOWNLOAD
|
this@MoPlayDetailsActivity, AdPlacement.INST_DOWNLOAD
|
||||||
@ -338,9 +348,9 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
val offlineBean = App.appOfflineDBManager.getOfflineBeanByID(it.id)
|
val offlineBean = App.appOfflineDBManager.getOfflineBeanByID(it.id)
|
||||||
val isOffline = offlineBean?.isOffline ?: false
|
val isOffline = offlineBean?.isOffline ?: false
|
||||||
if (DownloadUtil.downloadResourceExist(it.id) && isOffline) {
|
if (DownloadUtil.downloadResourceExist(it.id) && isOffline) {
|
||||||
downloadUi(true)
|
downloadUi(true, it.id)
|
||||||
} else {
|
} else {
|
||||||
downloadUi(false)
|
downloadUi(false, it.id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -386,6 +396,7 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateDownloadUI(download: Download) {
|
private fun updateDownloadUI(download: Download) {
|
||||||
|
LogD(TAG, "download.state")
|
||||||
when (download.state) {
|
when (download.state) {
|
||||||
Download.STATE_DOWNLOADING -> {
|
Download.STATE_DOWNLOADING -> {
|
||||||
binding.downloadLoading.visibility = View.VISIBLE
|
binding.downloadLoading.visibility = View.VISIBLE
|
||||||
@ -439,7 +450,8 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
requests.trySend(Request.UpdateDownloadUi(id))
|
requests.trySend(Request.UpdateDownloadUi(id))
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun downloadUi(b: Boolean) {
|
private fun downloadUi(b: Boolean, id: String) {
|
||||||
|
LogD(TAG, "downloadUi 1111")
|
||||||
if (b) {
|
if (b) {
|
||||||
binding.downloadLoading.visibility = View.GONE
|
binding.downloadLoading.visibility = View.GONE
|
||||||
binding.downloadImg.setImageResource(R.drawable.download_done_icon)
|
binding.downloadImg.setImageResource(R.drawable.download_done_icon)
|
||||||
@ -449,6 +461,17 @@ class MoPlayDetailsActivity : MoBaseActivity(), Player.Listener {
|
|||||||
binding.downloadImg.setImageResource(R.drawable.download_icon)
|
binding.downloadImg.setImageResource(R.drawable.download_icon)
|
||||||
binding.downloadImg.visibility = View.VISIBLE
|
binding.downloadImg.visibility = View.VISIBLE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
val currentDownload = DownloadUtil.getCurrentIdDownload(id)
|
||||||
|
if (currentDownload != null && currentDownload.state == Download.STATE_DOWNLOADING) {
|
||||||
|
binding.downloadLoading.visibility = View.VISIBLE
|
||||||
|
binding.downloadImg.visibility = View.GONE
|
||||||
|
binding.downloadBtn.isClickable = false
|
||||||
|
binding.downloadBtn.isEnabled = false
|
||||||
|
} else {
|
||||||
|
binding.downloadBtn.isClickable = true
|
||||||
|
binding.downloadBtn.isEnabled = true
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun updateFavoriteUi(b: Boolean) {
|
private fun updateFavoriteUi(b: Boolean) {
|
||||||
|
|||||||
@ -66,6 +66,7 @@ class MoHomeFragment : MoBaseFragment<FragmentMoHomeBinding>() {
|
|||||||
|
|
||||||
private fun initView() {
|
private fun initView() {
|
||||||
binding.tryAgainBtn.setOnClickListener {
|
binding.tryAgainBtn.setOnClickListener {
|
||||||
|
AnalysisUtil.logEvent(AnalysisUtil.HOME_B_MODULE_TRY_AGAIN_ACTION)
|
||||||
requests.trySend(Request.TryAgain)
|
requests.trySend(Request.TryAgain)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -18,6 +18,7 @@ object AnalysisUtil {
|
|||||||
const val HOME_B_PV = "home_b_pv"//B面首页曝光
|
const val HOME_B_PV = "home_b_pv"//B面首页曝光
|
||||||
const val HOME_B_MODULE_SHOW_SUCCESS_ACTION = "home_b_module_show_success_action"//首页资源曝光成功
|
const val HOME_B_MODULE_SHOW_SUCCESS_ACTION = "home_b_module_show_success_action"//首页资源曝光成功
|
||||||
const val HOME_B_MODULE_SHOW_FAIL_ACTION = "home_b_module_show_fail_action"//首页资源曝光失败
|
const val HOME_B_MODULE_SHOW_FAIL_ACTION = "home_b_module_show_fail_action"//首页资源曝光失败
|
||||||
|
const val HOME_B_MODULE_TRY_AGAIN_ACTION = "home_b_module_try_again_action"//首页资源曝光失败
|
||||||
const val HOME_B_MODULE_CLICK = "home_b_module_click"//点击首页模块
|
const val HOME_B_MODULE_CLICK = "home_b_module_click"//点击首页模块
|
||||||
const val ME_B_PV = "me_b_pv"//B面我的曝光
|
const val ME_B_PV = "me_b_pv"//B面我的曝光
|
||||||
const val PLAYER_B_PV = "player_b_pv"//B面播放器曝光
|
const val PLAYER_B_PV = "player_b_pv"//B面播放器曝光
|
||||||
|
|||||||
@ -13,6 +13,7 @@ import android.widget.LinearLayout
|
|||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import androidx.media3.common.MediaItem
|
import androidx.media3.common.MediaItem
|
||||||
import androidx.media3.common.Player
|
import androidx.media3.common.Player
|
||||||
|
import androidx.media3.exoplayer.offline.Download
|
||||||
import androidx.media3.session.MediaController
|
import androidx.media3.session.MediaController
|
||||||
import com.bumptech.glide.Glide
|
import com.bumptech.glide.Glide
|
||||||
import melody.offline.music.R
|
import melody.offline.music.R
|
||||||
@ -20,6 +21,7 @@ import melody.offline.music.activity.MoPlayDetailsActivity
|
|||||||
import melody.offline.music.activity.PrimaryActivity
|
import melody.offline.music.activity.PrimaryActivity
|
||||||
import melody.offline.music.ads.AdPlacement
|
import melody.offline.music.ads.AdPlacement
|
||||||
import melody.offline.music.ads.LolAdWrapper
|
import melody.offline.music.ads.LolAdWrapper
|
||||||
|
import melody.offline.music.bean.PlaylistItem
|
||||||
import melody.offline.music.fragment.MoHomeFragment
|
import melody.offline.music.fragment.MoHomeFragment
|
||||||
import melody.offline.music.fragment.MoMeFragment
|
import melody.offline.music.fragment.MoMeFragment
|
||||||
import melody.offline.music.fragment.SearchFragment
|
import melody.offline.music.fragment.SearchFragment
|
||||||
@ -30,6 +32,7 @@ import melody.offline.music.util.AnalysisUtil
|
|||||||
class MusicPlayerView(
|
class MusicPlayerView(
|
||||||
val context: Activity,
|
val context: Activity,
|
||||||
val meController: MediaController?,
|
val meController: MediaController?,
|
||||||
|
val listener :PlaySkipForwardListener,
|
||||||
attrs: AttributeSet? = null
|
attrs: AttributeSet? = null
|
||||||
) :
|
) :
|
||||||
LinearLayout(context, attrs) {
|
LinearLayout(context, attrs) {
|
||||||
@ -78,6 +81,8 @@ class MusicPlayerView(
|
|||||||
meController.prepare()
|
meController.prepare()
|
||||||
meController.play()
|
meController.play()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
listener.onOnPlaySkipForwardListener()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
goDetailsBtn.setOnClickListener {
|
goDetailsBtn.setOnClickListener {
|
||||||
@ -139,4 +144,9 @@ class MusicPlayerView(
|
|||||||
val currentPosition = meController.currentPosition
|
val currentPosition = meController.currentPosition
|
||||||
progressBar.setProgress(currentPosition)
|
progressBar.setProgress(currentPosition)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
interface PlaySkipForwardListener {
|
||||||
|
fun onOnPlaySkipForwardListener(){}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue
Block a user