Browse Source

1.进入游戏添加语音播报功能

王鹏鹏 2 years ago
parent
commit
c746172b3c

+ 7 - 0
baselib/src/main/java/com/yingyangfly/baselib/utils/JumpUtil.kt

@@ -17,6 +17,13 @@ object JumpUtil {
             .navigation()
     }
 
+    fun jumpActivityWithUrlAndDesn(path: String, url: String, desn: String) {
+        ARouter.getInstance().build(path)
+            .withString("url", url)
+            .withString("desn", desn)
+            .navigation()
+    }
+
     fun jumpActivityWithString(path: String, string: Map.Entry<String, String>) {
         ARouter.getInstance().build(path)
             .withString(string.key, string.value)

+ 25 - 5
webview/src/main/java/com/yingyangfly/webview/BridgeWebActivity.kt

@@ -54,9 +54,11 @@ class BridgeWebActivity : BaseActivity<ActivityBridgeWebBinding>() {
 
     private lateinit var webSettings: WebSettings
     var url: String = ""
+    var desn: String = ""
 
     override fun onCreate(savedInstanceState: Bundle?) {
         url = intent.getStringExtra("url") ?: ""
+        desn = intent.getStringExtra("desn") ?: ""
         super.onCreate(savedInstanceState)
     }
 
@@ -130,9 +132,13 @@ class BridgeWebActivity : BaseActivity<ActivityBridgeWebBinding>() {
                 url.let {
                     view?.loadUrl(it)
                 }
-                speak()
                 return true
             }
+
+            override fun onPageFinished(view: WebView?, url: String?) {
+                super.onPageFinished(view, url)
+//                speak()
+            }
         }
         if (url.isNullOrEmpty().not()) {
             binding.webView.loadUrl(url)
@@ -195,6 +201,16 @@ class BridgeWebActivity : BaseActivity<ActivityBridgeWebBinding>() {
         if (result != null) {
             checkResult(result, "setApiKey")
         }
+        // 5. 以下setParam 参数选填。不填写则默认值生效
+        // 设置在线发声音人: 0 普通女声(默认) 1 普通男声  3 情感男声<度逍遥> 4 情感儿童声<度丫丫>
+        mSpeechSynthesizer?.setParam(SpeechSynthesizer.PARAM_SPEAKER, "4")
+        // 设置合成的音量,0-15 ,默认 5
+        mSpeechSynthesizer?.setParam(SpeechSynthesizer.PARAM_VOLUME, "5")
+        // 设置合成的语速,0-15 ,默认 5
+        mSpeechSynthesizer?.setParam(SpeechSynthesizer.PARAM_SPEED, "5")
+        // 设置合成的语调,0-15 ,默认 5
+        mSpeechSynthesizer?.setParam(SpeechSynthesizer.PARAM_PITCH, "5")
+
         // x. 额外 : 自动so文件是否复制正确及上面设置的参数
         val params: Map<String, String> = HashMap()
         // 检测参数,通过一次后可以去除,出问题再打开debug
@@ -230,8 +246,10 @@ class BridgeWebActivity : BaseActivity<ActivityBridgeWebBinding>() {
         }
     }
 
+    /**
+     * 播放语音
+     */
     private fun speak() {
-        Log.e("wpp", "------------------------speak")
         /* 以下参数每次合成时都可以修改
          *  mSpeechSynthesizer.setParam(SpeechSynthesizer.PARAM_SPEAKER, "0");
          *  设置在线发声音人: 0 普通女声(默认) 1 普通男声  3 情感男声<度逍遥> 4 情感儿童声<度丫丫>
@@ -244,8 +262,10 @@ class BridgeWebActivity : BaseActivity<ActivityBridgeWebBinding>() {
             print("[ERROR], 初始化失败")
             return
         }
-        val result: Int = mSpeechSynthesizer!!.speak("你好,我是小度语音")
-        Log.e("wpp", "合成并播放 按钮已经点击")
-        checkResult(result, "speak")
+        if (desn.isNotEmpty()) {
+            val result: Int = mSpeechSynthesizer!!.speak(desn)
+            Log.e("wpp", "合成并播放 按钮已经点击")
+            checkResult(result, "speak")
+        }
     }
 }

+ 3 - 2
workbenches/src/main/java/com/yingyang/workbenches/WorkbenchesActivity.kt

@@ -43,9 +43,10 @@ class WorkbenchesActivity : BaseMVVMActivity<ActivityWorkbenchesBinding, Workben
             rvGame.adapter = gameAdapter
         }
         gameAdapter.onGameImageClickListener = { bean, position ->
-            JumpUtil.jumpActivityWithUrl(
+            JumpUtil.jumpActivityWithUrlAndDesn(
                 RouterUrlCommon.WEB_VIEW_INTERACTION_JS,
-                bean.gameUrl
+                bean.gameUrl,
+                bean.desn
             )
         }
     }

+ 9 - 1
workbenches/src/main/java/com/yingyang/workbenches/leisurebrain/LeisureBrainActivity.kt

@@ -13,19 +13,27 @@ import com.yingyangfly.baselib.router.RouterUrlCommon
 class LeisureBrainActivity :
     BaseMVVMActivity<ActivityLeisureBrainBinding, LeisureBrainViewModel>() {
 
+    private var url = ""
+
     override fun initViews() {
 
     }
 
     override fun initListener() {
+        binding.btnPlay.setOnClickListener {
+            if (url.isNotEmpty()) {
 
+            }
+        }
     }
 
     override fun initData() {
         viewModel.getSelectAllVideo(fail = {
             it.toast()
         }, success = {
-
+            if (it.A.isNullOrEmpty().not()) {
+                url = it.A[0].videoUrl
+            }
         })
     }
 

+ 12 - 0
workbenches/src/main/res/layout/activity_leisure_brain.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     tools:ignore="MissingDefaultResource,ResourceName">
 
@@ -11,6 +12,17 @@
         android:layout_width="match_parent"
         android:layout_height="match_parent">
 
+        <Button
+            android:id="@+id/btnPlay"
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/divider_80px"
+            android:text="播放"
+            android:textColor="@android:color/black"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintLeft_toLeftOf="parent"
+            app:layout_constraintRight_toRightOf="parent"
+            app:layout_constraintTop_toTopOf="parent" />
+
     </androidx.constraintlayout.widget.ConstraintLayout>
 
 </layout>