zhaoyadi 2 rokov pred
rodič
commit
35c2e04815
26 zmenil súbory, kde vykonal 89 pridanie a 10 odobranie
  1. 12 0
      kit/src/main/res/layout/superplayer_item_vod.xml
  2. 5 0
      ui/src/main/java/com/tencent/liteav/demo/player/ui/PlayerListAdapter.java
  3. 1 0
      ui/src/main/java/com/tencent/liteav/demo/player/util/ModelProvider.kt
  4. 69 6
      ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerShare.kt
  5. 1 0
      ui/src/main/res/layout/item_menu.xml
  6. BIN
      ui/src/main/res/mipmap-hdpi/icon_pause.png
  7. BIN
      ui/src/main/res/mipmap-hdpi/icon_resume.png
  8. BIN
      ui/src/main/res/mipmap-hdpi/share_session.png
  9. BIN
      ui/src/main/res/mipmap-hdpi/share_timeline.png
  10. BIN
      ui/src/main/res/mipmap-mdpi/icon_pause.png
  11. BIN
      ui/src/main/res/mipmap-mdpi/icon_resume.png
  12. BIN
      ui/src/main/res/mipmap-mdpi/share_session.png
  13. BIN
      ui/src/main/res/mipmap-mdpi/share_timeline.png
  14. BIN
      ui/src/main/res/mipmap-xhdpi/icon_pause.png
  15. BIN
      ui/src/main/res/mipmap-xhdpi/icon_resume.png
  16. BIN
      ui/src/main/res/mipmap-xhdpi/share_session.png
  17. BIN
      ui/src/main/res/mipmap-xhdpi/share_timeline.png
  18. BIN
      ui/src/main/res/mipmap-xxhdpi/icon_pause.png
  19. BIN
      ui/src/main/res/mipmap-xxhdpi/icon_resume.png
  20. BIN
      ui/src/main/res/mipmap-xxhdpi/share_session.png
  21. BIN
      ui/src/main/res/mipmap-xxhdpi/share_timeline.png
  22. BIN
      ui/src/main/res/mipmap-xxxhdpi/icon_pause.png
  23. BIN
      ui/src/main/res/mipmap-xxxhdpi/icon_resume.png
  24. BIN
      ui/src/main/res/mipmap-xxxhdpi/share_session.png
  25. BIN
      ui/src/main/res/mipmap-xxxhdpi/share_timeline.png
  26. 1 4
      ui/src/main/res/values/dimens.xml

+ 12 - 0
kit/src/main/res/layout/superplayer_item_vod.xml

@@ -34,6 +34,17 @@
             app:layout_constraintRight_toRightOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
+        <ImageView
+            android:id="@+id/superplayer_pause_or_resume"
+            android:layout_width="20dp"
+            android:layout_height="20dp"
+            android:src="@mipmap/icon_resume"
+            android:visibility="gone"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
         <TextView
             android:id="@+id/superplayer_free"
             android:layout_width="wrap_content"
@@ -46,6 +57,7 @@
             android:textColor="#ffffffff"
             android:textSize="13sp"
             android:textStyle="bold|italic"
+            android:visibility="gone"
             app:layout_constraintBottom_toBottomOf="parent"
             app:layout_constraintRight_toRightOf="parent" />
     </androidx.constraintlayout.widget.ConstraintLayout>

+ 5 - 0
ui/src/main/java/com/tencent/liteav/demo/player/ui/PlayerListAdapter.java

@@ -77,6 +77,9 @@ public class PlayerListAdapter extends RecyclerView.Adapter<PlayerListAdapter.Vi
         holder.lock.setVisibility(videoModel.isLock ? View.VISIBLE : View.GONE);
         holder.free.setVisibility(videoModel.isFree ? View.VISIBLE : View.GONE);
 
