0

私はthisライブラリを使用して私のアプリでオーディオを録音しています。ここで'onActivityResult()'から録音したオーディオファイルを再生するには?

は私のコードです:

recordDefectAudio.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
     if (ContextCompat.checkSelfPermission(getBaseContext(), 
       android.Manifest.permission.RECORD_AUDIO) + ContextCompat.checkSelfPermission(getBaseContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { 

      ActivityCompat.requestPermissions(MainActivity.this, 
        new String[]{android.Manifest.permission.RECORD_AUDIO, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
        MY_PERMISSIONS_REQUEST_LOCATION); 

     } 
     if (ContextCompat.checkSelfPermission(getBaseContext(), Manifest.permission.RECORD_AUDIO) + 
       ContextCompat.checkSelfPermission(getBaseContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE) 
       == PackageManager.PERMISSION_GRANTED) { 

      String filePath = Environment.getExternalStorageDirectory() + "/recorded_audio.wav"; 
      int color = getResources().getColor(R.color.colorPrimaryDark); 
      AndroidAudioRecorder.with(MainActivity.this) 
        // Required 
        .setFilePath(filePath) 
        .setColor(color) 
        .setRequestCode(RECORD_PRODUCT_DAMAGE) 

        // Optional 
        .setSource(AudioSource.MIC) 
        .setChannel(AudioChannel.STEREO) 
        .setSampleRate(AudioSampleRate.HZ_48000) 
        .setAutoStart(true) 
        .setKeepDisplayOn(true) 

        // Start recording 
        .record(); 
     } 
    } 
}); 

、ここではonActivityResult()のコードです:

protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     if (requestCode == RECORD_PRODUCT_DAMAGE) { 
      if (resultCode == RESULT_OK) { 
       // Great! User has recorded and saved the audio file 
       Toast.makeText(this, "Audio recorded successfully!", Toast.LENGTH_SHORT).show(); 
       playRecordedAudio.setVisibility(View.VISIBLE); 
       recordAgain.setVisibility(View.VISIBLE); 
       recordDefectAudio.setVisibility(View.INVISIBLE); 
      } else if (resultCode == RESULT_CANCELED) { 
       // Oops! User has canceled the recording 
       Toast.makeText(this, "Audio was not recorded", Toast.LENGTH_SHORT).show(); 
      } 

     } 
    } 

私が知りたいすべてが、私はonActivityResult()から音声ファイルを再生することができますどのようにするか、または他がありますこのオーディオを再生する方法は?

お知らせください。

+0

「Medi aPlayer'クラスは、onActivityの結果でオーディオファイルを再生する – Redman

+0

いくつかのコードは本当に役に立ちます、@Redman –

答えて

0
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == RECORD_PRODUCT_DAMAGE) { 
     if (resultCode == RESULT_OK) { 
      // Great! User has recorded and saved the audio file 
      Toast.makeText(this, "Audio recorded successfully!", Toast.LENGTH_SHORT).show(); 
      playRecordedAudio.setVisibility(View.VISIBLE); 
      recordAgain.setVisibility(View.VISIBLE); 
      recordDefectAudio.setVisibility(View.INVISIBLE); 

    String realPath = null; 
    Uri uriPath = null; 
    realPath = getPathForAudio(YourActivity.this, data.getData()); 
    uriPath = Uri.fromFile(new File(realPath)); 
    try{ 
    MediaPlayer mp = MediaPlayer.create(context, uriPath); 
    mp.start(); 
    }catch(NullPointerException e) { 
    // handle NullPointerException 
    } 
     } else if (resultCode == RESULT_CANCELED) { 
      // Oops! User has canceled the recording 
      Toast.makeText(this, "Audio was not recorded", Toast.LENGTH_SHORT).show(); 
     } 

    } 
} 

そして、意図データから音声ファイルへのパスを取得し、onActivityResult()に書き込み、音声ファイルを再生するにはif (resultCode == RESULT_OK)を以下のコードをオーディオファイルパス

public static String getPathForAudio(Context context, Uri uri) 
{ 
    String result = null; 
    Cursor cursor = null; 

    try { 
    String[] proj = { MediaStore.Audio.Media.DATA }; 
    cursor = context.getContentResolver().query(uri, proj, null, null, null); 
    if (cursor == null) { 
     result = uri.getPath(); 
    } else { 
     cursor.moveToFirst(); 
     int column_index = cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DATA); 
     result = cursor.getString(column_index); 
     cursor.close(); 
    } 
} 
catch (Exception e) 
{ 
    e.printStackTrace(); 
} 
finally { 
    if (cursor != null) { 
     cursor.close(); 
    } 
} 
return result; 
} 
+0

メソッド 'getPathForAudio()'を解決できず、 'R.raw.closer'は何ですか? –

+0

これを削除してください...更新の回答を確認してください – sasikumar

+0

'getPathForAudio()'は未解決です。 –

0

使用のMediaPlayerを取得

MediaPlayer mp=new MediaPlayer(); 
    try{ 
     mp.setDataSource("/sdcard/Music/maine.mp3");//path to your audio file here 
     mp.prepare(); 
     mp.start(); 

    }catch(Exception e){e.printStackTrace();} 

} 

詳細はthisを参照

関連する問題