【发布时间】:2016-11-09 16:37:00
【问题描述】:
我有一个代码检查文件夹中定义的音频文件类型并调用转换器来更改其格式。现在,当第一个文件通过时,转换器被调用,并且由于文件正在转换过程中,for 循环再次为第二个文件调用转换器。在这我觉得早/晚的过程被终止,因此我只得到文件转换为输出。代码在这里。我怎样才能设法获得所有文件的转换。
public void convertAudio(View v) {
final File pathanme = new File(Environment.getExternalStorageDirectory() + "/sdcard/test");
File files[] = pathanme.listFiles();
for (File f : files) {
if (f.getName().endsWith(".mp4")) {
String filename = f.getName().toLowerCase().toString();
System.out.println(filename);
File wavFile = new File(pathanme, filename);
IConvertCallback callback = new IConvertCallback() {
@Override
public void onSuccess(File convertedFile) {
Toast.makeText(NewMainActivity.this, "SUCCESS: " + convertedFile.getPath(), Toast.LENGTH_LONG).show();
}
@Override
public void onFailure(Exception error) {
Toast.makeText(NewMainActivity.this, "ERROR: " + error.getMessage(), Toast.LENGTH_LONG).show();
}
};
Toast.makeText(this, "Converting audio file..." + filename, Toast.LENGTH_SHORT).show();
AndroidAudioConverter.with(this)
.setFile(wavFile)
.setFormat(AudioFormat.MP3)
.setCallback(callback)
.convert();
}
}
如果您看到有针对转换的成功消息,而我从未在 for 循环下得到此消息,而如果我只传递一个文件,我会收到成功消息。请指教。
【问题讨论】:
-
请联系库的作者以支持多个文件或做一些信号量(基本的多线程同步概念),这将不允许
convert()在没有完成之前的工作的情况下调用 -
人们如此热衷于将初学者的问题降级而不是支持。我现在不敢在这里问。
-
人们在做一些研究之前都懒得问...
-
这是你的看法,你有没有检查我的搜索日志,在询问之前花在研究或寻找解决方案上的时间。如果你不喜欢这些愚蠢的问题,我要求不要评论他们
标签: java android file audio-converter