当前位置:首页 » 安卓系统 » returnandroid

returnandroid

发布时间: 2025-01-29 15:46:43

Ⅰ 有人用过android 4.1的新API里的AcousticEchoCanceler 回声消除吗

下面简单的备忘下AcousticEchoCanceler的使用方法:

1)判断当前机型是否支持AEC,需要注意这里的检查不一定准确。

public static boolean isDeviceSupport()
{
return AcousticEchoCanceler.isAvailable();
}
2)初始化并使能AEC。

private AcousticEchoCanceler canceler;

public boolean initAEC(int audioSession)
{
if (canceler != null)
{
return false;
}
canceler = AcousticEchoCanceler.create(audioSession);
canceler.setEnabled(true);
return canceler.getEnabled();
}
3)使能/去使能AEC。

public boolean setAECEnabled(boolean enable)
{
if (null == canceler)
{
return false;
}
canceler.setEnabled(enable);
return canceler.getEnabled();
}
4)释放AEC。

public boolean release()
{
if (null == canceler)
{
return false;
}
canceler.setEnabled(false);
canceler.release();
return true;
}
AcousticEchoCanceler的初始化需要一个sessionid,下面简单的备忘下上层的调用方式:

1)初始化AudioRecord的时候需要处理第一个参数。

if (chkNewDev())
{
audioRecord = new AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, frequency, channelIN, audioEncoding, tmpSize);
}else
{
audioRecord = new AudioRecord(MediaRecorder.AudioSource.MIC, frequency, channelIN, audioEncoding, tmpSize);
}
2)初始化好audioRecord之后,就可以通过

audioRecord.getAudioSessionId()
获取到相应的sessionid。

3)初始化AudioTrack时,也需要额外的处理sessionid。

if (chkNewDev() && audioRecord != null)
{
audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, frequency, channelOUT, audioEncoding, tmpSize, AudioTrack.MODE_STREAM,audioRecord.getAudioSessionId());
}
else
{
audioTrack = new AudioTrack(AudioManager.STREAM_VOICE_CALL, frequency, channelOUT, audioEncoding, tmpSize, AudioTrack.MODE_STREAM);
}
另外,由于API的限制,需要考虑机型不匹配的情况:

public static boolean chkNewDev()
{
return android.os.Build.VERSION.SDK_INT >= 16;
}
权限:

<uses-permission android:name="android.permission.RECORD_AUDIO" />
总结:

1)android新版本增加的API AcousticEchoCanceler 可以非常快速的开发出符合VOIP性质的回声消除程序。但是考虑到各种机型适配,仍然需要第三方的回声消除程序。这里主要推荐两个:webrtc里面的AEC/AECM,speex。

作者成功的在项目中使用了webrtc里面的回声消除,感觉效果还可以。

2)作者编写的上述代码也只是根据官方的介绍编写的,由于资料较少,不能保证代码的正确性。
转载

Ⅱ android ontouch事件return true和return false的区别

1,return false说明你还没消费onTouch事件,在执行完你onTouch里面的代码之后,onTouch事件并没有结束。就是会自动地执行Gallery这个view里onTouch代码(这个为默认).所以这就是为什么没增加你的处理的时候就只自动地调用Gallery的onTouch,若你在onTouch里面增加你的代码并且return false就会执行你的处理和默认的处理。

2,return true说明你已经消费完了onTouch事件,在执行完你的onTouch里面的代码之后,这个onTouch事件就结束了。也就是说不会再调用默认的onTouch事件了。在onTouch里面有很多种的处理比如move,down,up....,若你在move里面return false,那么接着的fling,up等后面的事件也不会处理的。

Ⅲ android,return START_STICKY; ...super.handleMessage(msg);...何时需要屏蔽super();,,为啥呢

super()是调用父类的无参数构造方法。。。。。。。何时需要super,得看需求逻辑是不是调用父类的方法过程。

Ⅳ Android中判断是否有前置摄像头,后置摄像头的方法

下面的代码为一系列的方法,用来判断是否有前置摄像头(Front Camera),后置摄像头。
private static boolean checkCameraFacing(final int facing) {
if (getSdkVersion() < Build.VERSION_CODES.GINGERBREAD) {
return false;
}
final int cameraCount = Camera.getNumberOfCameras();
CameraInfo info = new CameraInfo();
for (int i = 0; i < cameraCount; i++) {
Camera.getCameraInfo(i, info);
if (facing == info.facing) {
return true;
}
}
return false;
}

public static boolean hasBackFacingCamera() {
final int CAMERA_FACING_BACK = 0;
return checkCameraFacing(CAMERA_FACING_BACK);
}
public static boolean hasFrontFacingCamera() {
final int CAMERA_FACING_BACK = 1;
return checkCameraFacing(CAMERA_FACING_BACK);
}
public static int getSdkVersion() {
return android.os.Build.VERSION.SDK_INT;
}
注意:由于getNumberOfCameras以及getCameraInfo均为API 9 引入,所以方法只适用于2.3及其以上。

Ⅳ android 如何用代码实现EditText控件中只能输入数字

数字<EditText
android:id="@+id/editText2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="number" />
带小数的数字 <EditText
android:id="@+id/editText3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal" />
电话号码的 <EditText
android:id="@+id/editText4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="phone" />

热点内容
图书馆的读者密码是多少 发布:2025-01-30 17:42:11 浏览:380
编译原理预测分析 发布:2025-01-30 17:34:04 浏览:318
php32位 发布:2025-01-30 17:28:48 浏览:483
linux配置mac地址 发布:2025-01-30 17:28:37 浏览:669
编译程序与解释程序的效率 发布:2025-01-30 17:21:20 浏览:970
des算法的java实现 发布:2025-01-30 16:52:04 浏览:544
建设银行如何找回登陆密码 发布:2025-01-30 16:18:03 浏览:232
匿名类java 发布:2025-01-30 16:02:52 浏览:338
编译原理界符的作用 发布:2025-01-30 15:59:08 浏览:692
手机的存储卡异常 发布:2025-01-30 15:55:53 浏览:62