我正在构建一个应用程序,它需要麦克风取消来自扬声器的任何声音。似乎这个问题几乎是一个在线阴谋,因为其他有完全相同问题的人在很长一段时间内都没有得到回应。
Android 的原生硬件加速 AcousticEchoCanceler 似乎不适用于大多数设备。在许多设备上进行的测试以及似乎可以正常工作的设备包括 Nexus 5 和 Moto X,而几乎所有测试的三星设备都无法去除背景声音。注意:所有测试的手机都返回 trueAcousticEchoCanceler.isAvailable()
然而,必须有一个解决方案,因为诸如 Skype 或 WhatsApp 之类的应用程序似乎会取消其应用程序上下文之外的声音,即扬声器上有呼叫并且麦克风会取消收到的任何反馈。
这个简化的录音应用程序将声音录制到文件中,然后在单击播放时播放。
主活动.java
public class MainActivity extends Activity {
Button startRec, stopRec, playBack;
int minBufferSizeIn;
AudioRecord audioRecord;
short[] audioData;
Boolean recording;
int sampleRateInHz = 48000;
private String TAG = "TAG";
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
startRec = (Button) findViewById(R.id.startrec);
stopRec = (Button) findViewById(R.id.stoprec);
playBack = (Button) findViewById(R.id.playback);
startRec.setOnClickListener(startRecOnClickListener);
stopRec.setOnClickListener(stopRecOnClickListener);
playBack.setOnClickListener(playBackOnClickListener);
playBack.setEnabled(false); …Run Code Online (Sandbox Code Playgroud)