如何同时录制音频和播放声音。哪个进程最好在后台实现,使用什么线程或异步任务?我曾尝试在新线程中播放声音并在主线程上录制,但我遇到的问题是在某些设备上我收到主线程过载的错误。
使用本机 rocordning 是否更好,因为我还需要记录缓冲区?
有没有人有任何例子如何使用本机录音?
如何同时录制音频和播放声音。哪个进程最好在后台实现,使用什么线程或异步任务?我曾尝试在新线程中播放声音并在主线程上录制,但我遇到的问题是在某些设备上我收到主线程过载的错误。
使用本机 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;
公共类 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;
}
}