|
@@ -1,6 +1,6 @@
|
|
package com.tencent.liteav.demo.player
|
|
package com.tencent.liteav.demo.player
|
|
|
|
|
|
-import android.graphics.Typeface.BOLD
|
|
|
|
|
|
+import android.content.pm.PackageManager
|
|
import android.graphics.Typeface.DEFAULT_BOLD
|
|
import android.graphics.Typeface.DEFAULT_BOLD
|
|
import android.os.Build
|
|
import android.os.Build
|
|
import android.os.Bundle
|
|
import android.os.Bundle
|
|
@@ -14,14 +14,27 @@ import androidx.appcompat.app.AppCompatActivity
|
|
import androidx.appcompat.content.res.AppCompatResources
|
|
import androidx.appcompat.content.res.AppCompatResources
|
|
import androidx.constraintlayout.widget.ConstraintLayout
|
|
import androidx.constraintlayout.widget.ConstraintLayout
|
|
import com.tencent.liteav.demo.player.ui.MenuItemView
|
|
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 shareFriend: MenuItemView
|
|
private lateinit var shareTimeline: MenuItemView
|
|
private lateinit var shareTimeline: MenuItemView
|
|
private lateinit var backButton: ImageView
|
|
private lateinit var backButton: ImageView
|
|
|
|
|
|
private val shareContext get() = this@PlayerShare
|
|
private val shareContext get() = this@PlayerShare
|
|
|
|
|
|
|
|
+ private lateinit var api: IWXAPI
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
override fun onCreate(savedInstanceState: Bundle?) {
|
|
super.onCreate(savedInstanceState)
|
|
super.onCreate(savedInstanceState)
|
|
setContentView(createView())
|
|
setContentView(createView())
|
|
@@ -30,6 +43,10 @@ class PlayerShare : AppCompatActivity() {
|
|
WindowManager.LayoutParams.MATCH_PARENT,
|
|
WindowManager.LayoutParams.MATCH_PARENT,
|
|
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 {
|
|
private fun createView(): View {
|
|
@@ -54,16 +71,15 @@ class PlayerShare : AppCompatActivity() {
|
|
background =
|
|
background =
|
|
AppCompatResources.getDrawable(shareContext, R.drawable.menu_background)
|
|
AppCompatResources.getDrawable(shareContext, R.drawable.menu_background)
|
|
|
|
|
|
-
|
|
|
|
shareFriend = MenuItemView(shareContext).apply {
|
|
shareFriend = MenuItemView(shareContext).apply {
|
|
setTitle("微信")
|
|
setTitle("微信")
|
|
- setIcon(R.mipmap.item_favorite)
|
|
|
|
|
|
+ setIcon(R.mipmap.share_session)
|
|
id = View.generateViewId()
|
|
id = View.generateViewId()
|
|
}
|
|
}
|
|
|
|
|
|
shareTimeline = MenuItemView(shareContext).apply {
|
|
shareTimeline = MenuItemView(shareContext).apply {
|
|
setTitle("朋友圈")
|
|
setTitle("朋友圈")
|
|
- setIcon(R.mipmap.item_favorited)
|
|
|
|
|
|
+ setIcon(R.mipmap.share_timeline)
|
|
id = View.generateViewId()
|
|
id = View.generateViewId()
|
|
}
|
|
}
|
|
|
|
|
|
@@ -117,6 +133,8 @@ class PlayerShare : AppCompatActivity() {
|
|
rightToLeft = shareTimeline.id
|
|
rightToLeft = shareTimeline.id
|
|
topMargin = shareContext.resources.getDimension(R.dimen.dp37).toInt()
|
|
topMargin = shareContext.resources.getDimension(R.dimen.dp37).toInt()
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ setOnClickListener { shareSession() }
|
|
}
|
|
}
|
|
|
|
|
|
shareTimeline.apply {
|
|
shareTimeline.apply {
|
|
@@ -129,6 +147,8 @@ class PlayerShare : AppCompatActivity() {
|
|
rightToRight = parent.id
|
|
rightToRight = parent.id
|
|
topMargin = shareContext.resources.getDimension(R.dimen.dp37).toInt()
|
|
topMargin = shareContext.resources.getDimension(R.dimen.dp37).toInt()
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ setOnClickListener { shareTimeline() }
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -143,4 +163,47 @@ class PlayerShare : AppCompatActivity() {
|
|
|
|
|
|
return root
|
|
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()
|
|
|
|
+ }
|
|
|
|
+ }
|
|
}
|
|
}
|