资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

录音android,录音机

Android实现录音功能

1 Android录音需要声明录音权限

抚顺ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:13518219792(备注:SSL证书合作)期待与您的合作!

uses-permission android:name="android.permission.RECORD_AUDIO" /

uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /

uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /

2.录音文件要写到文件夹中,创建文件夹,在Application的onCreate方法中创建文件夹

@Override

public void onCreate() {

super.onCreate();

CrashHandler mCrashHandler = CrashHandler.getInstance();

mCrashHandler.init(getApplicationContext(), getClass());

initFile();

}

private void initFile() {

//录音文件

File audioFile = new File(Constant.UrlAudio);

if (!audioFile.exists()) {

    audioFile.mkdirs();

} else if (!audioFile.isDirectory()) {

    audioFile.delete();

    audioFile.mkdirs();

}

//拍摄图片文件

File imageFile = new File(Constant.UrlImage);

if (!imageFile.exists()) {

    imageFile.mkdirs();

} else if (!imageFile.isDirectory()) {

    imageFile.delete();

    imageFile.mkdirs();

}

}

Constant.UrlImage是个静态的文件路径

//录音文件

public static String UrlAudio = FileUtil.getSdcardPathOnSys()+"/EhmFile/media/audio/";

3.在activity中开始录音

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

import android.os.Environment;

import android.os.Handler;

import android.os.Message;

import android.media.MediaRecorder;

import android.text.format.DateFormat;

import android.util.Log;

import android.view.View;

import android.widget.Button;

import android.widget.TextView;

import java.io.File;

import java.io.IOException;

import java.util.Calendar;

import java.util.Locale;

public class Record2Activity extends AppCompatActivity {

// 录音界面相关

Button btnStart;

Button btnStop;

TextView textTime;

// 录音功能相关

MediaRecorder mMediaRecorder; // MediaRecorder 实例

boolean isRecording; // 录音状态

String fileName; // 录音文件的名称

String filePath; // 录音文件存储路径

Thread timeThread; // 记录录音时长的线程

int timeCount; // 录音时长 计数

final int TIME_COUNT = 0x101;

// 录音文件存放目录

final String audioSaveDir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/audiodemo/";

@Override

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_record2);

    btnStart = (Button) findViewById(R.id.btn_start);

    btnStop = (Button) findViewById(R.id.btn_stop);

    textTime = (TextView) findViewById(R.id.text_time);

    btnStart.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

// 开始录音

            btnStart.setEnabled(false);

            btnStop.setEnabled(true);

            startRecord();

            isRecording = true;

// 初始化录音时长记录

            timeThread = new Thread(new Runnable() {

                @Override

                public void run() {

                    countTime();

                }

            });

            timeThread.start();

        }

    });

    btnStop.setOnClickListener(new View.OnClickListener() {

        @Override

        public void onClick(View v) {

// 停止录音

            btnStart.setEnabled(true);

            btnStop.setEnabled(false);

            stopRecord();

            isRecording = false;

        }

    });

}

// 记录录音时长

private void countTime() {

    while (isRecording) {

        Log.d("mediaRe","正在录音");

        timeCount++;

        Message msg = Message.obtain();

        msg.what = TIME_COUNT;

        msg.obj = timeCount;

        myHandler.sendMessage(msg);

        try {

            timeThread.sleep(1000);

        } catch (InterruptedException e) {

            e.printStackTrace();

        }

    }

    Log.d("mediaRec", "结束录音");

    timeCount = 0;

    Message msg = Message.obtain();

    msg.what = TIME_COUNT;

    msg.obj = timeCount;

    myHandler.sendMessage(msg);

}

/**

* 开始录音 使用amr格式

* 录音文件

*

* @return

*/

public void startRecord() {

// 开始录音

    /* ①Initial:实例化MediaRecorder对象 */

    if (mMediaRecorder == null)

        mMediaRecorder = new MediaRecorder();

    try {

        /* ②setAudioSource/setVedioSource */

        mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);// 设置麦克风

        /*

        * ②设置输出文件的格式:THREE_GPP/MPEG-4/RAW_AMR/Default THREE_GPP(3gp格式

        * ,H263视频/ARM音频编码)、MPEG-4、RAW_AMR(只支持音频且音频编码要求为AMR_NB)

        */

        mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);

        /* ②设置音频文件的编码:AAC/AMR_NB/AMR_MB/Default 声音的(波形)的采样 */

        mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);

        fileName = DateFormat.format("yyyyMMdd_HHmmss", Calendar.getInstance(Locale.CHINA)) + ".m4a";

        //注意文件夹要创建之后才能使用

        filePath = Constant.UrlAudio + fileName;

        /* ③准备 */

        mMediaRecorder.setOutputFile(filePath);

        mMediaRecorder.prepare();

        /* ④开始 */

        mMediaRecorder.start();

    } catch (IllegalStateException e) {

        Log.i("mediaEr", "call startAmr(File mRecAudioFile) failed!" + e.getMessage());

    } catch (IOException e) {

        e.printStackTrace();

        Log.i("mediaEr", "call startAmr(File mRecAudioFile) failed!" + e.getMessage());

    }

}

