gpt4 book ai didi

android - MediaRecorder,我无法在 SD 卡上写入

转载 作者:行者123 更新时间:2023-11-29 02:03:07 25 4
gpt4 key购买 nike

我想在 android 中录制语音,我尝试开发一个小应用程序进行测试,所以当我运行我的应用程序时它告诉我不能在 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();

}
});
}



}

然后我在 list 中添加权限:

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

另一件事是我创建了一个 SD 卡,然后通过以下方式将其添加到模拟器:-sdcard "[Path of sdcard]"那么问题是什么?

最佳答案

好吧,这段代码对我有用..所以可能是您在模拟器中配置错误。我使用 SDK 级别 15 (4.0.3)。

您可以尝试将 try block 替换为显示 Impossible, You can't write 的日志:

File repertoryStockage = Environment.getExternalStorageDirectory();
File sample = new File(repertoryStockage,"empty.txt");
try
{
sample.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}
if(!sample.canWrite()){

Log.e(LOG_TAG_ENREGISTREUR,"Impossible , you can't write");
return;
}
sample.delete();

我发现有些地方表明您无法检查目录的写权限。看到这个答案(代码主要来自那个答案):Checking for write access in a directory before creating files inside it

但正如我一开始所说,代码对我有效,无需任何更改。

关于android - MediaRecorder,我无法在 SD 卡上写入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532504/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com