2012-01-18 111 views
0

我正在嘗試使用MediaRecorder將錄製的音頻從應用程序保存到存儲設備。Android文件訪問問題

當我使用內部存儲(/data/data/com.example.app/files)時,出現隨機MediaRecorder錯誤。通過將保存位置更改爲

String files_dir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myapp_audiofolder/"; 

這可以很好地工作,除了其他應用程序有權訪問此文件夾。例如,我的Google音樂應用程序在音樂列表中包含此文件夾中的音頻。

什麼是正確的方式來存儲這樣的數據,所以只有我的應用程序才能訪問它?

回答

1

Android文檔有專用於數據存儲的頁面,在這裏您可以找到有關使用internal storage to save application data的部分。只要您的Context.MODE_PRIVATE參數如所示,就像他們的示例中所示,只有您的應用能夠訪問該文件。

+0

我曾嘗試過使用此,但我遇到問題,因爲MeidaRecorder的setOutputFile()接受一個字符串參數。有沒有解決的辦法?這是一般[code](http://developer.android.com/guide/topics/media/audio-capture.html)我一直在關注 – jchmski 2012-01-18 17:17:01

+0

我查看了[MediaRecorder文檔](http:// developer .android.com/reference/android/media/MediaRecorder.html#setOutputFile(java.io.FileDescriptor)),它說你也可以用'FileDescriptor'調用'setOutputFile',所以你可以調用類似'setOutputFile fos.getFD())'(其中'fos'是我的答案中的'FileOutputStream') – 2012-01-18 17:22:55

+0

謝謝! getFD()做了訣竅。播放文件使用類似的格式:FileInputStream fis = openFileInput(filename);然後mplayer.setDataSource(fis.getFD()); – jchmski 2012-01-18 17:33:46