import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.media.MediaPlayer
import android.media.MediaRecorder
import android.os.Environment
import android.view.View
import android.widget.Toast
import java.io.IOException
import android.widget.ImageButton
class record : AppCompatActivity() {
var buttonStart: ImageButton? = null
var buttonStop: ImageButton? = null
var buttonPlayLastRecordAudio: ImageButton? = null
var buttonStopPlayingRecording: ImageButton? = null
var AudioSavePathInDevice = "Blesson"
var mediaRecorder: MediaRecorder? = null
var mediaPlayer: MediaPlayer? = null
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_record)
buttonStart = findViewById(R.id.record) as ImageButton
buttonStop = findViewById(R.id.stop) as ImageButton
buttonPlayLastRecordAudio = findViewById(R.id.play) as ImageButton
buttonStopPlayingRecording= findViewById(R.id.playstop) as ImageButton
buttonStop!!.isEnabled = false
buttonPlayLastRecordAudio!!.isEnabled = false
buttonStart!!.setOnClickListener {
AudioSavePathInDevice = Environment.getExternalStorageDirectory().absolutePath + "/" +"Medpro.mp3"
MediaRecorderReady()
try {
mediaRecorder!!.prepare()
mediaRecorder!!.start()
} catch (e: IllegalStateException) {
Toast.makeText(this, "Recording roblem started",
Toast.LENGTH_LONG).show()
}
buttonStart!!.isEnabled = false
buttonStart!!.visibility = View.INVISIBLE
buttonStop!!.visibility = View.VISIBLE
buttonStop!!.isEnabled = true
Toast.makeText(this, "Recording started",
Toast.LENGTH_LONG).show()
}
buttonStop!!.setOnClickListener {
mediaRecorder!!.stop()
buttonStop!!.isEnabled = false
buttonPlayLastRecordAudio!!.isEnabled = true
// buttonStart!!.isEnabled = true
buttonStopPlayingRecording!!.isEnabled = false
Toast.makeText(this, "Recording Completed",
Toast.LENGTH_LONG).show()
buttonStop!!.visibility = View.INVISIBLE
buttonPlayLastRecordAudio!!.visibility = View.VISIBLE
}
buttonPlayLastRecordAudio!!.setOnClickListener {
buttonStop!!.isEnabled = false
buttonStart!!.isEnabled = false
buttonPlayLastRecordAudio!!.visibility=View.INVISIBLE
buttonStopPlayingRecording!!.isEnabled = true
buttonStopPlayingRecording!!.visibility=View.VISIBLE
mediaPlayer = MediaPlayer()
try {
mediaPlayer!!.setDataSource(AudioSavePathInDevice)
mediaPlayer!!.prepare()
} catch (e: IOException) {
Toast.makeText(this, "Recoring not found",
Toast.LENGTH_LONG).show()
}
mediaPlayer!!.start()
Toast.makeText(this, "Recording Playing",
Toast.LENGTH_LONG).show()
}
buttonStopPlayingRecording!!.setOnClickListener {
buttonStopPlayingRecording!!.isEnabled = false
buttonPlayLastRecordAudio!!.isEnabled = true
if (mediaPlayer != null) {
mediaPlayer!!.stop()
mediaPlayer!!.release()
MediaRecorderReady()
}
}
}
fun MediaRecorderReady() {
mediaRecorder = MediaRecorder()
mediaRecorder!!.setAudioSource(MediaRecorder.AudioSource.MIC)
mediaRecorder!!.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4)
mediaRecorder!!.setAudioEncoder(MediaRecorder.OutputFormat.AMR_NB)
mediaRecorder!!.setOutputFile(AudioSavePathInDevice)
}
}
/* Der Fehler, der mit diesem CodeAndroid: Code funktioniert mit api 19 aber nicht mit api 24
FATAL AUSNAHME verbunden ist: Haupt Prozess: com.example.admin.lifeplus, PID: 21679 java.lang.RuntimeException: setAudioSource ist fehlgeschlagen. bei android.media.MediaRecorder.setAudioSource (Native Methode) bei com.example.admin.lifeplus.record.MediaRecorderReady (record.kt: 138) bei com.example.admin.lifeplus.record $ onCreate $ 1.onClick (record.kt: 45) bei android.view.View.performClick (View.java:5623) bei android.view.View $ PerformClick.run (View.java:22433) bei android.os.Handler.handleCallback (Handler.java:751) bei android.os.Handler.dispatchMessage (Handler.java:95) bei android.os.Looper.loop (Looper.java:154) bei android.app.ActivityThread.main (ActivityThread. Java: 6247) bei java.lang.reflect.Method.invoke (native Methode) bei com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:872) bei com.android.internal.os.ZygoteInit.main (ZygoteInit.java:762) */
Der oben genannte ist mein Code für die Aufnahme einer Audiodatei, es funktioniert gut mit api 19 Geräten, aber nicht mit api 24. Können Sie mir helfen?
Fragen Sie zur Laufzeit die Berechtigung RECORD_AUDIO? – AlexTa
ja, dass ich in AndroidManifest-Datei enthalten, habe ich den gleichen Code ohne Berechtigung überprüft –
Der gleiche Fehler existiert –