/**

* 停止录音

*/

public void stopRecord() {

//有一些网友反应在5.0以上在调用stop的时候会报错,翻阅了一下谷歌文档发现上面确实写的有可能会报错的情况,捕获异常清理一下就行了,感谢大家反馈!

    try {

        mMediaRecorder.stop();

        mMediaRecorder.release();

        mMediaRecorder = null;

        filePath = "";

    } catch (RuntimeException e) {

        Log.e("mediaR", e.toString());

        mMediaRecorder.reset();

        mMediaRecorder.release();

        mMediaRecorder = null;

        File file = new File(filePath);

        if (file.exists())

            file.delete();

        filePath = "";

    }

}

// 格式化 录音时长为 秒

public static String FormatMiss(int miss) {

    return "" + miss;

}

Handler myHandler = new Handler() {

    @Override

    public void handleMessage(Message msg) {

        switch (msg.what) {

            case TIME_COUNT:

                int count = (int) msg.obj;

                Log.d("meidaRe","count == " + count);

                textTime.setText(FormatMiss(count));

                break;

        }

    }

};

@Override

protected void onDestroy() {

    super.onDestroy();

    myHandler.removeCallbacksAndMessages(null);

}

}

布局文件很简单

?xml version="1.0" encoding="utf-8"?

androidx.constraintlayout.widget.ConstraintLayout xmlns:android=""

xmlns:app=""

xmlns:tools=""

android:layout_width="match_parent"

android:layout_height="match_parent"

tools:context=".Record2Activity"

Button

    android:id="@+id/btn_stop"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="结束"

    app:layout_constraintBottom_toBottomOf="parent"

    app:layout_constraintEnd_toEndOf="parent"

    app:layout_constraintHorizontal_bias="0.5"

    app:layout_constraintStart_toEndOf="@+id/btn_start"

    app:layout_constraintTop_toTopOf="parent" /

Button

    android:id="@+id/btn_start"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:text="开始"

    app:layout_constraintBottom_toBottomOf="parent"

    app:layout_constraintEnd_toStartOf="@+id/btn_stop"

    app:layout_constraintHorizontal_bias="0.5"

    app:layout_constraintStart_toStartOf="parent"

    app:layout_constraintTop_toTopOf="parent" /

TextView

    android:id="@+id/text_time"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_marginStart="11dp"

    android:layout_marginTop="47dp"

    android:text="时间"

    app:layout_constraintStart_toStartOf="@+id/btn_start"

    app:layout_constraintTop_toBottomOf="@+id/btn_start" /

/androidx.constraintlayout.widget.ConstraintLayout

这样就可以使用录音功能了

安卓手机怎么设置通话录音

如果您使用的是华为手机,可以通过以下方法操作:

一、通话期间录音

通话过程中,在通话界面,点击录音,可录取当前通话内容。

二、开启自动录音功能

开启自动录音,帮您记录每一个重要通话内容。

1.进入电话 四个点 设置 通话自动录音,开启通话自动录音开关,会自动对所有通话进行录音。

2.如需对特定号码的通话录音,点击自动录音对象,设置指定号码。

三、查看通话录音结果

打开文件管理,搜索 Sounds 并进入此文件夹,然后点击 CallRecord 查看通话录音文件。

安卓手机通话怎么录音

若使用vivo手机,通话录音可参考以下设置方法:

1、可以进入手机设置--(应用与权限)--(系统应用设置)--电话--通话录音中,选择“所有通话自动录音”或“指定号码自动录音”,设置后,当您开始通话时,手机会自动进行录音。

从Funtouch OS 2.0开始的机器都支持通话自动录音(不包括Funtouch OS 3.0)

2、拨打电话时,您点击通话界面的“录音”即可录通话内容,通话结束后,文件可进入文件管理--本地文件/所有文件/手机存储--Record/录音文件夹中找到。

安卓手机录音在哪里找到(苹果手机怎么免费录音)

1.安卓手机录音寻找方法如下:第一打开手机的录音机,点击手机按键菜单键。

2.进入录音机设定模式,看看录音文件是存在存储卡还是手机内存文件夹。

3.如果看到手机是把录音文件放在了存储卡上,手机连接上电脑进入我的存储卡。

4.打开SOUND文件夹,录音文件都在这里了,录音文件为3ga后缀的文件这些就是安卓类手机的录音文件了。

安卓手机的通话录音保存在哪里

若使用的是vivo手机,在通话的时候点击键盘上的录音按钮即可录音,录音文件保存在文件管理--本地文件/所有文件/手机存储--Record/录音文件夹中(通话录音的保存路径无法修改)。

安卓手机电话录音保存在哪里

若是指vivo手机查看通话录音保存位置:

OriginOS Ocean系统:进入文件管理--手机存储--(Recordings)--Record--Call文件夹--即可查看通话录音;

其他系统:进入文件管理--手机存储/本地文件/所有文件--Record/录音文件夹--即可查看通话录音。

注:通话录音的保存路径不支持修改。

更多疑问可以点击此链接询问在线客服。


新闻名称:录音android,录音机
文章来源:http://cdkjz.cn/article/dscpicp.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220