diff --git a/app/src/main/java/com/lizongying/mytv/MainFragment.kt b/app/src/main/java/com/lizongying/mytv/MainFragment.kt index 6387ab8..7316108 100644 --- a/app/src/main/java/com/lizongying/mytv/MainFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/MainFragment.kt @@ -43,10 +43,6 @@ class MainFragment : BrowseSupportFragment() { private var ready = 0 - init { - request.fetchToken(::fragmentReady) - } - override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) headersState = HEADERS_DISABLED @@ -212,11 +208,7 @@ class MainFragment : BrowseSupportFragment() { fun fragmentReady() { ready++ Log.i(TAG, "ready $ready") - if (ready == 4) { - -// request?.fetchPage() -// tvListViewModel.getTVViewModel(0)?.let { request?.fetchProgram(it) } - + if (ready == 3) { val tvViewModel = tvListViewModel.getTVViewModel(itemPosition) tvViewModel?.changed() @@ -280,10 +272,6 @@ class MainFragment : BrowseSupportFragment() { } } - fun tvViewModel(): TVViewModel? { - return tvListViewModel.getTVViewModel(itemPosition) - } - private fun setupEventListeners() { onItemViewClickedListener = ItemViewClickedListener() onItemViewSelectedListener = ItemViewSelectedListener() diff --git a/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt b/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt index 71c3431..5fdfeb3 100644 --- a/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt +++ b/app/src/main/java/com/lizongying/mytv/PlayerFragment.kt @@ -14,9 +14,6 @@ import androidx.media3.common.Player import androidx.media3.common.VideoSize import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.ExoPlayer -import androidx.media3.exoplayer.analytics.AnalyticsListener -import androidx.media3.exoplayer.source.LoadEventInfo -import androidx.media3.exoplayer.source.MediaLoadData import androidx.media3.ui.PlayerView import com.lizongying.mytv.databinding.PlayerBinding import com.lizongying.mytv.models.TVViewModel @@ -80,71 +77,8 @@ class PlayerFragment : Fragment() { val videoUrlCurrent = tvViewModel.videoIndex.value?.let { tvViewModel.videoUrl.value?.get(it) } playerView?.player?.run { - val mediaItem = MediaItem.Builder() - tvViewModel.id.value?.let { mediaItem.setMediaId(it.toString()) } - videoUrlCurrent?.let { mediaItem.setUri(it) } - setMediaItem(mediaItem.build()) + videoUrlCurrent?.let { setMediaItem(MediaItem.fromUri(it)) } prepare() - -// val httpDataSource = DefaultHttpDataSource.Factory() -// val hls = HlsMediaSource.Factory(httpDataSource).createMediaSource( -// MediaItem.fromUri( -// Uri.parse(videoUrlCurrent) -// ) -// ) -// val analyticsListener: AnalyticsListener= MyAnalyticsListener() -// val exoPlayer = playerView?.player as ExoPlayer -// exoPlayer.addAnalyticsListener(analyticsListener) -// exoPlayer.setMediaSource(hls) -// exoPlayer.playWhenReady = true -// -// -// exoPlayer.let { -// val parameters = -// TrackSelectionParameters.Builder().setPreferredAudioMimeType("application/id3").build() -// // 更新轨道选择器参数 -// exoPlayer.trackSelector?.parameters = parameters -// Log.i(TAG, "parameters $parameters") -// } -// -// // 获取当前轨道组 -// -// playerView?.player = exoPlayer -// playerView?.player?.prepare() - - -// -// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { -// val codecList = MediaCodecList(MediaCodecList.ALL_CODECS) -// val codecInfos = codecList.codecInfos -// -// for (codecInfo in codecInfos) { -// -// val supportedTypes = codecInfo.supportedTypes -// for (type in supportedTypes) { -// Log.d("supportedTypes", "$type") -//// if (type.equals(androidx.media3.exoplayer.mediacode, ignoreCase = true)) { -//// Log.d("AudioCodecChecker", "Device supports MPEG-L2") -//// return -//// } -// } -// } -// -// Log.d("AudioCodecChecker", "Device does not support MPEG-L2") -// } - - } - } - - @UnstableApi - class MyAnalyticsListener : AnalyticsListener { - override fun onLoadStarted( - eventTime: AnalyticsListener.EventTime, - loadEventInfo: LoadEventInfo, - mediaLoadData: MediaLoadData - ) { - super.onLoadStarted(eventTime, loadEventInfo, mediaLoadData) -// Log.i(TAG, "loadEventInfo.uri ${loadEventInfo.uri} ${mediaLoadData.trackFormat.toString()}") } } diff --git a/app/src/main/java/com/lizongying/mytv/Request.kt b/app/src/main/java/com/lizongying/mytv/Request.kt index 4414296..dc21ff9 100644 --- a/app/src/main/java/com/lizongying/mytv/Request.kt +++ b/app/src/main/java/com/lizongying/mytv/Request.kt @@ -114,39 +114,16 @@ class Request { }) } - fun fetchData(tvModel: TVViewModel) { + fun fetchVideo(tvModel: TVViewModel, cookie: String) { if (::myRunnable.isInitialized) { handler.removeCallbacks(myRunnable) } - tvModel.seq = 0 - val data = ysp?.switch(tvModel) val title = tvModel.title.value + tvModel.seq = 0 + val data = ysp?.switch(tvModel) val request = data?.let { LiveInfoRequest(it) } - var cookie = "guid=1; vplatform=109" - val channels = arrayOf( - "CCTV3 综艺", - "CCTV6 电影", - "CCTV8 电视剧", - "风云剧场", - "第一剧场", - "怀旧剧场", - "世界地理", - "风云音乐", - "兵器科技", - "风云足球", - "高尔夫网球", - "女性时尚", - "央视文化精品", - "央视台球", - "电视指南", - "卫生健康", - ) - if (token != null && tvModel.title.value in channels) { - cookie = - "guid=1; vplatform=109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token" - } request?.let { yspApiService.getLiveInfo(cookie, it) } ?.enqueue(object : Callback { @@ -197,6 +174,51 @@ class Request { }) } + fun fetchData(tvModel: TVViewModel) { + var cookie = "guid=1; vplatform=109" + val channels = arrayOf( + "CCTV3 综艺", + "CCTV6 电影", + "CCTV8 电视剧", + "风云剧场", + "第一剧场", + "怀旧剧场", + "世界地理", + "风云音乐", + "兵器科技", + "风云足球", + "高尔夫网球", + "女性时尚", + "央视文化精品", + "央视台球", + "电视指南", + "卫生健康", + ) + if (tvModel.title.value in channels) { + yspTokenService.getInfo() + .enqueue(object : Callback { + override fun onResponse(call: Call, response: Response) { + if (response.isSuccessful) { + val info = response.body() + token = info?.data?.token + Log.i(TAG, "info success $token") + cookie = + "guid=1; vplatform=109; yspopenid=vu0-8lgGV2LW9QjDeuBFsX8yMnzs37Q3_HZF6XyVDpGR_I; vusession=$token" + fetchVideo(tvModel, cookie) + } else { + Log.e(TAG, "info status error") + } + } + + override fun onFailure(call: Call, t: Throwable) { + Log.e(TAG, "info request error $t") + } + }) + } else { + fetchVideo(tvModel, cookie) + } + } + inner class MyRunnable(private val tvModel: TVViewModel) : Runnable { override fun run() { fetchBtrace(tvModel) diff --git a/app/src/main/java/com/lizongying/mytv/TV.kt b/app/src/main/java/com/lizongying/mytv/TV.kt index ebb1dfe..e9f130f 100644 --- a/app/src/main/java/com/lizongying/mytv/TV.kt +++ b/app/src/main/java/com/lizongying/mytv/TV.kt @@ -25,8 +25,4 @@ data class TV( ", programId='" + programId + '\'' + '}' } - - companion object { - internal const val serialVersionUID = 727566175075960653L - } } \ No newline at end of file