コードを使用すると、音声認識アプリを作成したいと考えています。結果の入力は一時的になります。一時的ではなく永続的なデータ入力を維持するには?つまり、アプリケーションが閉じられても、そこに入力されたデータは、アプリケーションが再オープンされた時点です。データの入力を一時的ではなく永続的に保つ方法はありますか?
私のコード
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();
}
}
}
@AndyDeveloper SharedPreferencesは巨大なオーディオファイルを格納するためのものではありません。これは* preferences *のためです。彼はそれをファイルや何かに書いて、おそらくシステム上のファイルのデータベースを管理しておくべきです。 – Michael
@Michaelはいそうです。それが私が投稿を削除した理由です。 :)私はちょうどコードを表示していないテキストを読んでいます。そのために残念。 –
@マイケル私の答えを見てそれは間違っているか間違っているあなたの提案を教えてください? –