Android studio 034 录音

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btn_control"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="开始录音" />

</RelativeLayout>
MainActivity.java:

public class MainActivity extends AppCompatActivity {

    private Button btn_control;
    private boolean isStart = false;
    private MediaRecorder mr = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn_control = (Button) findViewById(R.id.btn_control);
        btn_control.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(!isStart){
                    startRecord();
                    btn_control.setText("停止录制");
                    isStart = true;
                }else{
                    stopRecord();
                    btn_control.setText("开始录制");
                    isStart = false;
                }
            }
        });
    }

    //开始录制
    private void startRecord(){
        if(mr == null){
            File dir = new File(Environment.getExternalStorageDirectory(),"sounds");
            if(!dir.exists()){
                dir.mkdirs();
            }
            File soundFile = new File(dir,System.currentTimeMillis()+".amr");
            if(!soundFile.exists()){
                try {
                    soundFile.createNewFile();
                } catch (IOException e) {
                    e.printStackTrace();
                }

            }
            mr = new MediaRecorder();
            mr.setAudioSource(MediaRecorder.AudioSource.MIC);  //音频输入源
            mr.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);   //设置输出格式
            mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);   //设置编码格式
            mr.setOutputFile(soundFile.getAbsolutePath());
            try {
                mr.prepare();
                mr.start();  //开始录制
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }

    //停止录制,资源释放
    private void stopRecord(){
        if(mr != null){
            mr.stop();
            mr.release();
            mr = null;
        }
    }
}
最后别忘了在AndroidManifest.xml中添加下述权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
好的,就是这么简单~





在这里插入图片描述
在手机中设置麦克风权限及SD卡权限。

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Android Studio中使用Kotlin进行录音可以通过使用`MediaRecorder`类来实现。以下是一个简单的示例代码: ```kotlin import android.Manifest import android.content.pm.PackageManager import android.media.MediaRecorder import android.os.Bundle import android.os.Environment import android.widget.Button import android.widget.Toast import androidx.appcompat.app.AppCompatActivity import androidx.core.app.ActivityCompat import androidx.core.content.ContextCompat import java.io.IOException class MainActivity : AppCompatActivity() { private val RECORD_AUDIO_PERMISSION = Manifest.permission.RECORD_AUDIO private val WRITE_EXTERNAL_STORAGE_PERMISSION = Manifest.permission.WRITE_EXTERNAL_STORAGE private val REQUEST_PERMISSION_CODE = 101 private var mediaRecorder: MediaRecorder? = null private var isRecording = false override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val recordButton = findViewById<Button>(R.id.record_button) recordButton.setOnClickListener { if (isRecording) { stopRecording() recordButton.text = "Start Recording" } else { if (checkPermissions()) { startRecording() recordButton.text = "Stop Recording" } } } } private fun checkPermissions(): Boolean { val permissionRecordAudio = ContextCompat.checkSelfPermission( this, RECORD_AUDIO_PERMISSION ) val permissionWriteExternalStorage = ContextCompat.checkSelfPermission( this, WRITE_EXTERNAL_STORAGE_PERMISSION ) val permissionsToRequest = ArrayList<String>() if (permissionRecordAudio != PackageManager.PERMISSION_GRANTED) { permissionsToRequest.add(RECORD_AUDIO_PERMISSION) } if (permissionWriteExternalStorage != PackageManager.PERMISSION_GRANTED) { permissionsToRequest.add(WRITE_EXTERNAL_STORAGE_PERMISSION) } if (permissionsToRequest.isNotEmpty()) { ActivityCompat.requestPermissions( this, permissionsToRequest.toTypedArray(), REQUEST_PERMISSION_CODE ) return false } return true } private fun startRecording() { val filePath = "${Environment.getExternalStorageDirectory().absolutePath}/recording.3gp" mediaRecorder = MediaRecorder().apply { setAudioSource(MediaRecorder.AudioSource.MIC) setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP) setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB) setOutputFile(filePath) try { prepare() start() isRecording = true Toast.makeText(this@MainActivity, "Recording started", Toast.LENGTH_SHORT).show() } catch (e: IOException) { e.printStackTrace() } } } private fun stopRecording() { mediaRecorder?.apply { stop() reset() release() mediaRecorder = null isRecording = false Toast.makeText(this@MainActivity, "Recording stopped", Toast.LENGTH_SHORT).show() } } override fun onRequestPermissionsResult( requestCode: Int, permissions: Array<out String>, grantResults: IntArray ) { super.onRequestPermissionsResult(requestCode, permissions, grantResults) if (requestCode == REQUEST_PERMISSION_CODE) { if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { if (isRecording) { startRecording() } } else { Toast.makeText( this, "Permission denied. Please grant the necessary permissions.", Toast.LENGTH_SHORT ).show() } } } } ``` 请确保在使用之前在`AndroidManifest.xml`文件中添加以下权限: ```xml <uses-permission android:name="android.permission.RECORD_AUDIO" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> ``` 这段代码创建了一个简单的界面,其中有一个按钮用于开始和停止录音。录制的音频文件将保存在设备的外部存储目录中,并以`recording.3gp`命名。请确保在运行应用程序之前为应用程序授予适当的权限。 希望这能帮到你!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值