0

동시에 오디오를 녹음하고 사운드를 재생하는 방법. 어떤 프로세스가 백그라운드에서 구현하는 것이 더 낫고 Thread 또는 AsyncTask를 사용해야합니까? 나는 새로운 스레드에서 소리를 재생하려고 시도하고 주 스레드에서 녹음하지만 일부 장치에서 나는 주 스레드가 과부하라는 오류가 발생한다.Android에서 오디오를 재생하고 동시에 오디오 녹음하기

녹음 된 버퍼가 필요하기 때문에 기본 rocordning을 사용하는 것이 더 낫습니까?

누구나 네이티브 레코딩 사용 방법에 대한 예제가 있습니까?

답변

0

당신은 다음과 같은 사용자 정의 클래스를 사용할 수 있습니다 : -

package com.app.controller; 

수입 android.content.Context을; 가져 오기 android.media.MediaPlayer; 가져 오기 android.media.MediaPlayer.OnPreparedListener; import android.net.Uri; 가져 오기 android.provider.SyncStateContract.Constants; import android.widget.Toast;

공용 클래스를 MediaController는 {

public MediaController() { 
    // TODO Auto-generated constructor stub 
} 

public MediaPlayer mp; 

public void getMediaPlayObject() { 

    try { 
     System.out.println("00000000000000"); 
     mp = new MediaPlayer(); 

     System.out.println("2222222222"); 
    } catch (Exception e) { 
     // TODO: handle exception 
     System.out.println("exception in audia player====" + e.toString()); 
    } 
} 

public void onPrepared(MediaPlayer player) { 
    mp.start(); 
} 

boolean WORKING = true; 

public void mediaPlayStart(final Context m_Context) { 
    try { 
     mp = new MediaPlayer(); 

     mp.setDataSource(m_Context, Uri.parse(Contants.audioURL_OR_PATH)); 
     mp.prepare(); 
     mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 
     mp.setLooping(true); 



    } catch (Exception e) { 
     // TODO: handle exception 
     Toast.makeText(m_Context, "Service unavailable this time. Please try again!", Toast.LENGTH_LONG).show(); 
     System.out.println("#####THE EXCEPTION IN THE MEDIA PLAYER PLAY==="+e.getMessage()); 
    } 
} 

public void mediaPlayStop() { 
    try { 
     if (mp.isPlaying()) { 
      mp.stop(); 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 
} 

private static String getSoundPath(int countPositiong) { 
    // TODO Auto-generated method stub 

    String aa = ""; 

    try { 
     if (countPositiong < 10) { 
      aa = "sounds/00" + countPositiong + ".mp4"; 
     } else if (countPositiong < 100) { 
      aa = "sounds/0" + countPositiong + ".mp4"; 
     } else { 
      aa = "sounds/" + countPositiong + ".mp4"; 
     } 
    } catch (Exception e) { 
     // TODO: handle exception 
    } 
    System.out.println("name is : " + aa); 
    return aa; 

} 

}

OnPreparedListener를 구현