在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 } } } }
上面是主界面代码。 逻辑是初始化之后,执行动态权限获取,然后一路通过后,跳转到路音界面
布局里什么都不用配置。
结尾:
静静的录音,静静的听。