You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android(Kotlin)录音开发:如何提升设备Build.VERSION.SDK_INT

解决方案

首先明确:设备的Build.VERSION.SDK_INT由Android系统版本决定,无法通过应用代码提升——除非给设备刷机升级系统,但这完全没必要,修改代码适配低版本系统才是最优解。

你的核心问题是startRecording()函数被标记了@RequiresApi(Build.VERSION_CODES.S)(对应API31),且内部使用了API31才新增的MediaRecorder(Context)构造方法,导致低版本设备无法调用。按以下步骤修改即可解决:

1. 调整按钮点击事件

移除对API31的版本判断,直接调用startRecording():

recordBtn.setOnClickListener {
    if (applicationContext.checkSelfPermission(
            Manifest.permission.RECORD_AUDIO) != PackageManager.PERMISSION_GRANTED) {
        val permissions = arrayOf(android.Manifest.permission.RECORD_AUDIO)
        ActivityCompat.requestPermissions(this, permissions, 0)
    } else {
        startRecording()
    }
}

2. 重构startRecording()函数

  • 移除@RequiresApi(Build.VERSION_CODES.S)注解,解除低版本调用限制
  • 适配MediaRecorder初始化逻辑,区分API31前后的构造方法
  • 处理低版本构造方法的过时警告
  • 确保setOutputFile传入绝对路径(适配低版本要求)

修改后的代码:

@SuppressLint("RestrictedApi")
@Suppress("DEPRECATION") // 忽略低版本构造方法的过时警告
private fun startRecording() {
    stopBtn.isEnabled = true
    playBtn.isEnabled = false
    recordBtn.isEnabled = false

    val theAudioFile = File(getFilesDir(), "Audio_Record_File")

    mediaRecorder = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
        MediaRecorder(applicationContext)
    } else {
        MediaRecorder()
    }.apply {
        setAudioSource(MediaRecorder.AudioSource.MIC)
        setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP)
        setOutputFile(theAudioFile.absolutePath) // 使用绝对路径适配低版本
        setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB)

        try {
            prepare()
        } catch (e: IOException) {
            Log.e(LOG_TAG, "prepare() failed", e) // 打印完整异常信息便于排查
        }

        start()
    }
}

关键说明

  • 你之前尝试的适配写法无效,是因为函数本身的@RequiresApi注解限制了外部调用,移除该注解后即可正常执行。
  • MediaRecorder()无参构造方法虽在API31后被标记为过时,但在低版本系统中仍能正常工作,添加@Suppress("DEPRECATION")可消除Android Studio警告。
  • 低版本的setOutputFile方法推荐传入文件绝对路径,避免潜在兼容性问题。

内容的提问来源于stack exchange,提问作者Michel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 14:15:46