录音的许可问题

Sam*_*ley 0 java media android audio-recording

我在设备上录制声音时遇到了一些问题.我从android开发站点(站点链接)使用的代码如下:

    public void onClickStart(View v) throws IllegalStateException, IOException{
        startRecord();
    }

    public void onClickStop(View v) throws IllegalStateException, IOException{
        stopRecord();
    }

    private void startRecord() throws IllegalStateException, IOException{
        recorder = new MediaRecorder(); 
        recorder.setAudioSource(MediaRecorder.AudioSource.MIC);  //ok so I say audio source is the microphone, is it windows/linux microphone on the emulator? 
        recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
        recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
        recorder.setOutputFile("/sdcard/test.3gpp"); 
        recorder.prepare(); 
        recorder.start();  
    }

    private void stopRecord(){
        recorder.stop();
//      recorder.release();
    }
Run Code Online (Sandbox Code Playgroud)

在主布局中有2个按钮,它们都会停止并开始录制(理论上是这样).

但是当我在我的设备上尝试这个时,从LogCat(真的不能在模拟器上尝试),我得到以下错误:

Error 1:
ERROR/MediaRecorder(14541): start called in an invalid state: 4
java.lang.IllegalStateException: Could not execute method of the activity
Caused by: java.lang.reflect.InvocationTargetException

Error 2:
Caused by: java.io.FileNotFoundException: /sdcard/test.3gpp (Permission denied)
Run Code Online (Sandbox Code Playgroud)

我还在我的Manifest.xml文件中设置了以下权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

Sam*_*ley 8

傻错误在这里抱歉,它没有用,因为我把手机安装在我的笔记本电脑上所以它实际上无法到达SD卡.