开始录音功能-
private fun startRecording() {
if (checkpermissions()) {
recorder = MediaRecorder().apply {
setAudioSource(MediaRecorder.AudioSource.MIC)
setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
setOutputFile(fileName)
setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)
try {
prepare()
} catch (e: IOException) {
Log.e(LOG_TAG, "prepare() failed")
}
}
} else {
requestpermissions()
}
}
检查权限功能:—
private fun checkpermissions(): Boolean {
val result = ContextCompat.checkSelfPermission(applicationContext, WRITE_EXTERNAL_STORAGE)
val result1 = ContextCompat.checkSelfPermission(applicationContext, RECORD_AUDIO)
return result == PackageManager.PERMISSION_GRANTED && result1 ==
PackageManager.PERMISSION_GRANTE
}
请求权限功能:-
private fun requestpermissions()
{
ActivityCompat.requestPermissions(
this@MainActivity,
arrayOf(RECORD_AUDIO, WRITE_EXTERNAL_STORAGE),
REQUEST_AUDIO_PERMISSION_CODE
)
}
我得到的明确许可:-
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.STORAGE"/>
程序没有要求任何存储权限。当运行任何应用程序获得IOException在startRecording()函数。
应用程序没有在其存储中保存音频文件。可能是由于这个,我得到这个例外。
请帮助。
###我建议你使用新的api获取权限:
使用新api的运行时权限