fork download
  1. package com.example.speechtotext
  2.  
  3. import android.app.Activity
  4. import android.content.pm.PackageManager
  5. import android.support.v7.app.AppCompatActivity
  6. import android.os.Bundle
  7. import android.speech.RecognizerIntent
  8. import android.support.v4.app.ActivityCompat
  9. import android.util.Log
  10. import android.widget.Button
  11. import java.util.*
  12. import android.content.Intent
  13. import android.widget.Toast
  14.  
  15.  
  16. class MainActivity : AppCompatActivity() {
  17.  
  18. // 錄製聲音權限
  19. private val userMicrophoneAgreeCode = 1
  20.  
  21. // 語音辨識意圖
  22. private lateinit var userSpeechRecognizerIntent: Intent
  23.  
  24. override fun onCreate(savedInstanceState: Bundle?) {
  25. super.onCreate(savedInstanceState)
  26. setContentView(R.layout.activity_main)
  27.  
  28. // 進入 checkPermission()
  29. checkPermission()
  30.  
  31. // 麥克風物件準備
  32. userSpeechRecognizerIntent = Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH)
  33. userSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM)
  34. userSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault())
  35. userSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Say something!!!!")
  36.  
  37. // 開啟麥克風按鈕
  38. findViewById<Button>(R.id.ClickButton).setOnClickListener{
  39. // 開始收音 => 會持續進入 onActivityResult
  40. startActivityForResult(userSpeechRecognizerIntent,100)
  41. }
  42. }
  43.  
  44. private fun checkPermission(){
  45.  
  46. // 目前使用者麥克風權限
  47. val currentMicrophonePermission = ActivityCompat.checkSelfPermission(this, android.Manifest.permission.RECORD_AUDIO)
  48.  
  49. // 檢查權限 => 要求權限後進入 onRequestPermissionsResult
  50. if(currentMicrophonePermission != PackageManager.PERMISSION_GRANTED)
  51. ActivityCompat.requestPermissions(this, arrayOf(android.Manifest.permission.RECORD_AUDIO), userMicrophoneAgreeCode)
  52.  
  53. // 回到 onCreate
  54. return
  55. }
  56.  
  57. override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) {
  58. when (requestCode) {
  59. userMicrophoneAgreeCode -> {
  60. if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
  61. Log.i("Message", "選擇開啟麥克風權限!!!")
  62.  
  63. // 回到 checkPermission
  64. return
  65. } else {
  66. Log.i("Message", "選擇不開啟麥克風權限!!!")
  67. finish()
  68. }
  69. }
  70. }
  71. }
  72.  
  73. override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
  74. super.onActivityResult(requestCode, resultCode, data)
  75. when(requestCode){
  76. 100 -> {
  77. if(resultCode==Activity.RESULT_OK && data!=null){
  78. val textResult = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS)[0]
  79. Toast.makeText(this,textResult,Toast.LENGTH_LONG).show()
  80. }
  81. }
  82. }
  83. }
  84. }
  85.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
Main.java:1: error: ';' expected
package com.example.speechtotext
                                ^
Main.java:3: error: ';' expected
import android.app.Activity
                           ^
Main.java:4: error: ';' expected
import android.content.pm.PackageManager
                                        ^
Main.java:5: error: ';' expected
import android.support.v7.app.AppCompatActivity
                                               ^
Main.java:6: error: ';' expected
import android.os.Bundle
                        ^
Main.java:7: error: ';' expected
import android.speech.RecognizerIntent
                                      ^
Main.java:8: error: ';' expected
import android.support.v4.app.ActivityCompat
                                            ^
Main.java:9: error: ';' expected
import android.util.Log
                       ^
Main.java:10: error: ';' expected
import android.widget.Button
                            ^
Main.java:11: error: ';' expected
import java.util.*
                  ^
Main.java:12: error: ';' expected
import android.content.Intent
                             ^
Main.java:13: error: ';' expected
import android.widget.Toast
                           ^
Main.java:16: error: '{' expected
class MainActivity : AppCompatActivity() {
                  ^
Main.java:19: error: ';' expected
    private val userMicrophoneAgreeCode = 1
                                           ^
Main.java:22: error: ';' expected
    private lateinit var userSpeechRecognizerIntent: Intent
                        ^
Main.java:22: error: <identifier> expected
    private lateinit var userSpeechRecognizerIntent: Intent
                                                   ^
Main.java:24: error: ';' expected
    override fun onCreate(savedInstanceState: Bundle?) {
            ^
Main.java:24: error: <identifier> expected
    override fun onCreate(savedInstanceState: Bundle?) {
                                            ^
Main.java:24: error: ';' expected
    override fun onCreate(savedInstanceState: Bundle?) {
                                             ^
Main.java:24: error: illegal start of type
    override fun onCreate(savedInstanceState: Bundle?) {
                                                    ^
Main.java:24: error: <identifier> expected
    override fun onCreate(savedInstanceState: Bundle?) {
                                                     ^
Main.java:24: error: ';' expected
    override fun onCreate(savedInstanceState: Bundle?) {
                                                      ^
Main.java:25: error: illegal start of type
        super.onCreate(savedInstanceState)
        ^
Main.java:25: error: <identifier> expected
        super.onCreate(savedInstanceState)
             ^
Main.java:25: error: ';' expected
        super.onCreate(savedInstanceState)
              ^
Main.java:25: error: illegal start of type
        super.onCreate(savedInstanceState)
                      ^
Main.java:25: error: ';' expected
        super.onCreate(savedInstanceState)
                                         ^
Main.java:26: error: invalid method declaration; return type required
        setContentView(R.layout.activity_main)
        ^
Main.java:26: error: <identifier> expected
        setContentView(R.layout.activity_main)
                                             ^
Main.java:26: error: ';' expected
        setContentView(R.layout.activity_main)
                                              ^
Main.java:38: error: illegal start of type
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                            ^
Main.java:38: error: '(' expected
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                             ^
Main.java:38: error: illegal start of type
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                              ^
Main.java:38: error: ';' expected
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                                 ^
Main.java:38: error: <identifier> expected
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                                             ^
Main.java:38: error: illegal start of type
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                                              ^
Main.java:38: error: ';' expected
        findViewById<Button>(R.id.ClickButton).setOnClickListener{
                                                                 ^
Main.java:40: error: ';' expected
            startActivityForResult(userSpeechRecognizerIntent,100)
                                                                  ^
Main.java:44: error: class, interface, or enum expected
    private fun checkPermission(){
            ^
39 errors
stdout
Standard output is empty