安卓6.0以下的录制音视频的权限问题

2018-09-12  本文已影响0人  周大侠侠侠侠侠侠侠侠侠侠侠侠侠

主要是在魅族和Vivo手机中
魅族(安卓4.4)有系统自带的权限控制
Vivo(安卓5.1)有i管家进行控制
所有不能只判断是不是有权限 还需要进行判断是否可以进行录制音视频

    /**
     * 判断是否录音可以使用
     *
     * @return 是否
     */
    public static boolean isAudioCanUse() {
        int audioFormat = AudioFormat.ENCODING_PCM_16BIT;
        int channelConfig = AudioFormat.CHANNEL_IN_STEREO;
        int sampleRateInHz = 44100;
        int bufferSizeInBytes = AudioRecord.getMinBufferSize(sampleRateInHz,
                channelConfig, audioFormat);
        int audioSource = MediaRecorder.AudioSource.MIC;
        AudioRecord audioRecord = new AudioRecord(audioSource, sampleRateInHz,
                channelConfig, audioFormat, bufferSizeInBytes);
        //开始录制音频
        try {
            // 防止某些手机崩溃,例如联想
            audioRecord.startRecording();
        } catch (IllegalStateException e) {
            e.printStackTrace();
            return false;
        }
        /*
         * 根据开始录音判断是否有录音权限
         */
        if (audioRecord.getRecordingState() != AudioRecord.RECORDSTATE_RECORDING) {
            return false;
        }
        audioRecord.stop();
        audioRecord.release();
        audioRecord = null;
        return true;
    }

    /**
     * 判断是否摄像头可以使用
     *
     * @return 是否可以使用
     */
    public static boolean isCameraCanUse() {
        boolean canUse = true;
        Camera mCamera = null;
        try {
            mCamera = Camera.open();
            Camera.Parameters mParameters = mCamera.getParameters();
            mCamera.setParameters(mParameters);
        } catch (Exception e) {
            canUse = false;
        }
        if (mCamera != null) {
            mCamera.release();
        }
        return canUse;
    }
上一篇下一篇

猜你喜欢

热点阅读