前提・実現したいこと
プログラミング初心者です。
こちら↓のサイトを参考にして、音声認識のアプリを開発しようと試みております。
【http://android-java.hatenablog.jp/entry/2018/03/27/115126】
さらに応用で、音声認識開始のボタンを一度押すと
案内「メッセージA」→ 答える → 案内「メッセージB」→ 答える …
(何度か繰り返し終了)
といったように、音声認識を続けて行えるようにしたいと思い、試行錯誤してみたのですが、変わらず一度目の案内に答えたところで終わってしまいます。
上記のように音声認識を続けて行えるようにすることは可能でしょうか?
可能であるとしたらどのような方法が適切でしょうか。
お力添えをお願いいたします。
該当のソースコード
MainActivity
1import android.app.Activity 2import android.content.Intent 3import android.support.v7.app.AppCompatActivity 4import android.os.Bundle 5import android.speech.RecognizerIntent 6import android.speech.SpeechRecognizer 7import android.view.View 8import io.realm.Realm 9import kotlinx.android.synthetic.main.activity_main2.* 10import java.util.* 11 12class MainActivity2 : AppCompatActivity() { 13 14 var nStr : String = "" 15 val nList = ArrayList<Double>() // arraylist to store numbers 16 val oList = ArrayList<Char>() // arraylist to store operations 17 18 //識別番号の指定 19 private val REQUEST_CODE = 12345 20 21 override fun onCreate(savedInstanceState: Bundle?) { 22 super.onCreate(savedInstanceState) 23 setContentView(R.layout.activity_main2) 24 25 Realm.init(this) 26 27 //音声認識 28 button.setOnClickListener(object : View.OnClickListener{ 29 override fun onClick(v: View) { 30 31 //音声認識用のインテントを作成 32 val intent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH) 33 //認識する言語を指定(この場合は日本語) 34 intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.JAPANESE.toString()) 35 //認識する候補数の指定 36 intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS, 10) 37 //音声認識時に表示する案内を設定 38 intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "メッセージA") 39 //音声認識を開始 40 startActivityForResult(intent, REQUEST_CODE) 41 } 42 }) 43 } 44 45 override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { 46 super.onActivityResult(requestCode, resultCode, data) 47 48 if (requestCode == REQUEST_CODE && resultCode == Activity.RESULT_OK) { 49 50 //data から音声認識の結果を取り出す(リスト形式で) 51 val kekka = data!!.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS) 52 53 //認識結果が一つ以上ある場合はテキストビューに結果を表示する 54 if (kekka.size > 0) { 55 //一番最初にある認識結果を表示する 56 formula!!.text = kekka[0] 57 //intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "メッセージB") 58 } else { 59 //何らかの原因で音声認識に失敗した場合はエラーメッセージを表示 60 formula!!.text = "失敗" 61 } 62 } 63 } 64} 65…
試したこと
//一番最初にある認識結果を表示する
のところに
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "メッセージB")
という文章を入れてみましたが結果は変わらず…
あなたの回答
tips
プレビュー