/*
* Copyright (c) 2011 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license that can be found
* in the LICENSE file in the root of the source tree. An additional
* intellectual property rights grant can be found in the file PATENTS. All
* contributing project authors may be found in the AUTHORS file in the root of
* the source tree.
*/
/*
* VoiceEngine Android test application. It starts either auto test or acts like
* a GUI test.
*/
package org.webrtc.voiceengine.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.IOException;
import android.app.Activity;
import android.content.Context;
import android.media.AudioFormat;
import android.media.AudioManager;
import android.media.AudioRecord;
import android.media.AudioTrack;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Spinner;
import android.widget.TextView;
public class AndroidTest extends Activity {
private byte[] _playBuffer = null;
private short[] _circBuffer = new short[8000]; // can hold 50 frames
private int _recIndex = 0;
private int _playIndex = 0;
// private int _streamVolume = 4;
private int _maxVolume = 0; // Android max level (commonly 5)
// VoE level (0-255), corresponds to level 4 out of 5
private int _volumeLevel = 204;
private Thread _playThread;
private Thread _recThread;
private Thread _autotestThread;
private static AudioTrack _at;
private static AudioRecord _ar;
private File _fr = null;
private FileInputStream _in = null;
private boolean _isRunningPlay = false;
private boolean _isRunningRec = false;
private boolean _settingSet = true;
private boolean _isCallActive = false;
private boolean _runAutotest = false; // ENABLE AUTOTEST HERE!
private int _channel = -1;
private int _codecIndex = 0;
private int _ecIndex = 0;
private int _nsIndex = 0;
private int _agcIndex = 0;
private int _vadIndex = 0;
private int _audioIndex = 3;
private int _settingMenu = 0;
private int _receivePort = 9990;
private int _destinationPort = 9990;
private String _destinationIP = "192.168.1.103";
// "Build" settings
private boolean _playFromFile = false;
// Set to true to send data to native code and back
private boolean _runThroughNativeLayer = true;
private boolean enableSend = true;
private boolean enableReceive = true;
private boolean useNativeThread = false;
private SpeakerManager mSpeakerManager = null;
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mSpeakerManager = new SpeakerManager(this);
TextView tv = (TextView) findViewById(R.id.TextView01);
tv.setText("");
final EditText ed = (EditText) findViewById(R.id.EditText01);
ed.setWidth(200);
ed.setText(_destinationIP);
final Button buttonStart = (Button) findViewById(R.id.Button01);
buttonStart.setWidth(200);
if (_runAutotest) {
buttonStart.setText("Run test");
} else {
buttonStart.setText("Start Call");
}
// button.layout(50, 50, 100, 40);
buttonStart.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (_runAutotest) {
startAutoTest();
} else {
if (_isCallActive) {
if (stopCall() != -1) {
_isCallActive = false;
buttonStart.setText("Start Call");
}
} else {
_destinationIP = ed.getText().toString();
if (startCall() != -1) {
_isCallActive = true;
buttonStart.setText("Stop Call");
}
}
}
// displayTextFromFile();
// recordAudioToFile();
// if(!_playFromFile)
// {
// recAudioInThread();
// }
// playAudioInThread();
}
});
final Button buttonStop = (Button) findViewById(R.id.Button02);
buttonStop.setWidth(200);
buttonStop.setText("Close app");
buttonStop.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
if (!_runAutotest) {
ShutdownVoE();
}
// This call terminates and should close the activity
finish();
// playAudioFromFile();
// if(!_playFromFile)
// {
// stopRecAudio();
// }
// stopPlayAudio();
}
});
String ap1[] = {"EC off", "AECM"};
final ArrayAdapter<String> adapterAp1 = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
ap1);
String ap2[] =
{"NS off", "NS low", "NS moderate", "NS high",
"NS very high"};
final ArrayAdapter<String> adapterAp2 = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
ap2);
String ap3[] = {"AGC off", "AGC adaptive", "AGC fixed"};
final ArrayAdapter<String> adapterAp3 = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
ap3);
String ap4[] =
{"VAD off", "VAD conventional", "VAD high rate",
"VAD mid rate", "VAD low rate"};
final ArrayAdapter<String> adapterAp4 = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
ap4);
String codecs[] = {"iSAC", "PCMU", "PCMA", "iLBC"};
final ArrayAdapter<String> adapterCodecs = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
codecs);
final Spinner spinnerSettings1 = (Spinner) findViewById(R.id.Spinner01);
final Spinner spinnerSettings2 = (Spinner) findViewById(R.id.Spinner02);
spinnerSettings1.setMinimumWidth(200);
String settings[] =
{"Codec", "Echo Control", "Noise Suppression",
"Automatic Gain Control",
"Voice Activity Detection"};
ArrayAdapter<String> adapterSettings1 = new ArrayAdapter<String>(
this,
android.R.layout.simple_spinner_dropdown_item,
settings);
spinnerSettings1.setAdapter(adapterSettings1);
spinnerSettings1.setOnItemSelectedListener(
new AdapterView.OnItemSelectedListener() {
public void onItemSelected(AdapterView<?> adapterView, View view,
int position, long id) {
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
新版基于WebRTC的Android版音频引擎(VoiceEngine)源代码,修改了若干bugs,去除了时间限制,支持AGC/EC/NS,支持RTP/SRTP,支持iLBC/iSAC/PCMU/PCMA等,可以联系dotphoenix@qq.com获得帮助
资源推荐
资源详情
资源评论
收起资源包目录
webrtc_android.zip (91个子文件)
webrtc_android
bin
classes.dex 30KB
res
drawable
icon.png 2KB
jarlist.cache 119B
classes
org
webrtc
voiceengine
AudioDeviceAndroid.class 8KB
test
BuildConfig.class 363B
AndroidTest$2.class 3KB
SpeakerManager.class 1KB
R$layout.class 421B
AndroidTest$6.class 3KB
AndroidTest$3.class 2KB
R$id.class 579B
R$drawable.class 427B
AndroidTest$7.class 3KB
AndroidTest$1.class 722B
AndroidTest$4.class 2KB
R$attr.class 367B
R.class 594B
AndroidTest$8.class 1019B
AndroidTest.class 19KB
R$string.class 425B
AndroidTest$5.class 979B
.svn
all-wcprops 324B
props
tmp
props
text-base
AndroidTest.java.svn-base 39KB
entries 443B
.svn
all-wcprops 139B
props
tmp
props
entries 281B
.svn
all-wcprops 127B
props
tmp
props
entries 276B
.svn
all-wcprops 120B
props
tmp
props
entries 264B
.svn
all-wcprops 116B
props
tmp
props
entries 257B
resources.ap_ 5KB
org.webrtc.voiceengine.test.AndroidTest.apk 3.75MB
AndroidManifest.xml 1KB
res
drawable-ldpi
drawable-hdpi
drawable-xhdpi
drawable
icon.png 3KB
.svn
all-wcprops 268B
prop-base
icon.png.svn-base 53B
props
tmp
prop-base
props
text-base
text-base
icon.png.svn-base 3KB
entries 424B
values
strings.xml 657B
.svn
all-wcprops 270B
prop-base
props
tmp
prop-base
props
text-base
text-base
strings.xml.svn-base 657B
entries 415B
drawable-mdpi
layout
main.xml 2KB
.svn
all-wcprops 264B
prop-base
props
tmp
prop-base
props
text-base
text-base
main.xml.svn-base 2KB
entries 413B
.svn
all-wcprops 116B
prop-base
props
tmp
prop-base
props
text-base
text-base
entries 288B
assets
default.properties 407B
gen
org
webrtc
voiceengine
test
BuildConfig.java 169B
R.java 971B
Android.mk 758B
src
org
webrtc
voiceengine
test
AndroidTest.java 40KB
SpeakerManager.java 1KB
.svn
all-wcprops 324B
prop-base
props
tmp
prop-base
props
text-base
text-base
AndroidTest.java.svn-base 39KB
entries 443B
AudioDeviceAndroid.java 16KB
.svn
all-wcprops 139B
prop-base
props
tmp
prop-base
props
text-base
text-base
entries 281B
.svn
all-wcprops 127B
prop-base
props
tmp
prop-base
props
text-base
text-base
entries 276B
.svn
all-wcprops 120B
prop-base
props
tmp
prop-base
props
text-base
text-base
entries 264B
.svn
all-wcprops 116B
prop-base
props
tmp
prop-base
props
text-base
text-base
entries 257B
.project 875B
.classpath 364B
project.properties 562B
AndroidManifest.xml 1KB
libs
armeabi-v7a
gdbserver 122KB
libavutil.so 75KB
libswscale.so 140KB
liblincrypto.so 1.02MB
webrtc_audioproc_unittest 17KB
liblinphonenoneon.so 1.03MB
webrtc_isac_test 205KB
libsrtp.so 113KB
libavcore.so 15KB
libstlport_shared.so 386KB
gdb.setup 11KB
liblinssl.so 242KB
libavcodec.so 987KB
webrtc_ilbc_testLib 102KB
webrtc_ilbc_test 103KB
liblinphone.so 1.03MB
webrtc_audioproc 10KB
libwebrtc-voice-demo-jni.so 3.12MB
libavcodecnoneon.so 977KB
共 91 条
- 1
dotphoenix
- 粉丝: 197
- 资源: 72
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- stm32 usb接口通信
- Chessmate是一款完全免费的国际象棋学习软件,支持引擎分析,学开局、残局、棋书解读、大数据分析等功能
- 总结整理的Android面试Java基础知识点面试资料精编汇总文档资料合集.zip
- .android_lq
- FDN5632N-VB一款SOT23封装N-Channel场效应MOS管
- 毛老板-2404250902.amr
- Java类加载流程(双亲委派)流程图.zip
- FDN5632-NL-VB一款SOT23封装N-Channel场效应MOS管
- 新目标大学英语(第二版)视听说教程 第1册 Unit 4 TOP课件.zip
- 自动驾驶-状态估计和定位之Error State EKF.pdf
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页