2017-04-25 6 views
0

コードを使用すると、音声認識アプリを作成したいと考えています。結果の入力は一時的になります。一時的ではなく永続的なデータ入力を維持するには?つまり、アプリケーションが閉じられても、そこに入力されたデータは、アプリケーションが再オープンされた時点です。データの入力を一時的ではなく永続的に保つ方法はありますか?

私のコード

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

+0

@AndyDeveloper SharedPreferencesは巨大なオーディオファイルを格納するためのものではありません。これは* preferences *のためです。彼はそれをファイルや何かに書いて、おそらくシステム上のファイルのデータベースを管理しておくべきです。 – Michael

+0

@Michaelはいそうです。それが私が投稿を削除した理由です。 :)私はちょうどコードを表示していないテキストを読んでいます。そのために残念。 –

+0

@マイケル私の答えを見てそれは間違っているか間違っているあなたの提案を教えてください? –

答えて

0

あなたがアプリケーションを閉じたときにあなたの一時ファイルのダミーコピーを作成することができます。

たとえば、あなたのアプリケーションでは、 の"onDestroy()"のアプリケーションを終了すると、そのファイルの別の コピーを作成して使用することができます。

ここでは、ユーザーが最初にアプリを実行したときに何が起こるかを心配します。

これは、の答えです。ファイルが存在していることを確認して、そのファイルからデータを取得します。それ以外は何も行いません。

+0

サンプルコードを教えていただけますか? PCで開いたときに生成された入力データは表示されないため、電話エクスプローラで開いた場合 –

関連する問題