2016-08-09 2 views
0
import android.Manifest; 
import android.content.Context; 
import android.content.Intent; 
import android.graphics.drawable.ColorDrawable; 
import android.os.Bundle; 
import android.os.Environment; 
import android.support.v7.app.AppCompatActivity; 
import android.view.View; 
import android.widget.Toast; 
import java.io.File; 
import java.io.FileOutputStream; 
import java.util.Date; 
import cafe.adriel.androidaudiorecorder.AndroidAudioRecorder; 
import cafe.adriel.androidaudiorecorder.Util; 
import cafe.adriel.androidaudiorecorder.example.R; 

public class MainActivity extends AppCompatActivity 
{ 
    public static final String EXTRA_FILE_PATH = "filePath"; 

    public static final String EXTRA_COLOR = "color"; 
    static Date createdTime= new Date(); 
    public static final String AUDIO_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath() + "/" + createdTime + "_rec.wav"; 
    public static final int RECORD_AUDIO = 0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     if (getSupportActionBar() != null) { 
      getSupportActionBar().setBackgroundDrawable(
        new ColorDrawable(getResources().getColor(R.color.colorPrimaryDark))); 
     } 

     Util.requestPermission(this, Manifest.permission.RECORD_AUDIO); 
     Util.requestPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE); 
    } 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     if (requestCode == RECORD_AUDIO) { 
      if (resultCode == RESULT_OK) { 
       Toast.makeText(this, "Audio recorded successfully!", Toast.LENGTH_SHORT).show(); 
      } else if (resultCode == RESULT_CANCELED) { 
       Toast.makeText(this, "Audio was not recorded", Toast.LENGTH_SHORT).show(); 
      } 
     } 
    } 

    public void recordAudio(View v) { 
     AndroidAudioRecorder.with(this) 
       .setFilePath(AUDIO_FILE_PATH) 
       .setColor(getResources().getColor(R.color.recorder_bg)) 
       .setRequestCode(RECORD_AUDIO) 
       .record(); 
    } 
} 
+0

외부 메모리에 있습니다. SD 카드가 아닙니다. 그러나 그 parh에 파일 이름을 추가 한 것과 마찬가지로 폴더 이름을 먼저 추가 할 수 있습니다. – greenapps

+0

추가 된 폴더 이름이없는 경우이 작업이 실패합니다. – nosyjoe

답변

3

Android's default external storage folders 사용을 고려 (현재 파일에서 sdcard에 직접 저장하는)이

File path = Environment.getExternalStoragePublicDirectory(
    Environment.DIRECTORY_MUSIC); 

당신이 사용할 수 있습니다 같은 DIRECTORY_MUSICFile class constructor을 사용하여 SD 카드에 새 폴더를 만드십시오.

File audioFolder = new File(Environment.getExternalStorageDirectory(), 
    "newaudiofolder") 
if (!audioFolder.exists()) { 
    boolean success = audioFolder.mkdir() 
    if (success) { 
     // save the file 
    } 
} 
+0

SD 카드의 폴더가 아니라 외부 메모리의 폴더입니다. 함수 이름을보십시오. – greenapps

+0

일부 장치에는 sd 카드 슬롯이 없습니다. [Google Documenation] (https://developer.android.com/guide/topics/data/data-storage.html#filesExternal)에 따르면 외부 저장소는 이동식 저장 미디어 (예 : SD 카드) 또는 내부 (비 분리형) 저장 "- 나에게 그리고 원래의 포스터로, 외부 저장 장치가 올바른 선택 인 것처럼 보입니다. – nosyjoe

+0

SD 카드 슬롯이 없다면 확실히 SD 카드가 없습니다. 외부 메모리 만. OP가 SD 카드에 대해 말했습니다. – greenapps

관련 문제