android 动态录音权限,Android如何判断手机是否有录音权限的工具类

作用

判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统

测试环境

这篇文章是评论中的网友提出质疑后,经过重写修改与重写测试后编写的,我的调试环境是小米note3,Android7.1的系统。

记得在清单文件中配置对应的权限。

思路

检测是否有权限

-->有权限--执行相关操作

-->无权限-- 判断系统版本

--大于等于6.0 --动态申请权限

-->对申请结果的回调处理

--允许

--拒绝

代码

工具类CheckAudioPermission.java

package com.example.a002034.testaudioperrmission;

import android.content.Context;

import android.media.AudioFormat;

import android.media.AudioRecord;

import android.media.MediaRecorder;

/**

* Function:判断录音权限,兼容android6.0以下以及以上系统

*

* @author xuzhuyun

* @date 2018/5/10

*/

public class CheckAudioPermission {

/**

* 音频获取源

*/

public static int audioSource = MediaRecorder.AudioSource.MIC;

/**

* 设置音频采样率,44100是目前的标准,但是某些设备仍然支持22050,16000,11025

*/

public static int sampleRateInHz = 44100;

/**

* 设置音频的录制的声道CHANNEL_IN_STEREO为双声道,CHANNEL_CONFIGURATION_MONO为单声道

*/

public static int channelConfig = AudioFormat.CHANNEL_IN_STEREO;

/**

* 音频数据格式:PCM 16位每个样本。保证设备支持。PCM 8位每个样本。不一定能得到设备支持。

*/

public static int audioFormat = AudioFormat.ENCODING_PCM_16BIT;

/**

* 缓冲区字节大小

*/

public static int bufferSizeInBytes = 0;

public static AudioRecord audioRecord;

/**

* 判断是是否有录音权限.

*/

public static boolean isHasPermission(final Context context) {

bufferSizeInBytes = 0;

bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz,

channelConfig, audioFormat);

if (audioRecord == null) {

audioRecord = new AudioRecord(audioSource, sampleRateInHz, channelConfig, audioFormat, bufferSizeInBytes);

}

//开始录制音频

try {

// 防止某些手机崩溃,例如联想

audioRecord.startRecording();

} catch (IllegalStateException e) {

e.printStackTrace();

}

/**

* 根据开始录音判断是否有录音权限s

*/

if (audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {

return false;

}

audioRecord.stop();

//释放资源

audioRecord.release();

audioRecord = null;

return true;

}

}

测试类MainActivity

package com.example.a002034.testaudioperrmission;

import android.Manifest;

import android.content.pm.PackageManager;

import android.os.Build;

import android.support.annotation.NonNull;

import android.support.v4.content.ContextCompat;

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.util.Log;

/**

* desc:测试录音权限.

* steps:

* 检测是否有权限--有--执行相关操作

* --无权限--

*

* --判断系统版本

* --小于6.0 直接获取

* --大于6.0 动态申请权限

* --对申请结果的处理回调

*

* --允许

*

* --拒绝

*

* test:

* test1 build.gradle minsdk <23 真机android7.1 清单文件中配置了录音权限

* test2 build.gradle minsdk >=23 真机android7.1 清单文件中配置了录音权限

*

* @author xuzhuyun

* @date 2018/5/10

*/

public class MainActivity extends AppCompatActivity {

private static final String TAG = "MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

//检测是否有录音权限

if (ContextCompat.checkSelfPermission(this, Manifest.permission.RECORD_AUDIO)

!= PackageManager.PERMISSION_GRANTED) {

Log.i(TAG, "默认无录音权限");

if (Build.VERSION.SDK_INT >= 23) {

Log.i(TAG, "系统版本不低于android6.0 ,需要动态申请权限");

requestPermissions(new String[]{Manifest.permission.RECORD_AUDIO}, 1001);

}

} else {

Log.i(TAG, "默认有录音权限");

}

}

@Override

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,

@NonNull int[] grantResults) {

super.onRequestPermissionsResult(requestCode, permissions, grantResults);

if (requestCode == 1001) {

//方式一校验

boolean isHasAudioPermission = CheckAudioPermission.isHasPermission(this);

Log.i(TAG, "申请权限完毕,当前录音权限:" + isHasAudioPermission);

//方式二校验

int result = 0;

for (int i = 0; i < grantResults.length; i++) {

if (grantResults[i] == PackageManager.PERMISSION_GRANTED) {

result++;

}

}

if (result != permissions.length) {

//没有权限

Log.i(TAG, "onRequestPermissionsResult: 申请权限完毕,当前录音权限:false");

return;

}

//有权限

Log.i(TAG, "onRequestPermissionsResult: 申请后,是否有权限:true");

}

}

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
简易录音机是一款基于Android平台的实战项目,其主要功能是通过手机的麦克风录制音频,并保存到手机的存储空间中。该项目的开发过程中需要掌握Android的基础知识和相关开发工具的使用。 在实现简易录音机的功能之前,首先需要搭建Android开发环境,包括安装Android Studio开发工具和配置相关的SDK。 开发过程中需要使用到Android的相关API,如MediaRecorder类来录制音频,AudioManager类来控制音频的播放和停止。同时,应该要注意权限的设置,例如获取录音权限和读写存储权限。 实现简易录音机的核心功能包括录制音频、播放音频和保存音频。在录制音频功能中,需要设置录制的音频来源和保存的文件格式,然后通过MediaRecorder类实现录制功能。在播放音频功能中,需要通过AudioManager类来控制音频的播放和停止,并且可以设置音量大小。在保存音频功能中,需要设置保存的文件路径和文件名,然后将录制的音频保存到指定路径。 除了核心功能外,还可以对简易录音机进行功能扩展,例如添加暂停、继续录音功能,实现录音的暂停和继续录制。还可以添加音频剪辑功能,实现对录制的音频进行剪辑和编辑。 总而言之,android实战项目-简易录音机是一个基于Android平台开发的项目,通过掌握Android的相关开发知识和技术,可以实现录制、播放和保存音频等功能,并可以对其进行进一步的功能扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值