zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    OpenCV和PHP的人脸识别技术
    Nginx下防CC和DDOS攻击
    Centos 6.0 yum 更新源
    linux(centos) 常用命令
    在 Nginx 中配置 Zend Framework
    nginx虚拟主机配置实例
    mysql精简语句集
    nginx rewrite 参数和例子
    nginx 和 subversion
    ZendFramework,php编码规范
  • 原文地址:https://www.cnblogs.com/hsx514/p/3552521.html
Copyright © 2011-2022 走看看