Advertisement
Guest User

Untitled

a guest
Dec 9th, 2019
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.92 KB | None | 0 0
  1. Do pobrania próbki głosowej zastosowane zostało API Media Recorder
  2. fun setMedia(){
  3. mediaRecorder = MediaRecorder()
  4. output = Environment.getExternalStorageDirectory().absolutePath + "/recording$recordNumber.mp3"
  5. mediaRecorder?.setAudioSource(MediaRecorder.AudioSource.MIC)
  6. mediaRecorder?.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
  7. mediaRecorder?.setAudioEncoder(MediaRecorder.AudioEncoder.AAC)
  8. mediaRecorder?.setAudioSamplingRate(44100)
  9. mediaRecorder?.setAudioEncodingBitRate(320000)
  10. mediaRecorder?.setAudioChannels(2)
  11. mediaRecorder?.setOutputFile(output)
  12. AndroidAudioConverter.load(context, object : ILoadCallback {
  13. override fun onSuccess() { // Great!
  14. }
  15.  
  16. override fun onFailure(error: Exception) { // FFmpeg is not supported by device
  17. }
  18. })
  19. }
  20. fun startRecording() {
  21. try {
  22. mediaRecorder?.prepare()
  23. mediaRecorder?.start()
  24. state = true
  25. } catch (e: IllegalStateException) {
  26. e.printStackTrace()
  27. } catch (e: IOException) {
  28. e.printStackTrace()
  29. }
  30. }
  31. fun stopRecording() {
  32. if(state){
  33. mediaRecorder?.stop()
  34. mediaRecorder?.release()
  35. state = false
  36. }
  37. var file=File(Environment.getExternalStorageDirectory().absolutePath + "/recording$recordNumber.mp3")
  38. val callback: IConvertCallback = object : IConvertCallback {
  39. override fun onSuccess(convertedFile: File?) { // So fast? Love it!
  40. file=convertedFile!!
  41. }
  42.  
  43. override fun onFailure(error: java.lang.Exception) { // Oops! Something went wrong
  44. }
  45. }
  46. AndroidAudioConverter.with(context) // Your current audio file
  47. .setFile(file) // Your desired audio format
  48. .setFormat(AudioFormat.WAV) // An callback to know when conversion is finished
  49. .setCallback(callback) // Start conversion
  50. .convert()
  51. file=File(Environment.getExternalStorageDirectory().absolutePath + "/recording$recordNumber.wav")
  52. encoded= file.readBytes()
  53. Log.d("jooooooo", file.toString())
  54. Log.d("jooooooo", encoded.contentToString())
  55. var jo=java.util.Base64.getEncoder().encodeToString(encoded)
  56. Log.d("jooooooo", jo)
  57. jsonToSend.put("number",recordNumber)
  58. jsonToSend.put("audio", jo)
  59.  
  60. Do zapisywania i autoryzacji użytkowników Firebase
  61. private fun register(){
  62. val username=username_register.text.toString()
  63. val email=email_register.text.toString()
  64. val password=password_register.text.toString()
  65. if(email.isEmpty() || password.isEmpty()){
  66. toast( "Pola nie mogą być puste")
  67. return
  68. }
  69. FirebaseAuth.getInstance().createUserWithEmailAndPassword(email,password)
  70. .addOnCompleteListener {
  71. if(!it.isSuccessful) return@addOnCompleteListener
  72. else{
  73. toast("Utworzono nowego użytkownika")
  74. }
  75. }
  76. .addOnFailureListener {
  77. toast("Nie udało się utworzyć użytkownika: $it")
  78. }
  79.  
  80. val ref= FirebaseDatabase.getInstance().getReference("/users")
  81. val uid=ref.push().key
  82. val user= User(username, email, wordOne, wordTwo)
  83. if (uid != null) {
  84. ref.child(uid).setValue(user)
  85. }
  86. Po poprawnym logowaniu w firebase użytkownikowi wyświetlają się przyciski do weryfikacji głosowej
  87.  
  88. TU NIE WIEM COŚ WYBIERZ KTÓRE TE SIGN IN TO TYLKO W SUMIE TEN POSTLISTENER JEST WAŻNY ŻE TAK TO DZIAŁA W FIREBASE
  89.  
  90. private fun signIn() {
  91. var ref = FirebaseDatabase.getInstance().reference.child("users")
  92. email = email_login.text.toString()
  93. val password = password_login.text.toString()
  94. if (email.isEmpty() || password.isEmpty()) {
  95. toast( "Pola nie mogą być puste")
  96.  
  97. }
  98. val postListener = object : ValueEventListener {
  99. override fun onDataChange(dataSnapshot: DataSnapshot) {
  100. Log.d("jooo", dataSnapshot.value.toString())
  101. getEmails(dataSnapshot.value as Map<String, Any>)
  102. }
  103.  
  104. override fun onCancelled(databaseError: DatabaseError) {
  105. Log.w("Main", "loadPost:onCancelled", databaseError.toException()!!)
  106. }
  107. }
  108. ref.addValueEventListener(postListener)
  109. toast("Czekam na połączenie z serwerem")
  110. Log.d("Main", "ref=$ref")
  111. //verification.sendPostRequest()
  112. }
  113.  
  114. TO JEST GIT SUPER FUNKCJA KONIECZNIE DAJ
  115.  
  116. private fun getEmails(map: Map<String, Any>) {
  117. val password = password_login.text.toString()
  118. val auth = FirebaseAuth.getInstance()
  119. Log.d("jooo", "idzie mail")
  120. Log.d("joooo", email)
  121. for (entry in map.entries) {
  122. val singleUser = entry.value as Map<*, *>
  123. Log.d("jooo", singleUser["email"] as String)
  124. if ((singleUser["email"] as String) == email) {
  125. Log.d("jooo", "znalazło")
  126. uid=entry.key
  127. wordOne=singleUser["wordOne"] as String
  128. wordTwo=singleUser["wordTwo"] as String
  129. auth.signInWithEmailAndPassword(email, password)
  130. .addOnCompleteListener(this) { task ->
  131. if (task.isSuccessful) {
  132. toast("Pomyślnie zalogowano, należy nagrać słowa")
  133. button_record_word_one.visibility= View.VISIBLE
  134. button_record_word_two.visibility=View.VISIBLE
  135. }
  136. }
  137. .addOnFailureListener() {
  138. toast("Niepoprawny email lub hasło")
  139. }
  140. }
  141. }
  142. }
  143.  
  144. NO I TO NIE DZIAŁA ALE CHUJ NIECH BEDZIE XD
  145.  
  146. button_record_word_one.setOnTouchListener { v, event ->
  147. when (event?.action) {
  148. MotionEvent.ACTION_DOWN -> verification.startRecording()
  149. MotionEvent.ACTION_UP -> {
  150. val audio=verification.stopRecordingPredict()
  151. val processor =DataProcessor()
  152. val samples = processor.processData(audio)
  153. val prediction = Prediction()
  154. prediction.fetchInterpreter(this)
  155. val bestResult = prediction.predict(samples)
  156.  
  157. val label = Labels.values()[bestResult].name
  158. Log.d("jooo", label)
  159. toast("Znalezione słowo: $label")
  160. if(label==wordOne){
  161. toast("Poprawnie zidentyfiokwano pierwsze słowo")
  162. }
  163. }
  164. }
  165. v?.onTouchEvent(event) ?: true
  166. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement