2016-08-12 9 views
1

私はオーディオを録音してスマートフォンのディスクに保存するために小さなAndroid Appを作成しました。今私はそれが間違った名前で間違った場所に保存され、なぜそれが見えないのかという問題を持っています。 (私はAndroidのプログラミングに新しい相対よ)Android 5+ファイルが「間違って」保存されました

public void startRecording(View view) { 
    File folder = new File(Environment.getExternalStorageDirectory() + "/" + R.string.app_name); 
    file_name = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + R.string.app_name; 

    if(!folder.exists()) { 
     boolean created = folder.mkdirs(); 
     if(!created) { Log.i(LOG_TAG, "Could not create folder/s."); return; } 
    } 

    if(editText.getText() != null) 
     file_name += editText.getText() + ".3gp"; 
    else 
     file_name += Calendar.getInstance().getTime() + ".3gp"; 

    outputFile = new File(file_name); 

    mediaRecorder = new MediaRecorder(); 
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    mediaRecorder.setOutputFile(file_name); 
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.HE_AAC); 

    Toast.makeText(CaptureActivity.this, R.string.toast_recording_start, Toast.LENGTH_SHORT).show(); 

    try { 
     mediaRecorder.prepare(); 
     mediaRecorder.start(); 
    } catch (IOException e) { 
     Log.e(LOG_TAG, "prepare() failed"); 
     Toast.makeText(CaptureActivity.this, R.string.toast_recording_failed, Toast.LENGTH_LONG).show(); 
     mediaRecorder = null; 
    } 
} 

ファイルはTrueCaptureというフォルダに保存する必要があり、ファイル自体はggj.3gpと呼ばれるべきです。 ファイルは内部ストレージに2131099680ggj.3gpの名前で保存されます。 次の問題があります。スマートフォンのエクスプローラアプリでしかファイルを見つけることができません。 PCはファイルを見つけることができず、他のアプリは見つかりません。


いくつかの詳細:

  • アンドロイド6
  • ファイル名が間違っている(代わりにggj.3gpの2131099680ggj.3gp)
  • ファイルはありません特定のフォルダの代わりに内部ストレージに保存されています"TrueCapture"という新しいフォルダに外部ストレージ(SDカードはスマートフォンにあります)
  • スマートフォンのエクスプローラアプリ以外のこのアプリについては、他のアプリが知りません

答えて

1

R.string.app_nameは、Rクラスのリソースに割り当てられたIDで、intです。

Stringリソースを取得するには、getString()メソッドをContextとします。

このような何かが動作するはず

String ext = ".3gp"; 

File folder = new File(Environment.getExternalStorageDirectory() + "/" + getString(R.string.app_name)); 
if(!folder.exists()) { 
    folder.mkdirs(); 
} 

file_name = folder.getAbsolutePath() + "/"; 

if(editText.getText().length() > 0) { 
    file_name += editText.getText().toString() + ext; 
} else { 
    file_name += Calendar.getInstance().getTimeInMillis() + ext; 
} 

File outputFile = new File(file_name); 

// ... 

あなたはまた、あなたのマニフェストにWRITE_EXTERNAL_STORAGE許可を追加する必要があります。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
関連する問題