+        holder.status.setVisibility(!videoModel.isLock ? View.VISIBLE : View.GONE);
+        holder.status.setImageResource(clickMark.get(position) ? R.mipmap.icon_pause : R.mipmap.icon_resume);
+
         holder.title.setOnClickListener(v -> {
             if (mOnItemClickListener != null) {
                 mOnItemClickListener.onItemClick(videoModel, position);
@@ -108,6 +111,7 @@ public class PlayerListAdapter extends RecyclerView.Adapter<PlayerListAdapter.Vi
         private TextView title;
         private RoundImageView thumb;
         private ImageView lock;
+        private ImageView status;
         private TextView free;
 
         public ViewHolder(final View itemView) {
@@ -116,6 +120,7 @@ public class PlayerListAdapter extends RecyclerView.Adapter<PlayerListAdapter.Vi
             title = (TextView) itemView.findViewById(R.id.superplayer_tv);
             free = (TextView) itemView.findViewById(R.id.superplayer_free);
             lock = (ImageView) itemView.findViewById(R.id.superplayer_lock);
+            status = (ImageView) itemView.findViewById(R.id.superplayer_pause_or_resume);
         }
     }
 

+ 1 - 0
ui/src/main/java/com/tencent/liteav/demo/player/util/ModelProvider.kt

@@ -11,6 +11,7 @@ object ModelProvider {
     }
 
     val courseId: String get() = course.id
+    val cccccc:Course get() = course
 
     val list: List<SuperPlayerModel>
         get() {

+ 69 - 6
ui/src/main/kotlin/com/tencent/liteav/demo/player/PlayerShare.kt

@@ -1,6 +1,6 @@
 package com.tencent.liteav.demo.player
 
-import android.graphics.Typeface.BOLD
+import android.content.pm.PackageManager
 import android.graphics.Typeface.DEFAULT_BOLD
 import android.os.Build
 import android.os.Bundle
@@ -14,14 +14,27 @@ import androidx.appcompat.app.AppCompatActivity
 import androidx.appcompat.content.res.AppCompatResources
 import androidx.constraintlayout.widget.ConstraintLayout
 import com.tencent.liteav.demo.player.ui.MenuItemView
-
-class PlayerShare : AppCompatActivity() {
+import com.tencent.liteav.demo.player.util.ModelProvider
+import com.tencent.mm.opensdk.modelmsg.SendMessageToWX
+import com.tencent.mm.opensdk.modelmsg.WXMediaMessage
+import com.tencent.mm.opensdk.modelmsg.WXWebpageObject
+import com.tencent.mm.opensdk.openapi.IWXAPI
+import com.tencent.mm.opensdk.openapi.WXAPIFactory
+import kotlinx.coroutines.*
+import okhttp3.OkHttpClient
+import okhttp3.Request
+import java.io.IOException
+import java.util.*
+
+
+class PlayerShare : AppCompatActivity(), CoroutineScope by MainScope() {
     private lateinit var shareFriend: MenuItemView
     private lateinit var shareTimeline: MenuItemView
     private lateinit var backButton: ImageView
 
     private val shareContext get() = this@PlayerShare
 
+    private lateinit var api: IWXAPI
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(createView())
@@ -30,6 +43,10 @@ class PlayerShare : AppCompatActivity() {
             WindowManager.LayoutParams.MATCH_PARENT,
             WindowManager.LayoutParams.MATCH_PARENT,
         )
+
+        val appInfo = packageManager.getApplicationInfo(packageName, PackageManager.GET_META_DATA)
+        val wechatAppId = appInfo.metaData.getString("weChatAppId")
+        api = WXAPIFactory.createWXAPI(applicationContext, wechatAppId)
     }
 
     private fun createView(): View {
@@ -54,16 +71,15 @@ class PlayerShare : AppCompatActivity() {
                 background =
                     AppCompatResources.getDrawable(shareContext, R.drawable.menu_background)
 
-
                 shareFriend = MenuItemView(shareContext).apply {
                     setTitle("微信")
-                    setIcon(R.mipmap.item_favorite)
+                    setIcon(R.mipmap.share_session)
                     id = View.generateViewId()
                 }
 
                 shareTimeline = MenuItemView(shareContext).apply {
                     setTitle("朋友圈")
-                    setIcon(R.mipmap.item_favorited)
+                    setIcon(R.mipmap.share_timeline)
                     id = View.generateViewId()
                 }
 
@@ -117,6 +133,8 @@ class PlayerShare : AppCompatActivity() {
                         rightToLeft = shareTimeline.id
                         topMargin = shareContext.resources.getDimension(R.dimen.dp37).toInt()
                     }
+
+                    setOnClickListener { shareSession() }
                 }
 
                 shareTimeline.apply {
@@ -129,6 +147,8 @@ class PlayerShare : AppCompatActivity() {
                         rightToRight = parent.id
                         topMargin = shareContext.resources.getDimension(R.dimen.dp37).toInt()
                     }
+
+                    setOnClickListener { shareTimeline() }
                 }
 
 
@@ -143,4 +163,47 @@ class PlayerShare : AppCompatActivity() {
 
         return root
     }
+
+    private fun shareSession() {
+        internalShare(SendMessageToWX.Req.WXSceneSession)
+    }
+
+    private fun shareTimeline() {
+        internalShare(SendMessageToWX.Req.WXSceneTimeline)
+    }
+
+    private fun internalShare(scene:Int){
+        val webpage = WXWebpageObject()
+        webpage.webpageUrl = ModelProvider.cccccc.shareUrl
+
+        val msg = WXMediaMessage(webpage)
+        msg.title = ModelProvider.cccccc.name
+        msg.description = ModelProvider.cccccc.description
+
+        launch {
+            msg.thumbData = readByteArray(ModelProvider.cccccc.imgCover)
+            val req = SendMessageToWX.Req()
+            req.transaction = UUID.randomUUID().toString().replace("-", "")
+            req.message = msg
+            req.scene = scene
+
+            api.sendReq(req)
+        }
+    }
+
+    private suspend fun readByteArray(url: String): ByteArray = withContext(Dispatchers.IO) {
+        val okHttpClient = OkHttpClient.Builder().build()
+        val request: Request = Request.Builder().url(url).get().build()
+        try {
+            val response = okHttpClient.newCall(request).execute()
+            val responseBody = response.body
+            if (response.isSuccessful && responseBody != null) {
+                responseBody.bytes()
+            } else {
+                byteArrayOf()
+            }
+        } catch (e: IOException) {
+            byteArrayOf()
+        }
+    }
 }

+ 1 - 0
ui/src/main/res/layout/item_menu.xml

@@ -15,6 +15,7 @@
         android:id="@+id/item_menu_text"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginTop="7dp"
         android:layout_gravity="center_horizontal"
         android:height="18dp"
         android:textColor="#ff666666"

BIN
ui/src/main/res/mipmap-hdpi/icon_pause.png


BIN
ui/src/main/res/mipmap-hdpi/icon_resume.png


BIN
ui/src/main/res/mipmap-hdpi/share_session.png


BIN
ui/src/main/res/mipmap-hdpi/share_timeline.png


BIN
ui/src/main/res/mipmap-mdpi/icon_pause.png


BIN
ui/src/main/res/mipmap-mdpi/icon_resume.png


BIN
ui/src/main/res/mipmap-mdpi/share_session.png


BIN
ui/src/main/res/mipmap-mdpi/share_timeline.png


BIN
ui/src/main/res/mipmap-xhdpi/icon_pause.png


BIN
ui/src/main/res/mipmap-xhdpi/icon_resume.png


BIN
ui/src/main/res/mipmap-xhdpi/share_session.png


BIN
ui/src/main/res/mipmap-xhdpi/share_timeline.png


BIN
ui/src/main/res/mipmap-xxhdpi/icon_pause.png


BIN
ui/src/main/res/mipmap-xxhdpi/icon_resume.png


BIN
ui/src/main/res/mipmap-xxhdpi/share_session.png


BIN
ui/src/main/res/mipmap-xxhdpi/share_timeline.png


BIN
ui/src/main/res/mipmap-xxxhdpi/icon_pause.png


BIN
ui/src/main/res/mipmap-xxxhdpi/icon_resume.png


BIN
ui/src/main/res/mipmap-xxxhdpi/share_session.png


BIN
ui/src/main/res/mipmap-xxxhdpi/share_timeline.png


+ 1 - 4
ui/src/main/res/values/dimens.xml

@@ -1,19 +1,16 @@
 <?xml version="1.0" encoding="utf-8"?>
 <resources>
     <dimen name="superplayer_void_listview_width">189dp</dimen>
-    <!-- MEDIA CONTROLLER -->
     <dimen name="superplayer_media_controller_view_height">48dip</dimen>
-
     <dimen name="superplayer_vod_list_decoration_margin">6dp</dimen>
-
     <dimen name="verify_button_width">41dp</dimen>
     <dimen name="verify_button_height">43dp</dimen>
     <dimen name="verify_button_bg_height">39dp</dimen>
-
     <dimen name="layour_share_width">268dp</dimen>
     <dimen name="menu_back_width">27dp</dimen>
     <dimen name="menu_back_height">80dp</dimen>
 
+    <dimen name="dp48">48dp</dimen>
     <dimen name="dp40">40dp</dimen>
     <dimen name="dp37">37dp</dimen>
     <dimen name="dp20">20dp</dimen>