如何保持数据输入不是暂时的,而是永久的?

时间:2017-04-25 11:54:35

标签: java android speech-recognition cmusphinx

当我使用代码时,我想创建一个语音识别应用程序。结果输入变为临时输入。如何保持数据输入不是暂时的,而是永久的?这意味着如果应用程序关闭,那么在重新打开应用程序时仍然会输入数据。

我的代码

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();
            }
        }
    }

完整codeMainActivity

1 个答案:

答案 0 :(得分:0)

关闭应用程序时,可以创建临时文件的虚拟副本。

  

例如在您的应用程序中,您现在拥有包含所有数据的文件   退出“onDestroy()”中的应用,您可以创建另一个   该文件的副本并使用它。

现在问题出现了,当用户第一次运行应用程序时会发生什么。

以下是的答案。您可以检查文件是否存在,然后从该文件中获取数据,否则不执行任何操作。