Android----录音系列教程

 在github上试水,找到个录音功能,亲测可用,分享给大家

 话不多少,直接贴代码

第一步:

/**录音**/
implementation 'com.github.adrielcafe:AndroidAudioRecorder:0.3.0'
/**权限检测**/
implementation 'com.yanzhenjie:permission:2.0.0-rc12'
/**弹出对话框**/
implementation 'com.yanzhenjie.alertdialog:alertdialog:1.0.1' 

引入上方依赖

 

maven不能忘记配置,切这里用了1.8的表达式,也配置一下

第二步:

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

权限配置这3项

第三步:

package com.example.administrator.audiorecorder;
import android.app.Activity;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Build;
import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import com.yanzhenjie.alertdialog.AlertDialog;
import com.yanzhenjie.permission.Action;
import com.yanzhenjie.permission.AndPermission;
import com.yanzhenjie.permission.Permission;
import com.yanzhenjie.permission.Rationale;
import com.yanzhenjie.permission.RequestExecutor;
import com.yanzhenjie.permission.Setting;
import java.util.List;
import cafe.adriel.androidaudiorecorder.AndroidAudioRecorder;
import cafe.adriel.androidaudiorecorder.model.AudioChannel;
import cafe.adriel.androidaudiorecorder.model.AudioSampleRate;
import cafe.adriel.androidaudiorecorder.model.AudioSource;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        requestFilePermission();
    }
    /**
     * 第三方权限方法
     **/
    private void requestFilePermission() {
        requestPermission(this,  Permission.WRITE_EXTERNAL_STORAGE,
               Permission.RECORD_AUDIO,Permission.WRITE_EXTERNAL_STORAGE);
    }

    public void requestPermission(final Activity activity,  final String... permissions) {
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            AndPermission.with(activity)
                    .runtime()
                    .permission(permissions)
                    .rationale(new Rationale<List<String>>() {
                        @Override
                        public void showRationale(Context context, List<String> data, final RequestExecutor executor) {
                            List<String> permissionNames = Permission.transformText(context, data);
                            String message = "请授权该下的权限" + "\n" + permissionNames;
                            AlertDialog.newBuilder(context)
                                    .setCancelable(false)
                                    .setTitle("开启权限")
                                    .setMessage(message)
                                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            executor.execute();
                                        }
                                    })
                                    .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                                        @Override
                                        public void onClick(DialogInterface dialog, int which) {
                                            executor.cancel();
                                        }
                                    })
                                    .show();


                        }
                    }).onGranted(new Action<List<String>>() {
                @Override
                public void onAction(List<String> data) {
                    doOther();
                }
            })
                    .onDenied(data -> {
                        if (AndPermission.hasAlwaysDeniedPermission(activity, permissions)) {
                            AndPermission.with(activity)
                                    .runtime()
                                    .setting()
                                    .onComeback(new Setting.Action() {
                                        @Override
                                        public void onAction() {
                                            if (AndPermission.hasPermissions(activity, permissions)) {

                                                    doOther();

                                            }
                                        }
                                    })
                                    .start();


                        }

                    })
                    .start();
        } else {
                doOther();

        }

    }
    private void doOther(){
        String filePath = Environment.getExternalStorageDirectory() + "/recorded_audio.wav";
        int color = getResources().getColor(R.color.colorPrimaryDark);
        int requestCode = 0;
        AndroidAudioRecorder.with(this)
                // Required
                .setFilePath(filePath)
                .setColor(color)
                .setRequestCode(requestCode)

                // Optional
                .setSource(AudioSource.MIC)
                .setChannel(AudioChannel.STEREO)
                .setSampleRate(AudioSampleRate.HZ_48000)
                .setAutoStart(true)
                .setKeepDisplayOn(true)

                // Start recording
                .record();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == 0) {
            if (resultCode == RESULT_OK) {
                // Great! User has recorded and saved the audio file
            } else if (resultCode == RESULT_CANCELED) {
                // Oops! User has canceled the recording
            }
        }
    }
}

 上面是主界面代码。 逻辑是初始化之后,执行动态权限获取,然后一路通过后,跳转到路音界面

布局里什么都不用配置。

结尾:

      静静的录音,静静的听。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

土狗的想法

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值