当我使用代码时,我想创建一个语音识别应用程序。结果输入变为临时输入。如何保持数据输入不是暂时的,而是永久的?这意味着如果应用程序关闭,那么在重新打开应用程序时仍然会输入数据。
我的代码
private String getTempFilename() {
String filepath = Environment.getExternalStorageDirectory().getPath();
File file = new File(filepath, AUDIO_RECORDER_FOLDER);
if (!file.exists()) {
file.mkdirs();
}
File tempFile = new File(filepath, AUDIO_RECORDER_TEMP_FILE);
if (tempFile.exists())
tempFile.delete();
return (file.getAbsolutePath() + "/" + AUDIO_RECORDER_TEMP_FILE);
}
private void startRecording() {
recorder = new AudioRecord(MediaRecorder.AudioSource.DEFAULT,
RECORDER_SAMPLERATE, RECORDER_CHANNELS, RECORDER_AUDIO_ENCODING, bufferSize);
int i = recorder.getState();
if (i == 1)
recorder.startRecording();
isRecording = true;
recordingThread = new Thread(new Runnable() {
@Override
public void run() {
writeAudioDataToFile();
}
}, "AudioRecorder Thread");
recordingThread.start();
}
private void writeAudioDataToFile() {
byte data[] = new byte[bufferSize];
String filename = getTempFilename();
FileOutputStream os = null;
try {
os = new FileOutputStream(filename);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
int read = 0;
if (null != os) {
while (isRecording) {
read = recorder.read(data, 0, bufferSize);
if (AudioRecord.ERROR_INVALID_OPERATION != read) {
try {
os.write(data);
} catch (IOException e) {
e.printStackTrace();
}
}
}
try {
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
答案 0 :(得分:0)
关闭应用程序时,可以创建临时文件的虚拟副本。
例如在您的应用程序中,您现在拥有包含所有数据的文件 退出“onDestroy()”中的应用,您可以创建另一个 该文件的副本并使用它。
现在问题出现了,当用户第一次运行应用程序时会发生什么。
以下是的答案。您可以检查文件是否存在,然后从该文件中获取数据,否则不执行任何操作。