2
나는 안드로이드에 음성을 녹음하고 테스트를 위해 작은 응용 프로그램을 개발하려고한다. 그래서 나는 내 응용 프로그램을 실행하여 sdcard에 쓸 수 없다고 말했다. 그래서 거기에 내 코드입니다 :MediaRecorder, SDcard에 쓸 수 없다.
public class MainActivity extends Activity {
private static final String LOG_TAG_ENREGISTREUR = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button record_btn = (Button)findViewById(R.id.button1);
Button stop_btn = (Button)findViewById(R.id.button2);
File fileRecord = null;
final MediaRecorder media = new MediaRecorder();
String state = android.os.Environment.getExternalStorageState();
if(!state.equals(android.os.Environment.MEDIA_MOUNTED)){
Log.e(LOG_TAG_ENREGISTREUR,"SDcard not found!");
return;
}
File repertoryStockage = Environment.getExternalStorageDirectory();
if(!repertoryStockage.canWrite()){
Log.e(LOG_TAG_ENREGISTREUR,"Impossible , you can't write");
return;
}
try {
fileRecord = File.createTempFile("RecordingAudio", ".mp4",repertoryStockage);
} catch (Exception e) {
Log.e(LOG_TAG_ENREGISTREUR,"Probleme E/S before recording");
return;
}
media.setAudioSource(MediaRecorder.AudioSource.MIC);
media.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
media.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
media.setOutputFile(fileRecord.getAbsolutePath());
record_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
try {
media.prepare();
} catch (IllegalStateException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
media.start();
}
});
stop_btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
media.stop();
media.release();
}
});
}
}
그리고 난 매니페스트에 권한을 추가 :
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
타 것은 내가 SD 카드를 작성하고 내가 의해 에뮬레이터에 추가 : -sdcard "[SDCARD의 경로] " 그래서 문제가 무엇입니까?
DDMS> mnt> sdcard를 확인했는데 쓰거나 읽을 수있는 권한이 없으므로 변경 방법을 알고 있습니까? 나는 이것이 문제라고 생각한다 – NMNM
오, 당신의 대답을 고맙다. 문제는 내가 "퍼미션없이 SDCARD"라고하기 때문에 나는 이것을 [link] (http://android-tricks.blogspot.com/2009/01/)했다. mount-filesystem-read-write.html), 그리고 문제를 해결했습니다. – NMNM
다행이었습니다. –