Commit 2a27202f authored by 马乐's avatar 马乐

1.增加TTS

parent 448728d5
package com.intergration.test
import android.Manifest
import android.content.Context
import android.content.pm.PackageManager
import android.media.AudioManager
import android.media.CamcorderProfile
import android.os.Bundle
import android.os.Environment
import android.speech.tts.TextToSpeech
import android.util.Size
import android.widget.Toast
import androidx.activity.result.contract.ActivityResultContracts
......@@ -15,6 +18,7 @@ import com.arcsoft.visdrive.sdk.ArcErrorInfo
import com.arcsoft.visdrive.sdk.ArcVisDriveEngine
import com.arcsoft.visdrive.sdk.constant.common.ArcModType
import com.arcsoft.visdrive.sdk.model.common.ArcActiveEnvParam
import com.blankj.utilcode.util.JsonUtils
import com.blankj.utilcode.util.LogUtils
import com.blankj.utilcode.util.TimeUtils
import com.intergration.test.databinding.ActivityMainBinding
......@@ -29,6 +33,7 @@ import com.intergration.test.dms.setDmsDistractScope
import com.intergration.test.dms.setDmsDrivingStatus
import com.intergration.test.dms.startDms
import com.intergration.test.utils.DOT_PREFACE_DURATION
import com.intergration.test.utils.TTS_ENGINE
import com.intergration.test.utils.VIDEO_FOLDER
import com.mediatek.smartplatform.PreviewSource
import com.mediatek.smartplatform.RecordConfiguration
......@@ -42,9 +47,10 @@ import kotlinx.coroutines.Job
import kotlinx.coroutines.cancel
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import java.util.Locale
import java.util.concurrent.CancellationException
class MainActivity : AppCompatActivity(),VideoCallback{
class MainActivity : AppCompatActivity(),TextToSpeech.OnInitListener,VideoCallback{
private var dmsCoroutineScope: DmsCoroutineScope? =null
......@@ -69,6 +75,15 @@ class MainActivity : AppCompatActivity(),VideoCallback{
}
}
private val tts by lazy {
val am = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val sb2value =am.getStreamMaxVolume(AudioManager.STREAM_MUSIC)
am.setStreamVolume(AudioManager.STREAM_MUSIC, sb2value, 0)
val bundle = Bundle()
bundle.putFloat(TextToSpeech.Engine.KEY_PARAM_VOLUME,1.0f)
TextToSpeech(this,this, TTS_ENGINE)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
......@@ -117,6 +132,7 @@ class MainActivity : AppCompatActivity(),VideoCallback{
coroutineContext[DmsCoroutineContext]?.engine?.let {engine->
coroutineContext[DmsCoroutineContext]?.spmCameraDevice?.startDms(engine)?.collect{result->
binding.detectResult.text = result
tts.speak(result, TextToSpeech.QUEUE_ADD, null,null)
launch(Dispatchers.IO){
coroutineContext[DmsCoroutineContext]?.spmCameraDevice?.lockRecordingVideo(
DOT_PREFACE_DURATION,"",RecordSource.GENERAL_CAMERA)
......@@ -177,6 +193,31 @@ class MainActivity : AppCompatActivity(),VideoCallback{
}
override fun onInit(status: Int) {
if (status == TextToSpeech.SUCCESS) {
when (tts.setLanguage(Locale.CHINA)) {
TextToSpeech.LANG_MISSING_DATA, TextToSpeech.LANG_NOT_SUPPORTED -> {
LogUtils.file("TTS暂时不支持这种语音朗读")
Toast.makeText(this, "TTS暂时不支持这种语音朗读", Toast.LENGTH_SHORT).show()
}
else -> {
LogUtils.d("tts初始化成功!")
tts.setPitch(1.0f)
tts.setSpeechRate(1.0f)
}
}
} else {
LogUtils.file("TTS初始化失败")
Toast.makeText(this, "TTS初始化失败", Toast.LENGTH_SHORT).show()
}
}
override fun onDestroy() {
tts.stop()
tts.shutdown()
super.onDestroy()
}
private fun allPermissionsGranted() = REQUIRED_PERMISSIONS.all {
ContextCompat.checkSelfPermission(
baseContext, it) == PackageManager.PERMISSION_GRANTED
......
......@@ -12,6 +12,8 @@ const val DMS_PIC_HEIGHT = 720
const val DOT_PREFACE_DURATION = 5
const val TTS_ENGINE = "com.iflytek.speechcloud"
const val VIDEO_FOLDER = "sdcard/waytous/alarm/"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment