├── audio ├── .gitignore ├── src │ ├── main │ │ ├── jnilibs │ │ │ ├── x86 │ │ │ │ ├── libspeex.so │ │ │ │ └── libspeexdsp.so │ │ │ ├── arm64-v8a │ │ │ │ ├── libspeex.so │ │ │ │ └── libspeexdsp.so │ │ │ ├── armeabi │ │ │ │ ├── libspeex.so │ │ │ │ └── libspeexdsp.so │ │ │ └── speex_include │ │ │ │ ├── speex_config_types.h │ │ │ │ ├── speexdsp_config_types.h │ │ │ │ ├── speex_buffer.h │ │ │ │ ├── speex_stereo.h │ │ │ │ ├── speex_types.h │ │ │ │ ├── speexdsp_types.h │ │ │ │ ├── speex_header.h │ │ │ │ ├── speex_callbacks.h │ │ │ │ ├── speex_echo.h │ │ │ │ ├── speex_bits.h │ │ │ │ ├── speex_jitter.h │ │ │ │ ├── speex_preprocess.h │ │ │ │ └── speex.h │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ └── styles.xml │ │ │ └── values-w820dp │ │ │ │ └── dimens.xml │ │ ├── java │ │ │ └── dev │ │ │ │ └── mars │ │ │ │ └── audio │ │ │ │ ├── AudioFrame.java │ │ │ │ ├── LogUtils.java │ │ │ │ ├── Common.java │ │ │ │ ├── SpeexUtils.java │ │ │ │ ├── AudioUtils.java │ │ │ │ └── NativeLib.java │ │ ├── AndroidManifest.xml │ │ └── jni │ │ │ ├── log.h │ │ │ ├── CMakeLists.txt │ │ │ └── opensl_io.h │ ├── test │ │ └── java │ │ │ └── dev │ │ │ └── mars │ │ │ └── audio │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── dev │ │ └── mars │ │ └── audio │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── callme ├── .gitignore ├── libs │ ├── mina-core-2.0.16.jar │ └── slf4j-api-1.7.21.jar ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ └── layout │ │ │ │ ├── activity_calling.xml │ │ │ │ ├── activity_on_call.xml │ │ │ │ ├── activity_communicating.xml │ │ │ │ └── activity_main.xml │ │ ├── java │ │ │ └── dev │ │ │ │ └── mars │ │ │ │ └── callme │ │ │ │ ├── event │ │ │ │ ├── SessionClosedEvent.java │ │ │ │ ├── StartCommunicatingEvent.java │ │ │ │ ├── CallingEvent.java │ │ │ │ └── OnCallEvent.java │ │ │ │ ├── remote │ │ │ │ ├── mina │ │ │ │ │ ├── client │ │ │ │ │ │ ├── ClientSessionStatus.java │ │ │ │ │ │ ├── ClientSessionState.java │ │ │ │ │ │ ├── ConnectedSessionState.java │ │ │ │ │ │ ├── ConnectingSessionState.java │ │ │ │ │ │ ├── ClosedSessionState.java │ │ │ │ │ │ └── MinaSocketClient.java │ │ │ │ │ ├── ISendListener.java │ │ │ │ │ ├── BaseCodecFactory.java │ │ │ │ │ ├── BaseEncoder.java │ │ │ │ │ ├── KeepAliveFilter.java │ │ │ │ │ ├── BaseDecoder.java │ │ │ │ │ └── server │ │ │ │ │ │ └── MinaSocketServer.java │ │ │ │ └── UDPUtils.java │ │ │ │ ├── base │ │ │ │ ├── BaseApplication.java │ │ │ │ └── BaseActivity.java │ │ │ │ ├── utils │ │ │ │ ├── BasicTypeConvertUtils.java │ │ │ │ ├── WifiUtils.java │ │ │ │ ├── LogUtils.java │ │ │ │ ├── IPUtils.java │ │ │ │ └── RingtonePlayer.java │ │ │ │ ├── bean │ │ │ │ ├── KeepAliveMessage.java │ │ │ │ ├── UDPMessage.java │ │ │ │ └── SocketMessage.java │ │ │ │ ├── common │ │ │ │ └── Constants.java │ │ │ │ ├── OnCallActivity.java │ │ │ │ ├── CallingActivity.java │ │ │ │ ├── MainActivity.java │ │ │ │ └── CommunicatingActivity.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── dev │ │ │ └── mars │ │ │ └── callme │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── dev │ │ └── mars │ │ └── callme │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── video ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ ├── dimens.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-hdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-mdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ └── ic_launcher.png │ │ │ ├── values-w820dp │ │ │ │ └── dimens.xml │ │ │ └── layout │ │ │ │ ├── activity_main.xml │ │ │ │ └── activity_video.xml │ │ ├── java │ │ │ └── mars │ │ │ │ └── dev │ │ │ │ └── video │ │ │ │ ├── BaseActivity.java │ │ │ │ ├── LogUtils.java │ │ │ │ ├── MainActivity.java │ │ │ │ └── VideoActivity.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── mars │ │ │ └── dev │ │ │ └── video │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── mars │ │ └── dev │ │ └── video │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── README.md ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── .gitattributes ├── gradle.properties ├── gradlew.bat └── gradlew /audio/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /callme/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /video/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # CallMe 2 | 局域网内语音通话研究,已完成基础部分,回声消除效果差,待优化 3 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':callme', ':audio', ':video' 2 | -------------------------------------------------------------------------------- /callme/libs/mina-core-2.0.16.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/libs/mina-core-2.0.16.jar -------------------------------------------------------------------------------- /callme/libs/slf4j-api-1.7.21.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/libs/slf4j-api-1.7.21.jar -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /video/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | video 3 | 4 | -------------------------------------------------------------------------------- /callme/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | CallMe 3 | 4 | -------------------------------------------------------------------------------- /audio/src/main/jnilibs/x86/libspeex.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/audio/src/main/jnilibs/x86/libspeex.so -------------------------------------------------------------------------------- /audio/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | openslesdemo 3 | 4 | -------------------------------------------------------------------------------- /audio/src/main/jnilibs/x86/libspeexdsp.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/audio/src/main/jnilibs/x86/libspeexdsp.so -------------------------------------------------------------------------------- /audio/src/main/jnilibs/arm64-v8a/libspeex.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/audio/src/main/jnilibs/arm64-v8a/libspeex.so -------------------------------------------------------------------------------- /audio/src/main/jnilibs/armeabi/libspeex.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/audio/src/main/jnilibs/armeabi/libspeex.so -------------------------------------------------------------------------------- /audio/src/main/jnilibs/armeabi/libspeexdsp.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/audio/src/main/jnilibs/armeabi/libspeexdsp.so -------------------------------------------------------------------------------- /video/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/video/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /video/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/video/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /audio/src/main/jnilibs/arm64-v8a/libspeexdsp.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/audio/src/main/jnilibs/arm64-v8a/libspeexdsp.so -------------------------------------------------------------------------------- /callme/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /callme/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /callme/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /callme/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /video/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/video/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /video/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/video/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /video/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/video/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /callme/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mars-ma/CallMe/HEAD/callme/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | /local.properties 4 | /.idea/workspace.xml 5 | /.idea/libraries 6 | .DS_Store 7 | /build 8 | /captures 9 | .externalNativeBuild 10 | /.idea 11 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/event/SessionClosedEvent.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.event; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2017/3/30. 5 | */ 6 | 7 | public class SessionClosedEvent { 8 | } 9 | -------------------------------------------------------------------------------- /audio/src/main/java/dev/mars/audio/AudioFrame.java: -------------------------------------------------------------------------------- 1 | package dev.mars.audio; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2017/3/31. 5 | */ 6 | 7 | public class AudioFrame { 8 | public byte[] data; 9 | } 10 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/event/StartCommunicatingEvent.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.event; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2017/3/30. 5 | */ 6 | 7 | public class StartCommunicatingEvent { 8 | } 9 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/event/CallingEvent.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.event; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2017/3/30. 5 | */ 6 | 7 | public class CallingEvent { 8 | public String ip; 9 | } 10 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/event/OnCallEvent.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.event; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2017/3/30. 5 | */ 6 | 7 | public class OnCallEvent { 8 | public String ip; 9 | } 10 | -------------------------------------------------------------------------------- /audio/src/main/jnilibs/speex_include/speex_config_types.h: -------------------------------------------------------------------------------- 1 | #ifndef __SPEEX_TYPES_H__ 2 | #define __SPEEX_TYPES_H__ 3 | typedef short spx_int16_t; 4 | typedef unsigned short spx_uint16_t; 5 | typedef int spx_int32_t; 6 | typedef unsigned int spx_uint32_t; 7 | #endif 8 | -------------------------------------------------------------------------------- /audio/src/main/jnilibs/speex_include/speexdsp_config_types.h: -------------------------------------------------------------------------------- 1 | #ifndef __SPEEX_TYPES_H__ 2 | #define __SPEEX_TYPES_H__ 3 | typedef short spx_int16_t; 4 | typedef unsigned short spx_uint16_t; 5 | typedef int spx_int32_t; 6 | typedef unsigned int spx_uint32_t; 7 | #endif -------------------------------------------------------------------------------- /audio/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /audio/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /callme/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /video/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /video/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 16dp 4 | 16dp 5 | 6 | -------------------------------------------------------------------------------- /callme/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Mon Dec 28 10:00:20 PST 2015 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-2.14.1-all.zip 7 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/remote/mina/client/ClientSessionStatus.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.remote.mina.client; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2017/3/29. 5 | */ 6 | 7 | public enum ClientSessionStatus { 8 | ClOSED, 9 | CONNECTED, 10 | CONNECTING 11 | } 12 | -------------------------------------------------------------------------------- /audio/src/main/java/dev/mars/audio/LogUtils.java: -------------------------------------------------------------------------------- 1 | package dev.mars.audio; 2 | 3 | import android.util.Log; 4 | 5 | /** 6 | * Created by ma.xuanwei on 2017/3/7. 7 | */ 8 | 9 | public class LogUtils { 10 | public static void DEBUG(String msg){ 11 | android.util.Log.d("dev_mars",msg); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /audio/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /audio/src/main/jni/log.h: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #ifndef ANDROID_OPENSLES_DEMO_LOG_H 4 | #define ANDROID_OPENSLES_DEMO_LOG_H 5 | 6 | #endif //ANDROID_OPENSLES_DEMO_LOG_H 7 | #define LOG_OPEN 1 8 | #if(LOG_OPEN==1) 9 | #define LOG(...) __android_log_print(ANDROID_LOG_DEBUG,"dev_mars",__VA_ARGS__) 10 | #else 11 | #define LOG(...) NULL 12 | #endif 13 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/base/BaseApplication.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.base; 2 | 3 | import android.app.Application; 4 | 5 | /** 6 | * Created by ma.xuanwei on 2017/3/30. 7 | */ 8 | 9 | public class BaseApplication extends Application { 10 | 11 | @Override 12 | public void onCreate() { 13 | super.onCreate(); 14 | } 15 | } 16 | -------------------------------------------------------------------------------- /audio/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /callme/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /video/src/main/res/values-w820dp/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 64dp 6 | 7 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/remote/mina/ISendListener.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.remote.mina; 2 | 3 | /** 4 | * Created by ma.xuanwei on 2016/12/13. 5 | */ 6 | 7 | public interface ISendListener { 8 | /** 9 | * 发送消息成功回调 10 | */ 11 | public void onSendSuccess(); 12 | 13 | /** 14 | * 发送消息失败 15 | * @param str 16 | */ 17 | public void onSendFailed(String str); 18 | } 19 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | 4 | # Custom for Visual Studio 5 | *.cs diff=csharp 6 | 7 | # Standard to msysgit 8 | *.doc diff=astextplain 9 | *.DOC diff=astextplain 10 | *.docx diff=astextplain 11 | *.DOCX diff=astextplain 12 | *.dot diff=astextplain 13 | *.DOT diff=astextplain 14 | *.pdf diff=astextplain 15 | *.PDF diff=astextplain 16 | *.rtf diff=astextplain 17 | *.RTF diff=astextplain 18 | -------------------------------------------------------------------------------- /audio/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /callme/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /video/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /audio/src/test/java/dev/mars/audio/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package dev.mars.audio; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /video/src/test/java/mars/dev/video/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package mars.dev.video; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /callme/src/test/java/dev/mars/callme/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/utils/BasicTypeConvertUtils.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.utils; 2 | 3 | /** 4 | * 处理基本类型间的转换 5 | * @author ma.xuanwei 6 | * 7 | */ 8 | public class BasicTypeConvertUtils { 9 | 10 | /** 11 | * 将字节数组转换为short 12 | * @param b 13 | * @return 14 | */ 15 | public static short byteToShort(byte[] b) { 16 | return (short) (((b[0] & 0xff) << 8) | (b[1] & 0xff)); 17 | } 18 | 19 | /** 20 | * 将字节数组转换为short 21 | * @param b1 低位字节对应高位 22 | * @param b2 高位字节对应低位 23 | * @return 24 | */ 25 | public static short byteToShort(byte b1,byte b2) { 26 | return (short) (((b1 & 0xff) << 8) | (b2 & 0xff)); 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /callme/src/main/java/dev/mars/callme/bean/KeepAliveMessage.java: -------------------------------------------------------------------------------- 1 | package dev.mars.callme.bean; 2 | 3 | 4 | import android.text.TextUtils; 5 | 6 | /** 7 | * 心跳包消息 8 | * body:{ "type":"0"} 9 | * @author ma.xuanwei 10 | * 11 | */ 12 | public class KeepAliveMessage extends SocketMessage { 13 | public KeepAliveMessage(){ 14 | setCommand((byte) -1); 15 | } 16 | 17 | @Override 18 | public boolean equals(Object o) { 19 | try{ 20 | SocketMessage other = (SocketMessage)o; 21 | return other.getCommand()==-1; 22 | }catch (Exception ex){ 23 | ex.printStackTrace(); 24 | } 25 | return false; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /audio/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in F:\IDE\AndroidSDK/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /video/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in D:\android_sdk/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /callme/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in F:\IDE\AndroidSDK/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /audio/src/main/java/dev/mars/audio/Common.java: -------------------------------------------------------------------------------- 1 | package dev.mars.audio; 2 | 3 | import android.os.Environment; 4 | 5 | /** 6 | * Created by 37550 on 2017/3/8. 7 | */ 8 | 9 | public class Common { 10 | public static final int SAMPLERATE = 8000; //bit/s 11 | public static final int CHANNELS = 2; //1:单/2:双声道 12 | public static final int PERIOD_TIME = 20; //ms 13 | public static final String DEFAULT_PCM_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/test_pcm.pcm"; 14 | public static final String DEFAULT_PCM_OUTPUT_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/output_pcm.pcm"; 15 | public static final String DEFAULT_SPEEX_FILE_PATH = Environment.getExternalStorageDirectory().getAbsolutePath()+"/test_speex.raw"; 16 | } 17 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | 14 | # When configured, Gradle will run in incubating parallel mode. 15 | # This option should only be used with decoupled projects. More details, visit 16 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 17 | # org.gradle.parallel=true 18 | -------------------------------------------------------------------------------- /video/src/main/res/layout/activity_main.xml: -------------------------------------------------------------------------------- 1 | 2 | 10 | 11 |