美文网首页程序员
Android语音录制,语音发送

Android语音录制,语音发送

作者: 饮水思源为名 | 来源:发表于2018-07-31 15:26 被阅读236次

这是一个录音的例子,可用于IM的语音发送,OA的语音留言等。
首先我们需要引入权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

录音的实现:

录音方面是利用MediaRecoder实现录制。利用MediaPlayer实现播放。

  /**
     * 开始录音 使用amr格式
     * 录音文件
     *
     * @return
     */
    public void startRecord(String filePath) {
        // 开始录音
        /* ①Initial:实例化MediaRecorder对象 */
        if (mMediaRecorder == null)
            mMediaRecorder = new MediaRecorder();
        try {
            /* ②setAudioSource/setVedioSource */
            mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置麦克风
            /* ②设置音频文件的编码:AAC/AMR_NB/AMR_MB/Default 声音的(波形)的采样 */
            mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
            /*
             * ②设置输出文件的格式:THREE_GPP/MPEG-4/RAW_AMR/Default THREE_GPP(3gp格式
             * ,H263视频/ARM音频编码)、MPEG-4、RAW_AMR(只支持音频且音频编码要求为AMR_NB)
             */
            mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
            /* ③准备 */
            mMediaRecorder.setOutputFile(filePath);
            mMediaRecorder.setMaxDuration(MAX_LENGTH);
            mMediaRecorder.prepare();
            /* ④开始 */
            mMediaRecorder.start();
            // AudioRecord audioRecord.
            /* 获取开始时间* */
            startTime = System.currentTimeMillis();
            updateMicStatus();
            Log.i("ACTION_START", "startTime" + startTime);
        } catch (IllegalStateException e) {
            Log.i(TAG, "call startAmr(File mRecAudioFile) failed!" + e.getMessage());
        } catch (IOException e) {
            Log.i(TAG, "call startAmr(File mRecAudioFile) failed!" + e.getMessage());
        }
    }
public void playerStart(String filePath) {
        try {
            if (mMediaPlayer == null) {
                mMediaPlayer = new MediaPlayer();
            }
            mMediaPlayer.reset();
            mMediaPlayer.setDataSource(filePath);
            mMediaPlayer.prepare();
            playerCompletion();
        } catch (IOException e) {
            e.printStackTrace();
        }
        mMediaPlayer.start();
        isPlayer=true;
    }

录音View控件:

采用了drawable的clip方法裁剪。通过setLevel方法到达声波的效果。利用PopupWindow置于屏幕中部。录制时间用线程去跑。核心内容:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:id="@android:id/background" android:drawable="@mipmap/icon_microphone_normal" />
    <item android:id="@android:id/progress" >
        <clip android:drawable="@mipmap/icon_microphone_recoding" android:gravity="bottom" android:clipOrientation="vertical" />
    </item>
</layer-list>

源码:

VoiceView源码

相关文章

  • Android语音录制,语音发送

    这是一个录音的例子,可用于IM的语音发送,OA的语音留言等。首先我们需要引入权限: 录音的实现: 录音方面是利用M...

  • UIControlEvents 中各种event被触发的方式详解

    做IM聊天功能的时候,有个录制语音并发送的需求,用到了录制语音按钮的点击事件,按照不同的UIControlEven...

  • Android 长按发送语音

    正文 之前的文章我有写过如何录制音频,还没看过的朋友可以点这里,是关于Android 录音工具类 MediaRec...

  • 录制语音

    在前段时间我承担了晋中市家庭教育协会幸福读书会关于《13岁前妈妈一定要知道的心理学》的语音录制任务,看着表格...

  • Android语音录制简单封装

    录音两个需要注意的地方,一是录音过短的时候会失败,所以要监听录音时间长短,小于一秒的时候就显示失败;二是录音的时候...

  • Android语音录制和播放

    介绍 由于最近项目需要,需要做语音录制和播放功能模块,所以做了一个轻量级的语音录制和播放库,方便调用这是一款参考环...

  • Android 语音录制工具类

    最近在写项目中的Demo,下个项目中有IM的需求,其中有个语音消息的功能,网上github上找了开源...

  • 萌萌QQ群机器人——文字聊天

    1. 发送“切换语音聊天”,再@机器人+任意文字。 2. 发送“切换语音”,可切换不同的语音类型。 3. 发送“跟...

  • 局域网内端到端的聊天项目(七)

    上一篇已实现单个及多个视频的发送 接下来实现 语音的录制/传输/播放功能 同样通过键盘工具条来触发 通过封装语音录...

  • 萌萌QQ群机器人——语音聊天

    1. 发送“切换语音聊天”,再@机器人+任意文字。 2. 发送“切换语音”,可切换不同的语音类型。

网友评论

    本文标题:Android语音录制,语音发送

    本文链接:https://www.haomeiwen.com/subject/bjrhvftx.html