안드로이드 핸드폰에 녹음이 있는지 아닌지를 판단합니다.

4929 단어 Android사용 권한
역할
핸드폰에 녹음 권한이 있는지 판단하는 도구류는 6.0 이상 및android 시스템을 호환합니다
테스트 환경
이 글은 댓글 속의 네티즌들이 의문을 제기한 후 리메이크 수정과 리메이크 테스트를 거쳐 작성한 것이다. 나의 디버깅 환경은 샤오미 노트3, 안드로이드7.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"); } } }


원본 다운로드
https://download.csdn.net/download/jdfkldjlkjdl/10405148

좋은 웹페이지 즐겨찾기