オーディオの録音と再生音を同時に行う方法。バックグラウンドで実装するのに適したプロセスと、Thread または AsyncTask を使用するプロセスはどれですか? 新しいスレッドでサウンドを再生し、メインスレッドで録音しようとしましたが、一部のデバイスでメインスレッドが過負荷であるというエラーが発生するという問題があります。
記録されたバッファも必要なので、ネイティブのrocordningを使用する方が良いですか?
ネイティブ録音の使用例はありますか?
オーディオの録音と再生音を同時に行う方法。バックグラウンドで実装するのに適したプロセスと、Thread または AsyncTask を使用するプロセスはどれですか? 新しいスレッドでサウンドを再生し、メインスレッドで録音しようとしましたが、一部のデバイスでメインスレッドが過負荷であるというエラーが発生するという問題があります。
記録されたバッファも必要なので、ネイティブのrocordningを使用する方が良いですか?
ネイティブ録音の使用例はありますか?
次のカスタム クラスを使用できます。
package com.app.controller;
android.content.Context をインポートします。android.media.MediaPlayer をインポートします。android.media.MediaPlayer.OnPreparedListener をインポートします。android.net.Uri をインポートします。android.provider.SyncStateContract.Constants をインポートします。android.widget.Toast をインポートします。
public class MediaController は OnPreparedListener を実装します{
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;
}
}