• Android平台下实现录音及播放录音功能的简介


    录音及播放的方法如下:

    package com.example.audiorecord;
    
    import java.io.File;
    import java.io.IOException;
    
    import android.app.Activity;
    import android.media.MediaPlayer;
    import android.media.MediaRecorder;
    import android.os.Bundle;
    import android.os.Environment;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    
    public class RecordActivity extends Activity {
    
        private static final String LOG_TAG = "AudioRecordTest";
        // 语音文件保存路径
        private String FileName = null;
    
        // 界面控件
        private Button startRecord;
        private Button startPlay;
        private Button stopRecord;
        private Button stopPlay;
    
        // 语音操作对象
        private MediaPlayer mPlayer = null;
        private MediaRecorder mRecorder = null;
    
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
    
            // 开始录音
            startRecord = (Button) findViewById(R.id.startRecord);
            startRecord.setText(R.string.startRecord);
            // 绑定监听器
            startRecord.setOnClickListener(new startRecordListener());
    
            // 结束录音
            stopRecord = (Button) findViewById(R.id.stopRecord);
            stopRecord.setText(R.string.stopRecord);
            stopRecord.setOnClickListener(new stopRecordListener());
    
            // 开始播放
            startPlay = (Button) findViewById(R.id.startPlay);
            startPlay.setText(R.string.startPlay);
            // 绑定监听器
            startPlay.setOnClickListener(new startPlayListener());
    
            // 结束播放
            stopPlay = (Button) findViewById(R.id.stopPlay);
            stopPlay.setText(R.string.stopPlay);
            stopPlay.setOnClickListener(new stopPlayListener());
    
            // 设置sdcard的路径
            FileName = Environment.getExternalStorageDirectory().getAbsolutePath();
            FileName = FileName + File.separator + "audiorecordtest.arm";
        }
    
        // 开始录音
        class startRecordListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mRecorder = new MediaRecorder();
                mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
                mRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
                mRecorder.setOutputFile(FileName);
                mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
                try {
                    mRecorder.prepare();
                } catch (IOException e) {
                    Log.e(LOG_TAG, "prepare() failed");
                }
                mRecorder.start();
            }
    
        }
    
        // 停止录音
        class stopRecordListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mRecorder.stop();
                mRecorder.release();
                mRecorder = null;
            }
    
        }
    
        // 播放录音
        class startPlayListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mPlayer = new MediaPlayer();
                try {
                    mPlayer.setDataSource(FileName);
                    mPlayer.prepare();
                    mPlayer.start();
                } catch (IOException e) {
                    Log.e(LOG_TAG, "播放失败");
                }
            }
    
        }
    
        // 停止播放录音
        class stopPlayListener implements OnClickListener {
    
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                mPlayer.release();
                mPlayer = null;
            }
    
        }
    }

    界面布局如下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
    
        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="@string/app_name" />
    
        <Button
            android:id="@+id/startRecord"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/stopRecord"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/startPlay"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    
        <Button
            android:id="@+id/stopPlay"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    
    </LinearLayout>

    完整项目代码: http://download.csdn.net/detail/abc13939746593/6920293

  • 相关阅读:
    java反射笔记
    Java常见异常类型
    找了这么多毕业设计题目,反而不知道选什么了
    C#中Trim()、TrimStart()、TrimEnd()的用法
    JS bom对象
    HTML随笔
    Sublim text3汉化
    11G RAC ORA-32701
    DB_LINK
    ORA-16957: SQL Analyze time limit interrupt
  • 原文地址:https://www.cnblogs.com/hsx514/p/3552521.html
Copyright © 2020-2023  润新知