Android长按录音播放

在Android应用中,我们经常需要实现录音和播放音频的功能。本文将介绍如何在Android应用中实现长按录音并播放录音的功能,并提供相应的代码示例。

长按录音功能

状态图

首先,我们可以使用状态图来描述长按录音功能的状态变化。使用mermaid语法,我们可以得到下面的状态图:

stateDiagram
    [*] --> Idle
    Idle --> Recording : 长按开始录音
    Recording --> Idle : 长按结束录音

流程图

接下来,我们可以使用流程图来描述长按录音功能的实现流程。使用mermaid语法,我们可以得到下面的流程图:

flowchart TD
    A[开始] --> B{是否长按}
    B -- 是 --> C{是否在录音}
    C -- 是 --> D{是否长按结束}
    C -- 否 --> C
    D -- 是 --> E[停止录音]
    D -- 否 --> C
    B -- 否 --> A

实现代码示例

下面是一个简单的Android应用代码示例,实现了长按录音功能:

public class MainActivity extends AppCompatActivity {
    private MediaRecorder mediaRecorder;
    private String audioFilePath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        audioFilePath = getExternalCacheDir().getAbsolutePath() + "/recording.3gp";

        Button recordButton = findViewById(R.id.record_button);
        recordButton.setOnLongClickListener(new View.OnLongClickListener() {
            @Override
            public boolean onLongClick(View v) {
                startRecording();
                return true;
            }
        });

        Button playButton = findViewById(R.id.play_button);
        playButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                playRecording();
            }
        });
    }

    private void startRecording() {
        try {
            mediaRecorder = new MediaRecorder();
            mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
            mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
            mediaRecorder.setOutputFile(audioFilePath);
            mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            mediaRecorder.prepare();
            mediaRecorder.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    private void stopRecording() {
        if (mediaRecorder != null) {
            mediaRecorder.stop();
            mediaRecorder.release();
            mediaRecorder = null;
        }
    }

    private void playRecording() {
        MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            mediaPlayer.setDataSource(audioFilePath);
            mediaPlayer.prepare();
            mediaPlayer.start();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上述代码中,我们首先在onCreate方法中获取录音文件保存路径,并设置了长按录音按钮和播放按钮的点击事件。

长按录音按钮的点击事件中,我们调用startRecording方法开始录音。在startRecording方法中,我们使用MediaRecorder类来进行录音设置和开始录音。

播放按钮的点击事件中,我们调用playRecording方法播放录音。在playRecording方法中,我们使用MediaPlayer类来设置录音文件路径并开始播放录音。

另外,我们还提供了stopRecording方法来停止录音。

结语

通过上述代码示例,我们实现了在Android应用中实现长按录音并播放录音的功能。你可以根据自己的需求进行修改和扩展,例如添加录音时的音量显示、录音时的波形图等。祝你在Android应用开发中取得成功!