Merge remote-tracking branch 'public/master' into obiane
3
.gitignore
vendored
|
|
@ -14,6 +14,7 @@ default.properties
|
|||
doc
|
||||
gen
|
||||
liblinphone-junit-report.xml
|
||||
liblinphone-sdk
|
||||
liblinphonetester_*.zip
|
||||
libs
|
||||
linphone-android.iml
|
||||
|
|
@ -21,6 +22,7 @@ linphone-junit-report*.xml
|
|||
linphonetester_*.zip
|
||||
lint.xml
|
||||
local.properties
|
||||
Makefile
|
||||
obj
|
||||
proguard-project.txt
|
||||
project.properties
|
||||
|
|
@ -42,3 +44,4 @@ liblinphone_tester/liblinphonetester_*
|
|||
liblinphone_tester/tests.output
|
||||
tests/linphonetester_*
|
||||
tests/tests.output
|
||||
WORK
|
||||
|
|
|
|||
20
.gitmodules
vendored
|
|
@ -62,9 +62,6 @@
|
|||
[submodule "submodules/externals/axmlrpc"]
|
||||
path = submodules/externals/axmlrpc
|
||||
url = git://git.linphone.org/axmlrpc.git
|
||||
[submodule "submodules/externals/polarssl"]
|
||||
path = submodules/externals/polarssl
|
||||
url = git://git.linphone.org/polarssl.git
|
||||
[submodule "submodules/externals/opus"]
|
||||
path = submodules/externals/opus
|
||||
url = git://git.linphone.org/opus.git
|
||||
|
|
@ -86,4 +83,19 @@
|
|||
url = git://git.linphone.org/bctoolbox.git
|
||||
[submodule "submodules/externals/mbedtls"]
|
||||
path = submodules/externals/mbedtls
|
||||
url = https://github.com/ARMmbed/mbedtls.git
|
||||
url = git://git.linphone.org/mbedtls.git
|
||||
[submodule "submodules/cmake-builder"]
|
||||
path = submodules/cmake-builder
|
||||
url = git://git.linphone.org/linphone-cmake-builder.git
|
||||
[submodule "submodules/externals/bv16-floatingpoint"]
|
||||
path = submodules/externals/bv16-floatingpoint
|
||||
url = git://git.linphone.org/bv16-floatingpoint.git
|
||||
[submodule "submodules/belr"]
|
||||
path = submodules/belr
|
||||
url = git://git.linphone.org/belr.git
|
||||
[submodule "submodules/belcard"]
|
||||
path = submodules/belcard
|
||||
url = git://git.linphone.org/belcard.git
|
||||
[submodule "submodules/externals/libmatroska-c"]
|
||||
path = submodules/externals/libmatroska-c
|
||||
url = git://git.linphone.org/libmatroska-c
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="org.linphone"
|
||||
|
||||
android:versionCode="1002" android:installLocation="auto">
|
||||
android:versionCode="3100" android:installLocation="auto">
|
||||
<uses-sdk android:minSdkVersion="14" android:targetSdkVersion="23"/>
|
||||
|
||||
<!-- Permissions for Push Notification -->
|
||||
|
|
@ -109,7 +109,6 @@
|
|||
|
||||
<activity android:name=".CallActivity"
|
||||
android:theme="@style/FullScreen"
|
||||
android:noHistory="true"
|
||||
android:launchMode="singleTop">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
|
|
@ -221,6 +220,13 @@
|
|||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
<activity android:name="org.linphone.tutorials.TutorialCardDavSync"
|
||||
android:theme="@style/NoTitle">
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.MAIN" />
|
||||
</intent-filter>
|
||||
</activity>
|
||||
|
||||
</application>
|
||||
|
||||
|
|
|
|||
534
Makefile
|
|
@ -1,534 +0,0 @@
|
|||
NDK_PATH=$(shell dirname `which ndk-build`)
|
||||
NDK_MAJOR_VERSION=$(shell cat $(NDK_PATH)/RELEASE.TXT | sed "s/r\([0-9]\{1,2\}\).*/\1/")
|
||||
SDK_PATH=$(shell dirname `which android`)
|
||||
SDK_PLATFORM_TOOLS_PATH=$(shell dirname `which adb`)
|
||||
ARM_COMPILER_PATH=`find "$(NDK_PATH)" -name "arm-linux-androideabi-gcc-4*" -print | tail -1`
|
||||
ARM_TOOLCHAIN_PATH=$(shell dirname $(ARM_COMPILER_PATH))/arm-linux-androideabi-
|
||||
X86_COMPILER_PATH=`find "$(NDK_PATH)" -name "i686-linux-android-gcc-4*" -print | tail -1`
|
||||
X86_TOOLCHAIN_PATH=$(shell dirname $(X86_COMPILER_PATH))/i686-linux-android-
|
||||
NUMCPUS=$(shell grep -c '^processor' /proc/cpuinfo 2>/dev/null || echo "4" )
|
||||
TOPDIR=$(shell pwd)
|
||||
LIBLINPHONE_VERSION=$(shell cd submodules/linphone && git describe --always)
|
||||
LINPHONE_ANDROID_DEBUG_VERSION=$(shell git describe --always)
|
||||
BELLESIP_VERSION_SCRIPT:=cat submodules/belle-sip/configure.ac | grep "AC_INIT(" | sed -e "s/.*belle-sip\]//" | sed -e "s/].*//" | sed -e "s/.*\[//"
|
||||
BELLESIP_VERSION=$(shell $(BELLESIP_VERSION_SCRIPT))
|
||||
ANDROID_MOST_RECENT_TARGET=$(shell android list target -c | grep -E 'android-[0-9]+' | tail -n1)
|
||||
#We force target 19 because 21 creates binaries incompatible with older versions due to rand() function no longer inline (congrats to Google's developers)
|
||||
NDKBUILD_TARGET=android-19
|
||||
#The NDK target used to compile external third parties (ffmpeg, x264)
|
||||
EXTERNAL_MAKE_TARGET=14
|
||||
ARM_SYSROOT=${NDK_PATH}/platforms/android-$(EXTERNAL_MAKE_TARGET)/arch-arm
|
||||
X86_SYSROOT=${NDK_PATH}/platforms/android-$(EXTERNAL_MAKE_TARGET)/arch-x86
|
||||
SQLITE_VERSION=3071700
|
||||
SQLITE_BASENAME=sqlite-amalgamation-$(SQLITE_VERSION)
|
||||
SQLITE_URL=http://www.sqlite.org/2013/$(SQLITE_BASENAME).zip
|
||||
ENABLE_GPL_THIRD_PARTIES=1
|
||||
#override CC variable to disable compiler specific FLAGS in configure using the system compiler instead of the android one
|
||||
CC=
|
||||
PACKAGE_NAME=$(shell sed -nE 's|<property name="linphone.package.name" value="(.*)" />|\1|p' custom_rules.xml)
|
||||
#default options, can be overidden using make OPTION=value .
|
||||
|
||||
ifeq ($(ENABLE_GPL_THIRD_PARTIES),1)
|
||||
BUILD_G729=1
|
||||
else
|
||||
#x264 and g729 requires additional licensing agreements.
|
||||
BUILD_X264=0
|
||||
BUILD_G729=0
|
||||
endif
|
||||
|
||||
NDK_DEBUG=0
|
||||
BUILD_VIDEO=1
|
||||
BUILD_OPENH264=1
|
||||
BUILD_NON_FREE_CODECS=1
|
||||
ENABLE_OPENH264_DECODER=1
|
||||
BUILD_UPNP=1
|
||||
BUILD_AMRNB=full # 0, light or full
|
||||
BUILD_AMRWB=0 # Has text relocation issue, don't use when targetting API 23 for now
|
||||
BUILD_ZRTP=1
|
||||
BUILD_SILK=1
|
||||
BUILD_TUNNEL=0
|
||||
BUILD_WEBRTC_AECM=1
|
||||
BUILD_OPUS=1
|
||||
BUILD_MATROSKA=1
|
||||
BUILD_WEBRTC_ISAC=1
|
||||
BUILD_FOR_X86=1
|
||||
BUILD_FOR_ARM=1
|
||||
USE_JAVAH=1
|
||||
BUILD_TLS=1
|
||||
BUILD_SQLITE=1
|
||||
BUILD_CONTACT_HEADER=0
|
||||
BUILD_RTP_MAP=0
|
||||
BUILD_DONT_CHECK_HEADERS_IN_MESSAGE=0
|
||||
BUILD_ILBC=1
|
||||
BUILD_CODEC2=0
|
||||
BUILD_BCTOOLBOX_MBEDTLS=0
|
||||
LIBLINPHONE_EXTENDED_SRC_FILES=
|
||||
LIBLINPHONE_EXTENDED_C_INCLUDES=
|
||||
LIBLINPHONE_EXTENDED_CFLAGS=
|
||||
APP_STL=stlport_static
|
||||
ANT_SILENT=$(shell ant -h | grep -q -- -S && echo 1 || echo 0)
|
||||
|
||||
# Checks
|
||||
CHECK_MSG=$(shell ./check_tools.sh)
|
||||
|
||||
ifneq ($(CHECK_MSG),)
|
||||
$(error Some tools are missing.)
|
||||
else
|
||||
ifeq ($(BUILD_OPENH264),1)
|
||||
ifneq ($(shell echo $(NDK_MAJOR_VERSION)\>=10 | bc),1)
|
||||
$(error ndk version [$(NDK_MAJOR_VERSION)] not compatible with openh264.)
|
||||
endif
|
||||
endif
|
||||
include check_tools.mk
|
||||
endif
|
||||
|
||||
OPENSSL_DIR=$(shell openssl version -d | sed "s/OPENSSLDIR: \"\(.*\)\"/\1/")
|
||||
ifneq ($(shell ls $(OPENSSL_DIR)/certs),)
|
||||
HTTPS_CA_DIR=$(OPENSSL_DIR)/certs
|
||||
else
|
||||
HTTPS_CA_DIR=$(OPENSSL_DIR)
|
||||
endif
|
||||
|
||||
ifeq ($(ANT_SILENT), 1)
|
||||
ANT=ant -e -S
|
||||
else
|
||||
ANT=ant -e
|
||||
endif
|
||||
|
||||
# Temporary check: in case of MediastreamActivity.java file existing while it should not anymore, print an error message
|
||||
# and abort build since otherwise java compilation will fail.
|
||||
ifneq ($(shell ls ./submodules/linphone/mediastreamer2/java/src/org/linphone/mediastream/MediastreamerActivity.java 2>/dev/null),)
|
||||
$(error ./submodules/linphone/mediastreamer2/java/src/org/linphone/mediastream/MediastreamerActivity.java found: please either remove it or move it to MediastreamActivity.java.ignored before continuing.)
|
||||
endif
|
||||
|
||||
ifeq ($(BUILD_NON_FREE_CODECS), 0)
|
||||
BUILD_OPENH264=0
|
||||
ENABLE_OPENH264_DECODER=0
|
||||
BUILD_AMRNB=0
|
||||
BUILD_AMRWB=0
|
||||
BUILD_G729=0
|
||||
BUILD_X264=0
|
||||
endif
|
||||
|
||||
all: update-project generate-apk
|
||||
ifeq ($(ENABLE_GPL_THIRD_PARTIES),1)
|
||||
@echo "***************************************************************************"
|
||||
@echo "***** CAUTION, this liblinphone SDK is built using 3rd party GPL code *****"
|
||||
@echo "***** Even if you acquired a proprietary license from Belledonne *****"
|
||||
@echo "***** Communications, this SDK is GPL and GPL only. *****"
|
||||
@echo "***** To disable 3rd party gpl code, please use: *****"
|
||||
@echo "***** $$ make ENABLE_GPL_THIRD_PARTIES=0 *****"
|
||||
@echo "***************************************************************************"
|
||||
else
|
||||
@echo
|
||||
@echo "*****************************************************************"
|
||||
@echo "***** Linphone SDK without 3rd party GPL software *****"
|
||||
@echo "***** If you acquired a proprietary license from Belledonne *****"
|
||||
@echo "***** Communications, this SDK can be used to create *****"
|
||||
@echo "***** a proprietary linphone-based application. *****"
|
||||
@echo "*****************************************************************"
|
||||
endif
|
||||
|
||||
install: install-apk run-linphone
|
||||
|
||||
|
||||
#ffmpeg
|
||||
ifeq ($(BUILD_VIDEO),1)
|
||||
BUILD_FFMPEG_DEPS=$(FFMPEG_SRC_DIR)/non_versioned_soname_patch_applied.txt $(FFMPEG_BUILD_DIR)/arm/libffmpeg-linphone-arm.so
|
||||
ifeq ($(BUILD_FOR_X86), 1)
|
||||
BUILD_FFMPEG_DEPS+=$(FFMPEG_BUILD_DIR)/x86/libffmpeg-linphone-x86.so
|
||||
endif
|
||||
endif
|
||||
FFMPEG_SRC_DIR=$(TOPDIR)/submodules/externals/ffmpeg
|
||||
FFMPEG_BUILD_DIR=$(TOPDIR)/submodules/externals/build/ffmpeg
|
||||
FFMPEG_CONFIGURE_OPTIONS=--target-os=linux --enable-cross-compile --enable-runtime-cpudetect \
|
||||
--disable-everything --disable-doc --disable-ffplay --disable-ffmpeg --disable-ffprobe --disable-ffserver \
|
||||
--disable-avdevice --disable-avfilter --disable-avformat --disable-swresample --disable-network \
|
||||
--enable-decoder=mjpeg --enable-encoder=mjpeg --enable-decoder=mpeg4 --enable-encoder=mpeg4 --enable-decoder=h264 \
|
||||
--enable-decoder=h263p --enable-encoder=h263p --enable-decoder=h263 --enable-encoder=h263 --extra-cflags="-w" \
|
||||
--disable-static --enable-shared --disable-symver
|
||||
FFMPEG_ARM_CONFIGURE_OPTIONS=--build-suffix=-linphone-arm --arch=arm --sysroot=$(ARM_SYSROOT) --cross-prefix=$(ARM_TOOLCHAIN_PATH) --enable-pic
|
||||
FFMPEG_X86_CONFIGURE_OPTIONS=--build-suffix=-linphone-x86 --arch=x86 --sysroot=$(X86_SYSROOT) --cross-prefix=$(X86_TOOLCHAIN_PATH) --disable-mmx --disable-sse2 --disable-ssse3 --extra-cflags='-O3'
|
||||
|
||||
$(FFMPEG_SRC_DIR)/non_versioned_soname_patch_applied.txt:
|
||||
@patch -p0 < $(TOPDIR)/patches/ffmpeg_non_versioned_soname.patch
|
||||
touch $@
|
||||
|
||||
$(FFMPEG_BUILD_DIR)/arm/config.h:
|
||||
mkdir -p $(FFMPEG_BUILD_DIR)/arm && \
|
||||
cd $(FFMPEG_BUILD_DIR)/arm && \
|
||||
$(FFMPEG_SRC_DIR)/configure $(FFMPEG_CONFIGURE_OPTIONS) $(FFMPEG_ARM_CONFIGURE_OPTIONS)
|
||||
sed -i.bak 's/#define HAVE_SYSCTL 1/#define HAVE_SYSCTL 0/g' $(FFMPEG_BUILD_DIR)/arm/config.h
|
||||
sed -i.bak 's/#define HAVE_GETHRTIME 1/#define HAVE_GETHRTIME 0/g' $(FFMPEG_BUILD_DIR)/arm/config.h
|
||||
|
||||
$(FFMPEG_BUILD_DIR)/arm/libavcodec/libavcodec-linphone-arm.so: $(FFMPEG_BUILD_DIR)/arm/config.h
|
||||
cd $(FFMPEG_BUILD_DIR)/arm && \
|
||||
make -j${NUMCPUS} \
|
||||
|| ( echo "Build of ffmpeg for arm failed." ; exit 1 )
|
||||
|
||||
$(FFMPEG_BUILD_DIR)/arm/libffmpeg-linphone-arm.so: $(FFMPEG_BUILD_DIR)/arm/libavcodec/libavcodec-linphone-arm.so
|
||||
cd $(FFMPEG_BUILD_DIR)/arm && \
|
||||
rm libavcodec/log2_tab.o && \
|
||||
$(ARM_TOOLCHAIN_PATH)gcc -lm -lz --sysroot=$(ARM_SYSROOT) -Wl,-soname,libffmpeg-linphone-arm.so,--no-undefined -Wl,-z,noexecstack -shared libavutil/*.o libavutil/arm/*.o libavcodec/*.o libavcodec/arm/*.o libswscale/*.o -o libffmpeg-linphone-arm.so
|
||||
|
||||
$(FFMPEG_BUILD_DIR)/x86/config.h:
|
||||
mkdir -p $(FFMPEG_BUILD_DIR)/x86 && \
|
||||
cd $(FFMPEG_BUILD_DIR)/x86 && \
|
||||
$(FFMPEG_SRC_DIR)/configure $(FFMPEG_CONFIGURE_OPTIONS) $(FFMPEG_X86_CONFIGURE_OPTIONS)
|
||||
sed -i.bak 's/#define HAVE_SYSCTL 1/#define HAVE_SYSCTL 0/g' $(FFMPEG_BUILD_DIR)/x86/config.h
|
||||
sed -i.bak 's/#define HAVE_GETHRTIME 1/#define HAVE_GETHRTIME 0/g' $(FFMPEG_BUILD_DIR)/x86/config.h
|
||||
|
||||
$(FFMPEG_BUILD_DIR)/x86/libavcodec/libavcodec-linphone-x86.so: $(FFMPEG_BUILD_DIR)/x86/config.h
|
||||
cd $(FFMPEG_BUILD_DIR)/x86 && \
|
||||
make -j${NUMCPUS} \
|
||||
|| ( echo "Build of ffmpeg for x86 failed." ; exit 1 )
|
||||
|
||||
$(FFMPEG_BUILD_DIR)/x86/libffmpeg-linphone-x86.so: $(FFMPEG_BUILD_DIR)/x86/libavcodec/libavcodec-linphone-x86.so
|
||||
cd $(FFMPEG_BUILD_DIR)/x86 && \
|
||||
rm libavcodec/log2_tab.o && \
|
||||
$(X86_TOOLCHAIN_PATH)gcc -lm -lz --sysroot=$(X86_SYSROOT) -Wl,-soname,libffmpeg-linphone-x86.so,--no-undefined -Wl,-z,noexecstack -shared libavutil/*.o libavutil/x86/*.o libavcodec/*.o libavcodec/x86/*.o libswscale/*.o -o libffmpeg-linphone-x86.so
|
||||
|
||||
build-ffmpeg: $(BUILD_FFMPEG_DEPS)
|
||||
|
||||
clean-ffmpeg:
|
||||
rm -rf $(FFMPEG_BUILD_DIR)/arm && \
|
||||
rm -rf $(FFMPEG_BUILD_DIR)/x86
|
||||
|
||||
#x264
|
||||
ifeq ($(BUILD_VIDEO),1)
|
||||
ifeq ($(BUILD_X264), 1)
|
||||
BUILD_X264_DEPS=$(X264_SRC_DIR)/log2f_fix_patch_applied.txt $(X264_BUILD_DIR)/arm/libx264.a
|
||||
ifeq ($(BUILD_FOR_X86), 1)
|
||||
BUILD_X264_DEPS+=$(X264_BUILD_DIR)/x86/libx264.a
|
||||
endif
|
||||
endif
|
||||
|
||||
X264_SRC_DIR=$(TOPDIR)/submodules/externals/x264
|
||||
X264_BUILD_DIR=$(TOPDIR)/submodules/externals/build/x264
|
||||
X264_CONFIGURE_OPTIONS=--enable-static
|
||||
X264_ARM_CONFIGURE_OPTIONS=--host=arm-none-linux-gnueabi --sysroot=$(ARM_SYSROOT) --cross-prefix=$(ARM_TOOLCHAIN_PATH) --enable-pic
|
||||
X264_X86_CONFIGURE_OPTIONS=--host=i686-linux-gnueabi --sysroot=$(X86_SYSROOT) --cross-prefix=$(X86_TOOLCHAIN_PATH)
|
||||
|
||||
$(X264_SRC_DIR)/log2f_fix_patch_applied.txt:
|
||||
@patch -p0 < $(TOPDIR)/patches/x264_log2f_fix.patch
|
||||
touch $@
|
||||
|
||||
$(X264_BUILD_DIR)/arm/libx264.a:
|
||||
mkdir -p $(X264_BUILD_DIR)/arm && \
|
||||
cd $(X264_SRC_DIR) && \
|
||||
$(X264_SRC_DIR)/configure $(X264_CONFIGURE_OPTIONS) $(X264_ARM_CONFIGURE_OPTIONS) && \
|
||||
make -j$(NUMCPUS) STRIP= && \
|
||||
cp libx264.a $(X264_BUILD_DIR)/arm/libx264.a && \
|
||||
make clean \
|
||||
|| ( echo "Build of x264 for arm failed." ; exit 1 )
|
||||
|
||||
$(X264_BUILD_DIR)/x86/libx264.a:
|
||||
mkdir -p $(X264_BUILD_DIR)/x86 && \
|
||||
cd $(X264_SRC_DIR) && \
|
||||
$(X264_SRC_DIR)/configure $(X264_CONFIGURE_OPTIONS) $(X264_X86_CONFIGURE_OPTIONS) && \
|
||||
make -j$(NUMCPUS) STRIP= && \
|
||||
cp libx264.a $(X264_BUILD_DIR)/x86/libx264.a && \
|
||||
make clean \
|
||||
|| ( echo "Build of x264 for x86 failed." ; exit 1 )
|
||||
|
||||
endif
|
||||
build-x264: $(BUILD_X264_DEPS)
|
||||
|
||||
clean-x264:
|
||||
rm -rf $(X264_BUILD_DIR)/arm && \
|
||||
rm -rf $(X264_BUILD_DIR)/x86
|
||||
|
||||
#codec2
|
||||
ifeq ($(BUILD_CODEC2),1)
|
||||
CODEC2_SRC_DIR=$(TOPDIR)/submodules/externals/codec2
|
||||
CODEC2_BUILD_DIR=$(TOPDIR)/submodules/externals/build/codec2
|
||||
PREPARE_CODEC2_DEPS=codec2-install-headers
|
||||
endif
|
||||
|
||||
fetch-codec2:
|
||||
ifneq "$(wildcard $(CODEC2_SRC_DIR) )" ""
|
||||
# source directory for codec2 already exists, update it
|
||||
svn up $(CODEC2_SRC_DIR)
|
||||
else
|
||||
#source directory for codec2 doesn't exist, create it and fetch the source from svn depot
|
||||
mkdir $(CODEC2_SRC_DIR)
|
||||
svn co https://svn.code.sf.net/p/freetel/code/codec2/branches/0.3/ $(CODEC2_SRC_DIR)
|
||||
endif
|
||||
|
||||
codec2-install-headers: fetch-codec2
|
||||
mkdir -p $(CODEC2_SRC_DIR)/include/codec2
|
||||
rsync -rvLpgoc $(CODEC2_SRC_DIR)/src/codec2.h $(CODEC2_SRC_DIR)/include/codec2/codec2.h
|
||||
|
||||
prepare-codec2: $(PREPARE_CODEC2_DEPS)
|
||||
|
||||
#openh264
|
||||
ifeq ($(BUILD_VIDEO),1)
|
||||
ifeq ($(BUILD_OPENH264), 1)
|
||||
BUILD_OPENH264_DEPS=build-openh264-arm
|
||||
ifeq ($(BUILD_FOR_X86), 1)
|
||||
BUILD_OPENH264_DEPS+=build-openh264-x86
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
||||
OPENH264_SRC_DIR=$(TOPDIR)/submodules/externals/openh264
|
||||
OPENH264_BUILD_DIR=$(TOPDIR)/submodules/externals/build/openh264
|
||||
OPENH264_BUILD_DIR_ARM=$(OPENH264_BUILD_DIR)/arm
|
||||
OPENH264_BUILD_DIR_X86=$(OPENH264_BUILD_DIR)/x86
|
||||
|
||||
$(OPENH264_SRC_DIR)/patch.stamp: $(TOPDIR)/patches/openh264-permissive.patch
|
||||
cd $(OPENH264_SRC_DIR) && patch -p1 < $(TOPDIR)/patches/openh264-permissive.patch && touch $(OPENH264_SRC_DIR)/patch.stamp
|
||||
|
||||
openh264-patch: $(OPENH264_SRC_DIR)/patch.stamp
|
||||
|
||||
openh264-install-headers:
|
||||
mkdir -p $(OPENH264_SRC_DIR)/include/wels
|
||||
rsync -rvLpgoc --exclude ".git" $(OPENH264_SRC_DIR)/codec/api/svc/* $(OPENH264_SRC_DIR)/include/wels/.
|
||||
|
||||
copy-openh264-x86: openh264-install-headers
|
||||
mkdir -p $(OPENH264_BUILD_DIR)
|
||||
mkdir -p $(OPENH264_BUILD_DIR_X86)
|
||||
cd $(OPENH264_BUILD_DIR_X86) \
|
||||
&& rsync -rvLpgoc --exclude ".git" $(OPENH264_SRC_DIR)/* .
|
||||
|
||||
copy-openh264-arm: openh264-install-headers
|
||||
mkdir -p $(OPENH264_BUILD_DIR)
|
||||
mkdir -p $(OPENH264_BUILD_DIR_ARM)
|
||||
cd $(OPENH264_BUILD_DIR_ARM) \
|
||||
&& rsync -rvLpgoc --exclude ".git" $(OPENH264_SRC_DIR)/* .
|
||||
|
||||
build-openh264-x86: copy-openh264-x86
|
||||
cd $(OPENH264_BUILD_DIR_X86) && \
|
||||
make libraries -j$(NUMCPUS) OS=android ARCH=x86 NDKROOT=$(NDK_PATH) TARGET=$(NDKBUILD_TARGET)
|
||||
|
||||
build-openh264-arm: copy-openh264-arm
|
||||
cd $(OPENH264_BUILD_DIR_ARM) && \
|
||||
make libraries -j$(NUMCPUS) OS=android ARCH=arm NDKROOT=$(NDK_PATH) TARGET=$(NDKBUILD_TARGET)
|
||||
|
||||
build-openh264: $(BUILD_OPENH264_DEPS)
|
||||
|
||||
clean-openh264:
|
||||
cd $(OPENH264_SRC_DIR) && git clean -dfx && git reset --hard
|
||||
rm -rf $(OPENH264_BUILD_DIR_ARM)
|
||||
rm -rf $(OPENH264_BUILD_DIR_X86)
|
||||
|
||||
#libvpx
|
||||
ifeq ($(BUILD_VIDEO),1)
|
||||
BUILD_VPX_DEPS=$(LIBVPX_SRC_DIR)/configure_android_x86_patch_applied.txt $(LIBVPX_BUILD_DIR)/arm/libvpx.a
|
||||
ifeq ($(BUILD_FOR_X86), 1)
|
||||
BUILD_VPX_DEPS+=$(LIBVPX_BUILD_DIR)/x86/libvpx.a
|
||||
endif
|
||||
endif
|
||||
LIBVPX_SRC_DIR=$(TOPDIR)/submodules/externals/libvpx
|
||||
LIBVPX_BUILD_DIR=$(TOPDIR)/submodules/externals/build/libvpx
|
||||
LIBVPX_CONFIGURE_OPTIONS=--disable-vp9 --disable-examples --disable-unit-tests --disable-postproc --enable-error-concealment --enable-pic
|
||||
|
||||
$(LIBVPX_SRC_DIR)/configure_android_x86_patch_applied.txt:
|
||||
cd $(LIBVPX_SRC_DIR) && patch -p1 < $(TOPDIR)/patches/libvpx_configure_android_x86.patch
|
||||
touch $@
|
||||
|
||||
$(LIBVPX_BUILD_DIR)/arm/libvpx.a:
|
||||
mkdir -p $(LIBVPX_BUILD_DIR)/arm && \
|
||||
cd $(LIBVPX_BUILD_DIR)/arm && \
|
||||
$(LIBVPX_SRC_DIR)/configure --target=armv7-android-gcc --extra-cflags="-mfloat-abi=softfp -mfpu=neon" --sdk-path=$(NDK_PATH) $(LIBVPX_CONFIGURE_OPTIONS) && \
|
||||
make -j${NUMCPUS} \
|
||||
|| ( echo "Build of libvpx for arm failed." ; exit 1 )
|
||||
|
||||
$(LIBVPX_BUILD_DIR)/x86/libvpx.a:
|
||||
mkdir -p $(LIBVPX_BUILD_DIR)/x86 && \
|
||||
cd $(LIBVPX_BUILD_DIR)/x86 && \
|
||||
$(LIBVPX_SRC_DIR)/configure --target=x86-android-gcc --sdk-path=$(NDK_PATH) $(LIBVPX_CONFIGURE_OPTIONS) && \
|
||||
make -j${NUMCPUS} \
|
||||
|| ( echo "Build of libvpx for x86 failed." ; exit 1 )
|
||||
|
||||
build-vpx: $(BUILD_VPX_DEPS)
|
||||
|
||||
clean-vpx:
|
||||
cd $(LIBVPX_SRC_DIR) && git clean -dfx && git reset --hard
|
||||
rm -rf submodules/externals/build/libvpx/arm && \
|
||||
rm -rf submodules/externals/build/libvpx/x86
|
||||
|
||||
#srtp
|
||||
$(TOPDIR)/submodules/externals/srtp/config.h : $(TOPDIR)/submodules/externals/build/srtp/config.h
|
||||
@cd $(TOPDIR)/submodules/externals/srtp/ && \
|
||||
cp ../build/srtp/config.h . \
|
||||
|| ( echo "SRTP prepare state failed." ; exit 1 )
|
||||
|
||||
prepare-srtp: $(TOPDIR)/submodules/externals/srtp/config.h
|
||||
|
||||
#ms2
|
||||
prepare-mediastreamer2:
|
||||
@cd $(TOPDIR)/submodules/linphone/mediastreamer2/src/ && \
|
||||
eval `cat Makefile.am | grep xxd | grep yuv2rgb.vs | sed 's/\$$(abs_builddir)/./'` && \
|
||||
eval `cat Makefile.am | grep xxd | grep yuv2rgb.fs | sed 's/\$$(abs_builddir)/./'` && \
|
||||
if ! [ -e yuv2rgb.vs.h ]; then echo "yuv2rgb.vs.h creation error (do you have 'xxd' application installed ?)"; exit 1; fi && \
|
||||
if ! [ -e yuv2rgb.fs.h ]; then echo "yuv2rgb.fs.h creation error (do you have 'xxd' application installed ?)"; exit 1; fi
|
||||
|
||||
#antlr3
|
||||
ANLTR3_SRC_DIR=$(TOPDIR)/submodules/externals/antlr3/runtime/C/include/
|
||||
ANTLR3_BUILD_DIR=$(ANTLR3_SRC_DIR)
|
||||
$(ANLTR3_SRC_DIR)/antlr3config.h: $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h
|
||||
cp $(TOPDIR)/submodules/externals/build/antlr3/antlr3config.h $(ANLTR3_SRC_DIR)
|
||||
prepare-antlr3: $(ANLTR3_SRC_DIR)/antlr3config.h
|
||||
|
||||
%.tokens: %.g
|
||||
$(ANTLR) -make -fo $(dir $^) $^
|
||||
|
||||
#Belle-sip
|
||||
BELLESIP_SRC_DIR=$(TOPDIR)/submodules/belle-sip
|
||||
BELLESIP_BUILD_DIR=$(BELLESIP_SRC_DIR)
|
||||
prepare-belle-sip: $(BELLESIP_SRC_DIR)/src/grammars/belle_sip_message.tokens $(BELLESIP_SRC_DIR)/src/grammars/belle_sdp.tokens
|
||||
|
||||
#CUnit
|
||||
prepare-cunit: $(TOPDIR)/submodules/externals/cunit/CUnit/Headers/*.h
|
||||
[ -d $(TOPDIR)/submodules/externals/build/cunit/CUnit ] || mkdir $(TOPDIR)/submodules/externals/build/cunit/CUnit
|
||||
cp $^ $(TOPDIR)/submodules/externals/build/cunit/CUnit
|
||||
|
||||
$(TOPDIR)/res/raw/rootca.pem:
|
||||
HTTPS_CA_DIR=$(HTTPS_CA_DIR) $(TOPDIR)/submodules/linphone/scripts/mk-ca-bundle.pl $@
|
||||
|
||||
prepare-liblinphone_tester: $(TOPDIR)/submodules/linphone/tester/tester_hosts $(TOPDIR)/res/raw/rootca.pem $(TOPDIR)/submodules/linphone/tester/messages.db
|
||||
rm -rf liblinphone_tester/assets/config_files
|
||||
mkdir -p liblinphone_tester/assets/config_files
|
||||
for file in $^; do \
|
||||
cp -rf $$file $(TOPDIR)/liblinphone_tester/assets/config_files/. \
|
||||
;done
|
||||
cp -rf $(TOPDIR)/submodules/linphone/tester/certificates $(TOPDIR)/liblinphone_tester/assets/config_files
|
||||
cp -rf $(TOPDIR)/submodules/linphone/tester/sounds $(TOPDIR)/liblinphone_tester/assets/config_files
|
||||
cp -rf $(TOPDIR)/submodules/linphone/tester/images $(TOPDIR)/liblinphone_tester/assets/config_files
|
||||
cp -rf $(TOPDIR)/submodules/linphone/tester/rcfiles $(TOPDIR)/liblinphone_tester/assets/config_files
|
||||
|
||||
|
||||
#Matroska2
|
||||
MATROSKA_SRC_DIR=$(TOPDIR)/submodules/externals/libmatroska-c
|
||||
MATROSKA_BUILD_DIR=$(TOPDIR)/submodules/externals/build/libmatroska-c
|
||||
ifeq ($(BUILD_MATROSKA), 1)
|
||||
prepare-matroska2: $(MATROSKA_SRC_DIR)/patch_applied.txt
|
||||
else
|
||||
prepare-matroska2:
|
||||
endif
|
||||
|
||||
$(MATROSKA_SRC_DIR)/patch_applied.txt: $(MATROSKA_BUILD_DIR)/fix_libmatroska2.patch
|
||||
cd $(MATROSKA_SRC_DIR); patch -p1 < $<; touch $@
|
||||
|
||||
#Build targets
|
||||
prepare-sources: build-ffmpeg build-x264 build-openh264 build-vpx prepare-srtp prepare-mediastreamer2 prepare-antlr3 prepare-belle-sip $(TOPDIR)/res/raw/rootca.pem prepare-matroska2 prepare-codec2
|
||||
|
||||
GENERATE_OPTIONS = NDK_DEBUG=$(NDK_DEBUG) BUILD_FOR_X86=$(BUILD_FOR_X86) \
|
||||
BUILD_AMRNB=$(BUILD_AMRNB) BUILD_AMRWB=$(BUILD_AMRWB) BUILD_SILK=$(BUILD_SILK) BUILD_G729=$(BUILD_G729) BUILD_OPUS=$(BUILD_OPUS) BUILD_CODEC2=$(BUILD_CODEC2)\
|
||||
BUILD_VIDEO=$(BUILD_VIDEO) BUILD_X264=$(BUILD_X264) BUILD_OPENH264=$(BUILD_OPENH264) ENABLE_OPENH264_DECODER=$(ENABLE_OPENH264_DECODER) BUILD_MATROSKA=$(BUILD_MATROSKA) \
|
||||
BUILD_UPNP=$(BUILD_UPNP) BUILD_ZRTP=$(BUILD_ZRTP) BUILD_WEBRTC_AECM=$(BUILD_WEBRTC_AECM) BUILD_WEBRTC_ISAC=$(BUILD_WEBRTC_ISAC) BUILD_ILBC=$(BUILD_ILBC) \
|
||||
BUILD_FOR_ARM=$(BUILD_FOR_ARM) BUILD_NON_FREE_CODECS=$(BUILD_NON_FREE_CODECS)
|
||||
|
||||
|
||||
LIBLINPHONE_OPTIONS = $(GENERATE_OPTIONS) \
|
||||
LIBLINPHONE_VERSION=$(LIBLINPHONE_VERSION) BELLESIP_VERSION=$(BELLESIP_VERSION) USE_JAVAH=$(USE_JAVAH) \
|
||||
BUILD_TUNNEL=$(BUILD_TUNNEL) BUILD_TLS=$(BUILD_TLS) BUILD_SQLITE=$(BUILD_SQLITE) \
|
||||
BUILD_CONTACT_HEADER=$(BUILD_CONTACT_HEADER) BUILD_RTP_MAP=$(BUILD_RTP_MAP) \
|
||||
LIBLINPHONE_EXTENDED_SRC_FILES="$(LIBLINPHONE_EXTENDED_SRC_FILES)" \
|
||||
LIBLINPHONE_EXTENDED_C_INCLUDES="$(LIBLINPHONE_EXTENDED_C_INCLUDES)" \
|
||||
LIBLINPHONE_EXTENDED_CFLAGS="$(LIBLINPHONE_EXTENDED_CFLAGS)" \
|
||||
APP_STL="$(APP_STL)" \
|
||||
BUILD_DONT_CHECK_HEADERS_IN_MESSAGE=$(BUILD_DONT_CHECK_HEADERS_IN_MESSAGE)
|
||||
|
||||
MEDIASTREAMER2_OPTIONS = $(GENERATE_OPTIONS) BUILD_MEDIASTREAMER2_SDK=1
|
||||
|
||||
|
||||
generate-libs: prepare-sources javah
|
||||
$(NDK_PATH)/ndk-build $(LIBLINPHONE_OPTIONS) -j$(NUMCPUS) TARGET_PLATFORM=$(NDKBUILD_TARGET)
|
||||
|
||||
generate-mediastreamer2-libs: prepare-sources
|
||||
@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \
|
||||
$(NDK_PATH)/ndk-build $(MEDIASTREAMER2_OPTIONS) -j$(NUMCPUS) TARGET_PLATFORM=$(NDKBUILD_TARGET)
|
||||
|
||||
update-project: $(TOPDIR)/res/raw/rootca.pem
|
||||
$(SDK_PATH)/android update project --path . --target $(ANDROID_MOST_RECENT_TARGET)
|
||||
$(SDK_PATH)/android update test-project --path tests -m .
|
||||
$(SDK_PATH)/android update project --path liblinphone_tester --target $(ANDROID_MOST_RECENT_TARGET)
|
||||
|
||||
update-mediastreamer2-project:
|
||||
@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \
|
||||
$(SDK_PATH)/android update project --path . --target $(ANDROID_MOST_RECENT_TARGET)
|
||||
|
||||
liblinphone_tester: update-project prepare-sources prepare-cunit prepare-liblinphone_tester javah
|
||||
$(NDK_PATH)/ndk-build -C liblinphone_tester $(LIBLINPHONE_OPTIONS) -j$(NUMCPUS) TARGET_PLATFORM=$(NDKBUILD_TARGET)
|
||||
$(MAKE) -C liblinphone_tester
|
||||
|
||||
javah:
|
||||
$(ANT) javah
|
||||
|
||||
generate-apk: java-clean generate-libs
|
||||
echo "version.name=$(LINPHONE_ANDROID_DEBUG_VERSION)" > default.properties
|
||||
$(ANT) debug
|
||||
|
||||
generate-mediastreamer2-apk: java-clean generate-mediastreamer2-libs
|
||||
@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \
|
||||
echo "version.name=$(LINPHONE_ANDROID_DEBUG_VERSION)" > default.properties && \
|
||||
$(ANT) debug
|
||||
|
||||
uninstall:
|
||||
adb uninstall $(PACKAGE_NAME)
|
||||
|
||||
install-apk:
|
||||
ant installd
|
||||
|
||||
release: update-project
|
||||
$(MAKE) java-clean
|
||||
patch -p1 < release.patch
|
||||
cat ant.properties | grep version.name > default.properties
|
||||
$(MAKE) generate-libs
|
||||
$(ANT) release
|
||||
patch -Rp1 < release.patch
|
||||
|
||||
run-linphone:
|
||||
ant run
|
||||
|
||||
run-liblinphone-tests: liblinphone_tester
|
||||
$(MAKE) -C liblinphone_tester run-all-tests
|
||||
|
||||
run-basic-tests: update-project
|
||||
$(ANT) partial-clean
|
||||
$(MAKE) -C tests run-basic-tests ANT_SILENT=$(ANT_SILENT)
|
||||
|
||||
run-all-tests: update-project
|
||||
$(ANT) partial-clean
|
||||
$(MAKE) -C tests run-all-tests ANT_SILENT=$(ANT_SILENT)
|
||||
|
||||
clean-ndk-build:
|
||||
- $(NDK_PATH)/ndk-build clean $(LIBLINPHONE_OPTIONS)
|
||||
$(ANT) clean
|
||||
@if [ -f $(TOPDIR)/submodules/linphone/mediastreamer2/java/project.properties ]; then \
|
||||
cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && $(ANT) clean; \
|
||||
fi
|
||||
|
||||
.NOTPARALLEL clean-native: clean-ndk-build clean-ffmpeg clean-x264 clean-openh264 clean-vpx
|
||||
|
||||
|
||||
java-clean:
|
||||
$(ANT) clean
|
||||
|
||||
clean: clean-native java-clean
|
||||
patch -Rp1 -f < release.patch || echo "patch already cleaned"
|
||||
rm -f AndroidManifest.xml.rej
|
||||
rm -f AndroidManifest.xml.orig
|
||||
|
||||
|
||||
.PHONY: clean install-apk run-linphone
|
||||
|
||||
generate-sdk: liblinphone-android-sdk
|
||||
|
||||
liblinphone-android-sdk: generate-apk
|
||||
$(ANT) liblinphone-android-sdk
|
||||
|
||||
linphone-android-sdk: generate-apk
|
||||
$(ANT) linphone-android-sdk
|
||||
|
||||
mediastreamer2-sdk: update-mediastreamer2-project generate-mediastreamer2-apk
|
||||
@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \
|
||||
$(ANT) mediastreamer2-sdk
|
||||
|
||||
pull-transifex:
|
||||
tx pull -af
|
||||
|
||||
push-transifex:
|
||||
tx push -s -f --no-interactive
|
||||
93
README
|
|
@ -9,21 +9,23 @@ To build liblinphone for Android, you must:
|
|||
-------------------------------------------
|
||||
0) download the Android sdk with platform-tools and tools updated to latest revision (at least API 16 is needed), then add both 'tools' and 'platform-tools' folders in your path.
|
||||
1) download the Android ndk (=r10c) from google and add it to your path (no symlink !!!).
|
||||
2) install yasm, nasm, curl, ant, rsync, autoconf, automake, aclocal, libtool, pkgconfig, bc, perl-LWP-Protocol-https, patch, vim-common
|
||||
2) install yasm, nasm, ant, python, cmake
|
||||
On 64 bits linux systems you'll need the ia32-libs package
|
||||
With the latest Debian (multiarch), you need this:
|
||||
dpkg --add-architecture i386
|
||||
aptitude update
|
||||
aptitude install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
|
||||
3) run the Makefile script in the top level directory. This will download iLBC source files and convert some assembly files in VP8 project.
|
||||
3) run `./prepare.py` in the top level directory. This will configure the build and generate a Makefile in the top level directory.
|
||||
Some options can be passed to choose what you want to include in the build and the platforms for which you want to build. Use `./prepare.py --help` to see what these options are.
|
||||
4) run the Makefile script in the top level directory.
|
||||
$ make
|
||||
4) (Optional) To install the generated apk into a plugged device, run
|
||||
5) (Optional) To install the generated apk into a plugged device, run
|
||||
$ make install
|
||||
5) (Optional) To generate a liblinphone SDK zip containing a full jar and native libraries, run
|
||||
6) (Optional) To generate a liblinphone SDK zip containing a full jar and native libraries, run
|
||||
$ make liblinphone-android-sdk
|
||||
6) (Optional) To generate a libmediastreamer2 SDK zip containing a full jar and native libraries, run
|
||||
7) (Optional) To generate a libmediastreamer2 SDK zip containing a full jar and native libraries, run
|
||||
$ make mediastreamer2-sdk
|
||||
7) (Optional) To generate a signed apk to publish on the Google Play, run
|
||||
8) (Optional) To generate a signed apk to publish on the Google Play, run
|
||||
$ make release
|
||||
Make sure you filled the ant.properties values for version.name, key.store and key.alias in order to correctly sign the generated apk.
|
||||
You also may want to create a file name ant_password.properties with the following:
|
||||
|
|
@ -51,8 +53,7 @@ Simply run
|
|||
$ make liblinphone_tester
|
||||
This will be build everything, generate an apk, and install it on the connected device if any.
|
||||
|
||||
You can speed up the compilation by using ccache (compiler cache, see https://ccache.samba.org/). Simply export:
|
||||
export NDK_CCACHE=ccache
|
||||
You can speed up the compilation by using ccache (compiler cache, see https://ccache.samba.org/). Give the "-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" options to the prepare.py script.
|
||||
|
||||
TROUBLESHOOTING
|
||||
***************
|
||||
|
|
@ -73,77 +74,7 @@ Caused by: java.lang.UnsatisfiedLinkError: Couldn't load linphone-armeabi-v7a: f
|
|||
BUILD OPTIONS
|
||||
*************
|
||||
|
||||
Some options can be passed to make, like "make SOME_OPTION=SOME_VALUE".
|
||||
The build options are to be passed to the prepare.py script.
|
||||
For example to enable the x264 encoder give the "-DENABLE_X264=YES" to prepare.py.
|
||||
|
||||
ENABLE_GPL_THIRD_PARTIES
|
||||
values: 0 (GPL third parties disabled) or 1 (GPL third parties enabled), default value: 1
|
||||
GPL third parties are: X264 and G729
|
||||
|
||||
BUILD_VIDEO
|
||||
values: 0 (no video) or 1 (video enabled), default value: 1
|
||||
|
||||
BUILD_OPENH264
|
||||
values: 0 (don't build openH264) or 1 (build openH264), default value: 1
|
||||
|
||||
ENABLE_OPENH264_DECODER
|
||||
values: 0 (disable openh264 decoder) or 1 (enable openh264 decoder), default value: 1
|
||||
|
||||
BUILD_X264
|
||||
values: 0 (don't build x264) or 1 (build x264), default value: 0
|
||||
|
||||
BUILD_AMRNB
|
||||
values: 0 (don't build amrnb codec), light (try to use amrnb codec from android), full (build your own amrnb codec), default value: full
|
||||
|
||||
BUILD_AMRWB
|
||||
values: 0 (don't build amrwb codec), 1 (build your own amrwb codec): default value: 1
|
||||
|
||||
BUILD_ZRTP
|
||||
values: 0 (don't support ZRTP), 1 (support ZRTP), default value: 1
|
||||
|
||||
BUILD_SILK
|
||||
values: 0 (don't build silk plugin), 1 (build silk) [silk is Skype nonfree patented audio codec], default value: 1
|
||||
|
||||
BUILD_G729
|
||||
values: 0 (don't build g729 plugin), 1 (build g729) [g729 is nonfree patented audio codec, contact Sipro lab for more details]
|
||||
default value: 1
|
||||
|
||||
BUILD_TUNNEL
|
||||
values: 0 (don't build tunnel), 1 (build tunnel) [requires a non-free tunnel implementation in submodules/linphone/tunnel]
|
||||
default value: 0
|
||||
|
||||
BUILD_WEBRTC_AECM
|
||||
values: 0 (don't build echo canceler), 1 (build echo canceler)
|
||||
default value: 1
|
||||
|
||||
USE_JAVAH
|
||||
values: 0 (don't generate header), 1 (generate header for linphone_core_jni) [used to check errors at liblinphone compilation]
|
||||
default value: 1
|
||||
|
||||
BUILD_FOR_X86
|
||||
values: 0 (don't generate liblinphone libraries for x86 architecture), 1 (build liblinphone libraries for x86 architecture)
|
||||
default value: 1
|
||||
|
||||
BUILD_SQLITE
|
||||
values: 0 (don't build sqlite3), 1 (build sqlite3) [used to store chat messages inside liblinphone]
|
||||
default value: 1
|
||||
|
||||
BUILD_TLS
|
||||
values: 0 (don't build tls), 1 (do build tls), default value: 1
|
||||
|
||||
BUILD_WEBRTC_ISAC
|
||||
values: 0 (don't build isac), 1 (do build isac), default value: 1
|
||||
|
||||
BUILD_OPUS
|
||||
values: 0 (don't build opus), 1 (do build opus), default value: 1
|
||||
|
||||
BUILD_UPNP
|
||||
values: 0 (don't build upnp), 1 (do build upnp), default value: 1
|
||||
|
||||
BUILD_MATROSKA
|
||||
values: 0 (don't build matroska and ebml), 1 (do build matroska and ebml), default value: 0
|
||||
|
||||
BUILD_ILBC
|
||||
values: 0 (don't build iLBC), 1 (do build iLBC), default value: 1
|
||||
|
||||
BUILD_CODEC2
|
||||
values: 0 (don't build codec2 support), 1 (do build codec2 support), default value: 0
|
||||
The available options can be listed with the `./prepare.py --list-features`
|
||||
|
|
|
|||
|
|
@ -13,7 +13,7 @@ dependencies {
|
|||
}
|
||||
|
||||
android {
|
||||
compileSdkVersion 22
|
||||
compileSdkVersion 23
|
||||
buildToolsVersion "20.0.0"
|
||||
|
||||
sourceSets {
|
||||
|
|
|
|||
|
|
@ -65,6 +65,8 @@ include $(linphone-root-dir)/submodules/externals/build/polarssl/Android.mk
|
|||
include $(linphone-root-dir)/submodules/bctoolbox/build/android/Android-polarssl.mk
|
||||
endif
|
||||
|
||||
include $(linphone-root-dir)/submodules/bctoolbox/build/android/Android-tester.mk
|
||||
|
||||
ifeq ($(BUILD_MEDIASTREAMER2_SDK), 0)
|
||||
include $(linphone-root-dir)/submodules/externals/build/antlr3/Android.mk
|
||||
include $(linphone-root-dir)/submodules/belle-sip/build/android/Android.mk
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ ifeq ($(BUILD_UPNP),1)
|
|||
APP_MODULES += libupnp
|
||||
endif
|
||||
|
||||
APP_MODULES +=bctoolbox
|
||||
APP_MODULES +=bctoolbox bctoolbox_tester
|
||||
ifeq ($(BUILD_TLS),1)
|
||||
ifeq ($(BUILD_BCTOOLBOX_MBEDTLS),1)
|
||||
APP_MODULES +=mbedtls
|
||||
|
|
|
|||
|
|
@ -1,5 +1,59 @@
|
|||
all:
|
||||
ANDROID_MOST_RECENT_TARGET=$(shell android list target -c | grep -E 'android-[0-9]+' | tail -n1)
|
||||
|
||||
all: update-project copy-files
|
||||
ant debug install
|
||||
|
||||
run-all-tests: all
|
||||
ant test
|
||||
|
||||
update-project:
|
||||
android update project --path . --target $(ANDROID_MOST_RECENT_TARGET)
|
||||
|
||||
copy-libs:
|
||||
rm -rf libs/armeabi
|
||||
mkdir -p assets/config_files
|
||||
if test -d "../liblinphone-sdk/android-arm"; then \
|
||||
mkdir -p libs/armeabi && \
|
||||
cp -f ../liblinphone-sdk/android-arm/lib/lib*-armeabi.so libs/armeabi && \
|
||||
cp -f ../liblinphone-sdk/android-arm/lib/mediastreamer/plugins/*.so libs/armeabi && \
|
||||
cp -f ../liblinphone-sdk/android-arm/share/linphone/rootca.pem assets/config_files; \
|
||||
fi
|
||||
if test -f "../liblinphone-sdk/android-arm/bin/gdbserver"; then \
|
||||
cp -f ../liblinphone-sdk/android-arm/bin/gdbserver libs/armeabi && \
|
||||
cp -f ../liblinphone-sdk/android-arm/bin/gdb.setup libs/armeabi; \
|
||||
fi
|
||||
rm -rf libs/armeabi-v7a
|
||||
if test -d "../liblinphone-sdk/android-armv7"; then \
|
||||
mkdir -p libs/armeabi-v7a && \
|
||||
cp -f ../liblinphone-sdk/android-armv7/lib/lib*-armeabi-v7a.so libs/armeabi-v7a && \
|
||||
cp -f ../liblinphone-sdk/android-armv7/lib/mediastreamer/plugins/*.so libs/armeabi-v7a && \
|
||||
cp -f ../liblinphone-sdk/android-armv7/share/linphone/rootca.pem assets/config_files; \
|
||||
fi
|
||||
if test -f "../liblinphone-sdk/android-armv7/bin/gdbserver"; then \
|
||||
cp -f ../liblinphone-sdk/android-armv7/bin/gdbserver libs/armeabi-v7a && \
|
||||
cp -f ../liblinphone-sdk/android-armv7/bin/gdb.setup libs/armeabi-v7a; \
|
||||
fi
|
||||
rm -rf libs/x86
|
||||
if test -d "../liblinphone-sdk/android-x86"; then \
|
||||
mkdir -p libs/x86 && \
|
||||
cp -f ../liblinphone-sdk/android-x86/lib/lib*-x86.so libs/x86 && \
|
||||
cp -f ../liblinphone-sdk/android-x86/lib/mediastreamer/plugins/*.so libs/x86 && \
|
||||
cp -f ../liblinphone-sdk/android-x86/share/linphone/rootca.pem assets/config_files; \
|
||||
fi
|
||||
if test -f "../liblinphone-sdk/android-x86/bin/gdbserver"; then \
|
||||
cp -f ../liblinphone-sdk/android-x86/bin/gdbserver libs/x86 && \
|
||||
cp -f ../liblinphone-sdk/android-x86/bin/gdb.setup libs/x86; \
|
||||
fi
|
||||
|
||||
copy-files: ../submodules/linphone/tester/tester_hosts ../submodules/linphone/tester/messages.db
|
||||
$(MAKE) copy-libs
|
||||
rm -rf assets/config_files
|
||||
mkdir -p assets/config_files
|
||||
for file in $^; do \
|
||||
cp -rf $$file assets/config_files/. ; \
|
||||
done
|
||||
cp -rf ../submodules/linphone/tester/certificates assets/config_files
|
||||
cp -rf ../submodules/linphone/tester/images assets/config_files
|
||||
cp -rf ../submodules/linphone/tester/rcfiles assets/config_files
|
||||
cp -rf ../submodules/linphone/tester/sounds assets/config_files
|
||||
cp -rf ../submodules/linphone/tester/vcards assets/config_files
|
||||
|
|
|
|||
|
|
@ -25,23 +25,22 @@ public class Tester {
|
|||
}
|
||||
|
||||
static {
|
||||
System.loadLibrary("cunit");
|
||||
List<String> cpuabis=Version.getCpuAbis();
|
||||
String ffmpegAbi;
|
||||
boolean libLoaded=false;
|
||||
Throwable firstException=null;
|
||||
for (String abi : cpuabis){
|
||||
Log.i("LinphoneCoreFactoryImpl","Trying to load liblinphone for " + abi);
|
||||
ffmpegAbi=abi;
|
||||
// FFMPEG (audio/video)
|
||||
if (abi.startsWith("armeabi")) {
|
||||
ffmpegAbi="arm";
|
||||
}
|
||||
loadOptionalLibrary("ffmpeg-linphone-"+ffmpegAbi);
|
||||
loadOptionalLibrary("ffmpeg-linphone-" + abi);
|
||||
//Main library
|
||||
try {
|
||||
System.loadLibrary("bctoolbox-" + abi);
|
||||
System.loadLibrary("bctoolbox-tester-" + abi);
|
||||
System.loadLibrary("ortp-" + abi);
|
||||
System.loadLibrary("mediastreamer_base-" + abi);
|
||||
System.loadLibrary("mediastreamer_voip-" + abi);
|
||||
System.loadLibrary("linphone-" + abi);
|
||||
System.loadLibrary("linphone_tester-" + abi);
|
||||
System.loadLibrary("linphonetester-" + abi);
|
||||
|
||||
Log.i("LinphoneCoreFactoryImpl","Loading done with " + abi);
|
||||
libLoaded=true;
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@ import org.linphone.core.LinphoneCoreListenerBase;
|
|||
import org.linphone.core.LinphoneFriend;
|
||||
import org.linphone.core.PayloadType;
|
||||
import org.linphone.mediastream.MediastreamerAndroidContext;
|
||||
import org.linphone.mediastream.Factory;
|
||||
|
||||
import android.test.AndroidTestCase;
|
||||
import junit.framework.Assert;
|
||||
|
|
@ -87,16 +88,19 @@ public class WrapperTester extends AndroidTestCase {
|
|||
friend.setRefKey(key);
|
||||
Assert.assertEquals(friend.getRefKey(),key);
|
||||
|
||||
MediastreamerAndroidContext.enableFilterFromName("MSUlawEnc", false);
|
||||
Assert.assertFalse(MediastreamerAndroidContext.filterFromNameEnabled("MSUlawEnc"));
|
||||
MediastreamerAndroidContext.enableFilterFromName("MSUlawEnc", true);
|
||||
//Test filter enablement
|
||||
Factory factory = mCore.getMSFactory();
|
||||
factory.enableFilterFromName("MSUlawEnc", false);
|
||||
Assert.assertFalse(factory.filterFromNameEnabled("MSUlawEnc"));
|
||||
factory.enableFilterFromName("MSUlawEnc", true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUp() throws Exception {
|
||||
// TODO Auto-generated method stub
|
||||
super.setUp();
|
||||
mCore = LinphoneCoreFactory.instance().createLinphoneCore(new LinphoneCoreListenerBase(),null);
|
||||
LinphoneCoreFactory.instance().setDebugMode(true, "WrapperTester");
|
||||
mCore = LinphoneCoreFactory.instance().createLinphoneCore(new LinphoneCoreListenerBase(),getContext());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
92
linphone-android-obiane.iml
Normal file
|
|
@ -0,0 +1,92 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<module external.linked.project.id="linphone-android-obiane" external.linked.project.path="$MODULE_DIR$" external.root.project.path="$MODULE_DIR$" external.system.id="GRADLE" external.system.module.group="" external.system.module.version="unspecified" type="JAVA_MODULE" version="4">
|
||||
<component name="FacetManager">
|
||||
<facet type="android-gradle" name="Android-Gradle">
|
||||
<configuration>
|
||||
<option name="GRADLE_PROJECT_PATH" value=":" />
|
||||
</configuration>
|
||||
</facet>
|
||||
<facet type="android" name="Android">
|
||||
<configuration>
|
||||
<option name="SELECTED_BUILD_VARIANT" value="debug" />
|
||||
<option name="SELECTED_TEST_ARTIFACT" value="_android_test_" />
|
||||
<option name="ASSEMBLE_TASK_NAME" value="assembleDebug" />
|
||||
<option name="COMPILE_JAVA_TASK_NAME" value="compileDebugSources" />
|
||||
<option name="ASSEMBLE_TEST_TASK_NAME" value="assembleDebugAndroidTest" />
|
||||
<option name="COMPILE_JAVA_TEST_TASK_NAME" value="compileDebugAndroidTestSources" />
|
||||
<afterSyncTasks>
|
||||
<task>generateDebugAndroidTestSources</task>
|
||||
<task>generateDebugSources</task>
|
||||
</afterSyncTasks>
|
||||
<option name="ALLOW_USER_CONFIGURATION" value="false" />
|
||||
<option name="RES_FOLDERS_RELATIVE_PATH" value="file://$MODULE_DIR$/res" />
|
||||
</configuration>
|
||||
</facet>
|
||||
</component>
|
||||
<component name="NewModuleRootManager" LANGUAGE_LEVEL="JDK_1_7" inherit-compiler-output="false">
|
||||
<output url="file://$MODULE_DIR$/build/intermediates/classes/debug" />
|
||||
<output-test url="file://$MODULE_DIR$/build/intermediates/classes/androidTest/debug" />
|
||||
<exclude-output />
|
||||
<content url="file://$MODULE_DIR$">
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/debug" isTestSource="false" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/debug" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/debug" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/r/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/aidl/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/buildConfig/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/source/rs/androidTest/debug" isTestSource="true" generated="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/rs/androidTest/debug" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build/generated/res/resValues/androidTest/debug" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/resources" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/aidl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/build-types/debug/rs" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/res" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/mediastreamer2/java/src" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/java/j2se" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/java/common" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/java/impl" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/externals/axmlrpc/src/main/java" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/coreapi/help/java" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/assets" type="java-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/mediastreamer2/java/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/java/j2se" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/java/common" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/java/impl" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/externals/axmlrpc/src/main/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/submodules/linphone/coreapi/help/java" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/main/jni" isTestSource="false" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/res" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/resources" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/assets" type="java-test-resource" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/aidl" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/java" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/jni" isTestSource="true" />
|
||||
<sourceFolder url="file://$MODULE_DIR$/src/androidTest/rs" isTestSource="true" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/assets" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/classes" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/dependency-cache" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/incremental" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/javaResources" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/manifests" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/res" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/rs" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/intermediates/symbols" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/outputs" />
|
||||
<excludeFolder url="file://$MODULE_DIR$/build/tmp" />
|
||||
</content>
|
||||
<orderEntry type="jdk" jdkName="Android API 23 Platform" jdkType="Android SDK" />
|
||||
<orderEntry type="sourceFolder" forTests="false" />
|
||||
<orderEntry type="library" exported="" name="android-support-v4" level="project" />
|
||||
<orderEntry type="library" exported="" name="gcm" level="project" />
|
||||
<orderEntry type="library" exported="" name="android-android-23" level="project" />
|
||||
</component>
|
||||
</module>
|
||||
498
prepare.py
Executable file
|
|
@ -0,0 +1,498 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
############################################################################
|
||||
# prepare.py
|
||||
# Copyright (C) 2016 Belledonne Communications, Grenoble France
|
||||
#
|
||||
############################################################################
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||
#
|
||||
############################################################################
|
||||
|
||||
import argparse
|
||||
import os
|
||||
import platform
|
||||
import re
|
||||
import shutil
|
||||
import sys
|
||||
import tempfile
|
||||
from logging import error, warning, info, INFO, basicConfig
|
||||
from subprocess import Popen, PIPE
|
||||
from distutils.spawn import find_executable
|
||||
sys.dont_write_bytecode = True
|
||||
sys.path.insert(0, 'submodules/cmake-builder')
|
||||
try:
|
||||
import prepare
|
||||
except Exception as e:
|
||||
error(
|
||||
"Could not find prepare module: {}, probably missing submodules/cmake-builder? Try running:\ngit submodule update --init --recursive".format(e))
|
||||
exit(1)
|
||||
|
||||
|
||||
class AndroidTarget(prepare.Target):
|
||||
|
||||
def __init__(self, arch):
|
||||
prepare.Target.__init__(self, 'android-' + arch)
|
||||
current_path = os.path.dirname(os.path.realpath(__file__))
|
||||
self.config_file = 'configs/config-android.cmake'
|
||||
self.toolchain_file = 'toolchains/toolchain-android-' + arch + '.cmake'
|
||||
self.output = 'liblinphone-sdk/android-' + arch
|
||||
self.additional_args = [
|
||||
'-DCMAKE_INSTALL_MESSAGE=LAZY',
|
||||
'-DLINPHONE_BUILDER_EXTERNAL_SOURCE_PATH=' + current_path + '/submodules'
|
||||
]
|
||||
|
||||
def clean(self):
|
||||
if os.path.isdir('WORK'):
|
||||
shutil.rmtree('WORK', ignore_errors=False, onerror=self.handle_remove_read_only)
|
||||
if os.path.isdir('liblinphone-sdk'):
|
||||
shutil.rmtree('liblinphone-sdk', ignore_errors=False, onerror=self.handle_remove_read_only)
|
||||
|
||||
class AndroidArmTarget(AndroidTarget):
|
||||
|
||||
def __init__(self):
|
||||
AndroidTarget.__init__(self, 'arm')
|
||||
self.additional_args += [ '-DENABLE_VIDEO=NO' ]
|
||||
|
||||
class AndroidArmv7Target(AndroidTarget):
|
||||
|
||||
def __init__(self):
|
||||
AndroidTarget.__init__(self, 'armv7')
|
||||
|
||||
class AndroidX86Target(AndroidTarget):
|
||||
|
||||
def __init__(self):
|
||||
AndroidTarget.__init__(self, 'x86')
|
||||
|
||||
targets = {
|
||||
'arm': AndroidArmTarget(),
|
||||
'armv7': AndroidArmv7Target(),
|
||||
'x86': AndroidX86Target()
|
||||
}
|
||||
platforms = ['all', 'arm', 'armv7', 'x86']
|
||||
|
||||
|
||||
|
||||
class PlatformListAction(argparse.Action):
|
||||
|
||||
def __call__(self, parser, namespace, values, option_string=None):
|
||||
if values:
|
||||
for value in values:
|
||||
if value not in platforms:
|
||||
message = ("invalid platform: {0!r} (choose from {1})".format(value, ', '.join([repr(platform) for platform in platforms])))
|
||||
raise argparse.ArgumentError(self, message)
|
||||
setattr(namespace, self.dest, values)
|
||||
|
||||
|
||||
def gpl_disclaimer(platforms):
|
||||
cmakecache = 'WORK/android-{arch}/cmake/CMakeCache.txt'.format(arch=platforms[0])
|
||||
gpl_third_parties_enabled = "ENABLE_GPL_THIRD_PARTIES:BOOL=YES" in open(
|
||||
cmakecache).read() or "ENABLE_GPL_THIRD_PARTIES:BOOL=ON" in open(cmakecache).read()
|
||||
|
||||
if gpl_third_parties_enabled:
|
||||
warning("\n***************************************************************************"
|
||||
"\n***************************************************************************"
|
||||
"\n***** CAUTION, this liblinphone SDK is built using 3rd party GPL code *****"
|
||||
"\n***** Even if you acquired a proprietary license from Belledonne *****"
|
||||
"\n***** Communications, this SDK is GPL and GPL only. *****"
|
||||
"\n***** To disable 3rd party gpl code, please use: *****"
|
||||
"\n***** $ ./prepare.py -DENABLE_GPL_THIRD_PARTIES=NO *****"
|
||||
"\n***************************************************************************"
|
||||
"\n***************************************************************************")
|
||||
else:
|
||||
warning("\n***************************************************************************"
|
||||
"\n***************************************************************************"
|
||||
"\n***** Linphone SDK without 3rd party GPL software *****"
|
||||
"\n***** If you acquired a proprietary license from Belledonne *****"
|
||||
"\n***** Communications, this SDK can be used to create *****"
|
||||
"\n***** a proprietary linphone-based application. *****"
|
||||
"\n***************************************************************************"
|
||||
"\n***************************************************************************")
|
||||
|
||||
|
||||
def check_is_installed(binary, prog='it', warn=True):
|
||||
if not find_executable(binary):
|
||||
if warn:
|
||||
error("Could not find {}. Please install {}.".format(binary, prog))
|
||||
return False
|
||||
return True
|
||||
|
||||
|
||||
def check_tools():
|
||||
ret = 0
|
||||
|
||||
#at least FFmpeg requires no whitespace in sources path...
|
||||
if " " in os.path.dirname(os.path.realpath(__file__)):
|
||||
error("Invalid location: path should not contain any spaces.")
|
||||
ret = 1
|
||||
|
||||
ret |= not check_is_installed('cmake')
|
||||
|
||||
if not os.path.isdir("submodules/linphone/mediastreamer2/src") or not os.path.isdir("submodules/linphone/oRTP/src"):
|
||||
error("Missing some git submodules. Did you run:\n\tgit submodule update --init --recursive")
|
||||
ret = 1
|
||||
|
||||
return ret
|
||||
|
||||
|
||||
def generate_makefile(platforms, generator):
|
||||
arch_targets = ""
|
||||
for arch in platforms:
|
||||
arch_targets += """
|
||||
{arch}: {arch}-build
|
||||
|
||||
{arch}-build:
|
||||
\t{generator} WORK/android-{arch}/cmake
|
||||
\t@echo "Done"
|
||||
""".format(arch=arch, generator=generator)
|
||||
makefile = """
|
||||
archs={archs}
|
||||
TOPDIR=$(shell pwd)
|
||||
LINPHONE_ANDROID_VERSION=$(shell git describe --always)
|
||||
ANDROID_MOST_RECENT_TARGET=$(shell android list target -c | grep -E 'android-[0-9]+' | tail -n1)
|
||||
ANT_SILENT=$(shell ant -h | grep -q -- -S && echo 1 || echo 0)
|
||||
PACKAGE_NAME=$(shell sed -nE 's|<property name="linphone.package.name" value="(.*)" />|\\1|p' custom_rules.xml)
|
||||
|
||||
.PHONY: all
|
||||
.NOTPARALLEL: all generate-apk generate-mediastreamer2-apk install release
|
||||
|
||||
all: update-project generate-apk
|
||||
|
||||
build: $(addsuffix -build, $(archs))
|
||||
|
||||
clean: java-clean
|
||||
|
||||
install: install-apk run-linphone
|
||||
|
||||
java-clean:
|
||||
\tant clean
|
||||
|
||||
$(TOPDIR)/res/raw/rootca.pem:
|
||||
\tcp liblinphone-sdk/android-{first_arch}/share/linphone/rootca.pem $@
|
||||
|
||||
copy-libs:
|
||||
\trm -rf libs/armeabi
|
||||
\tif test -d "liblinphone-sdk/android-arm"; then \\
|
||||
\t\tmkdir -p libs/armeabi && \\
|
||||
\t\tcp -f liblinphone-sdk/android-arm/lib/lib*-armeabi.so libs/armeabi && \\
|
||||
\t\tcp -f liblinphone-sdk/android-arm/lib/mediastreamer/plugins/*.so libs/armeabi; \\
|
||||
\tfi
|
||||
\tif test -f "liblinphone-sdk/android-arm/bin/gdbserver"; then \\
|
||||
\t\tcp -f liblinphone-sdk/android-arm/bin/gdbserver libs/armeabi && \\
|
||||
\t\tcp -f liblinphone-sdk/android-arm/bin/gdb.setup libs/armeabi; \\
|
||||
\tfi
|
||||
\trm -rf libs/armeabi-v7a
|
||||
\tif test -d "liblinphone-sdk/android-armv7"; then \\
|
||||
\t\tmkdir -p libs/armeabi-v7a && \\
|
||||
\t\tcp -f liblinphone-sdk/android-armv7/lib/lib*-armeabi-v7a.so libs/armeabi-v7a && \\
|
||||
\t\tcp -f liblinphone-sdk/android-armv7/lib/mediastreamer/plugins/*.so libs/armeabi-v7a; \\
|
||||
\tfi
|
||||
\tif test -f "liblinphone-sdk/android-armv7/bin/gdbserver"; then \\
|
||||
\t\tcp -f liblinphone-sdk/android-armv7/bin/gdbserver libs/armeabi-v7a && \\
|
||||
\t\tcp -f liblinphone-sdk/android-armv7/bin/gdb.setup libs/armeabi-v7a; \\
|
||||
\tfi
|
||||
\trm -rf libs/x86
|
||||
\tif test -d "liblinphone-sdk/android-x86"; then \\
|
||||
\t\tmkdir -p libs/x86 && \\
|
||||
\t\tcp -f liblinphone-sdk/android-x86/lib/lib*-x86.so libs/x86 && \\
|
||||
\t\tcp -f liblinphone-sdk/android-x86/lib/mediastreamer/plugins/*.so libs/x86; \\
|
||||
\tfi
|
||||
\tif test -f "liblinphone-sdk/android-x86/bin/gdbserver"; then \\
|
||||
\t\tcp -f liblinphone-sdk/android-x86/bin/gdbserver libs/x86 && \\
|
||||
\t\tcp -f liblinphone-sdk/android-x86/bin/gdb.setup libs/x86; \\
|
||||
\tfi
|
||||
|
||||
update-project:
|
||||
\tandroid update project --path . --target $(ANDROID_MOST_RECENT_TARGET)
|
||||
\tandroid update test-project --path tests -m .
|
||||
|
||||
update-mediastreamer2-project:
|
||||
\t@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \\
|
||||
\tandroid update project --path . --target $(ANDROID_MOST_RECENT_TARGET)
|
||||
|
||||
generate-apk: java-clean build copy-libs $(TOPDIR)/res/raw/rootca.pem update-project
|
||||
\techo "version.name=$(LINPHONE_ANDROID_VERSION)" > default.properties && \\
|
||||
\tant debug
|
||||
|
||||
generate-mediastreamer2-apk: java-clean build copy-libs update-mediastreamer2-project
|
||||
\t@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \\
|
||||
\techo "version.name=$(LINPHONE_ANDROID_VERSION)" > default.properties && \\
|
||||
\tant debug
|
||||
|
||||
install-apk:
|
||||
\tant installd
|
||||
|
||||
uninstall:
|
||||
\tadb uninstall $(PACKAGE_NAME)
|
||||
|
||||
release: java-clean build copy-libs update-project
|
||||
\tpatch -p1 < release.patch
|
||||
\tcat ant.properties | grep version.name > default.properties
|
||||
\tant release
|
||||
\tpatch -Rp1 < release.patch
|
||||
|
||||
generate-sdk: liblinphone-android-sdk
|
||||
|
||||
liblinphone-android-sdk: generate-apk
|
||||
\tant liblinphone-android-sdk
|
||||
|
||||
linphone-android-sdk: generate-apk
|
||||
\tant linphone-android-sdk
|
||||
|
||||
mediastreamer2-sdk: generate-mediastreamer2-apk
|
||||
\t@cd $(TOPDIR)/submodules/linphone/mediastreamer2/java && \\
|
||||
\tant mediastreamer2-sdk
|
||||
|
||||
liblinphone_tester:
|
||||
\t$(MAKE) -C liblinphone_tester
|
||||
|
||||
run-linphone:
|
||||
\tant run
|
||||
|
||||
run-liblinphone-tests:
|
||||
\t$(MAKE) -C liblinphone_tester run-all-tests
|
||||
|
||||
run-basic-tests: update-project
|
||||
\tant partial-clean
|
||||
\t$(MAKE) -C tests run-basic-tests ANT_SILENT=$(ANT_SILENT)
|
||||
|
||||
run-all-tests: update-project
|
||||
\tant partial-clean
|
||||
\t$(MAKE) -C tests run-all-tests ANT_SILENT=$(ANT_SILENT)
|
||||
|
||||
|
||||
pull-transifex:
|
||||
\ttx pull -af
|
||||
|
||||
push-transifex:
|
||||
\ttx push -s -f --no-interactive
|
||||
|
||||
{arch_targets}
|
||||
|
||||
help-prepare-options:
|
||||
\t@echo "prepare.py was previously executed with the following options:"
|
||||
\t@echo " {options}"
|
||||
|
||||
help: help-prepare-options
|
||||
\t@echo ""
|
||||
\t@echo "(please read the README.md file first)"
|
||||
\t@echo ""
|
||||
\t@echo "Available architectures: {archs}"
|
||||
\t@echo ""
|
||||
\t@echo "Available targets:"
|
||||
\t@echo ""
|
||||
\t@echo " * all or generate-apk: builds all architectures and creates the linphone application APK"
|
||||
\t@echo " * generate-sdk: builds all architectures and creates the liblinphone SDK"
|
||||
\t@echo " * install: install the linphone application APK (run this only after generate-apk)"
|
||||
\t@echo " * uninstall: uninstall the linphone application"
|
||||
\t@echo ""
|
||||
""".format(archs=' '.join(platforms), arch_opts='|'.join(platforms),
|
||||
first_arch=platforms[0], options=' '.join(sys.argv),
|
||||
arch_targets=arch_targets, generator=generator)
|
||||
f = open('Makefile', 'w')
|
||||
f.write(makefile)
|
||||
f.close()
|
||||
gpl_disclaimer(platforms)
|
||||
|
||||
|
||||
def list_features_with_args(debug, additional_args):
|
||||
tmpdir = tempfile.mkdtemp(prefix="linphone-android")
|
||||
tmptarget = AndroidArmv7Target()
|
||||
tmptarget.abs_cmake_dir = tmpdir
|
||||
|
||||
option_regex = re.compile("ENABLE_(.*):(.*)=(.*)")
|
||||
options = {}
|
||||
ended = True
|
||||
build_type = 'Debug' if debug else 'Release'
|
||||
|
||||
for line in Popen(tmptarget.cmake_command(build_type, False, True, additional_args, verbose=False),
|
||||
cwd=tmpdir, shell=False, stdout=PIPE).stdout.readlines():
|
||||
match = option_regex.match(line)
|
||||
if match is not None:
|
||||
(name, typeof, value) = match.groups()
|
||||
options["ENABLE_{}".format(name)] = value
|
||||
ended &= (value == 'ON')
|
||||
shutil.rmtree(tmpdir)
|
||||
return (options, ended)
|
||||
|
||||
|
||||
def list_features(debug, args):
|
||||
additional_args = args
|
||||
options = {}
|
||||
info("Searching for available features...")
|
||||
# We have to iterate multiple times to activate ALL options, so that options depending
|
||||
# of others are also listed (cmake_dependent_option macro will not output options if
|
||||
# prerequisite is not met)
|
||||
while True:
|
||||
(options, ended) = list_features_with_args(debug, additional_args)
|
||||
if ended:
|
||||
break
|
||||
else:
|
||||
additional_args = []
|
||||
# Activate ALL available options
|
||||
for k in options.keys():
|
||||
additional_args.append("-D{}=ON".format(k))
|
||||
|
||||
# Now that we got the list of ALL available options, we must correct default values
|
||||
# Step 1: all options are turned off by default
|
||||
for x in options.keys():
|
||||
options[x] = 'OFF'
|
||||
# Step 2: except options enabled when running with default args
|
||||
(options_tmp, ended) = list_features_with_args(debug, args)
|
||||
final_dict = dict(options.items() + options_tmp.items())
|
||||
|
||||
notice_features = "Here are available features:"
|
||||
for k, v in final_dict.items():
|
||||
notice_features += "\n\t{}={}".format(k, v)
|
||||
info(notice_features)
|
||||
info("To enable some feature, please use -DENABLE_SOMEOPTION=ON (example: -DENABLE_OPUS=ON)")
|
||||
info("Similarly, to disable some feature, please use -DENABLE_SOMEOPTION=OFF (example: -DENABLE_OPUS=OFF)")
|
||||
|
||||
|
||||
def main(argv=None):
|
||||
basicConfig(format="%(levelname)s: %(message)s", level=INFO)
|
||||
|
||||
if argv is None:
|
||||
argv = sys.argv
|
||||
argparser = argparse.ArgumentParser(
|
||||
description="Prepare build of Linphone and its dependencies.")
|
||||
argparser.add_argument(
|
||||
'-ac', '--all-codecs', help="Enable all codecs, including the non-free ones", action='store_true')
|
||||
argparser.add_argument(
|
||||
'-c', '-C', '--clean', help="Clean a previous build instead of preparing a build.", action='store_true')
|
||||
argparser.add_argument(
|
||||
'-d', '--debug', help="Prepare a debug build, eg. add debug symbols and use no optimizations.", action='store_true')
|
||||
argparser.add_argument(
|
||||
'-dv', '--debug-verbose', help="Activate ms_debug logs.", action='store_true')
|
||||
argparser.add_argument(
|
||||
'--disable-gpl-third-parties', help="Disable GPL third parties such as FFMpeg, x264.", action='store_true')
|
||||
argparser.add_argument(
|
||||
'--enable-non-free-codecs', help="Enable non-free codecs such as OpenH264, MPEG4, etc.. Final application must comply with their respective license (see README.md).", action='store_true')
|
||||
argparser.add_argument(
|
||||
'-f', '--force', help="Force preparation, even if working directory already exist.", action='store_true')
|
||||
argparser.add_argument(
|
||||
'-G', '--generator', help="CMake build system generator (default: Unix Makefiles, use cmake -h to get the complete list).", default='Unix Makefiles', dest='generator')
|
||||
argparser.add_argument(
|
||||
'-L', '--list-cmake-variables', help="List non-advanced CMake cache variables.", action='store_true', dest='list_cmake_variables')
|
||||
argparser.add_argument(
|
||||
'-lf', '--list-features', help="List optional features and their default values.", action='store_true', dest='list_features')
|
||||
argparser.add_argument(
|
||||
'-t', '--tunnel', help="Enable Tunnel.", action='store_true')
|
||||
argparser.add_argument('platform', nargs='*', action=PlatformListAction, default=[
|
||||
'arm', 'armv7', 'x86'], help="The platform to build for (default is 'arm armv7 x86'). Space separated architectures in list: {0}.".format(', '.join([repr(platform) for platform in platforms])))
|
||||
|
||||
args, additional_args2 = argparser.parse_known_args()
|
||||
|
||||
additional_args = ["-G", args.generator]
|
||||
|
||||
if check_tools() != 0:
|
||||
return 1
|
||||
|
||||
if args.debug_verbose is True:
|
||||
additional_args += ["-DENABLE_DEBUG_LOGS=YES"]
|
||||
if args.enable_non_free_codecs is True:
|
||||
additional_args += ["-DENABLE_NON_FREE_CODECS=YES"]
|
||||
if args.all_codecs is True:
|
||||
additional_args += ["-DENABLE_GPL_THIRD_PARTIES=YES"]
|
||||
additional_args += ["-DENABLE_NON_FREE_CODECS=YES"]
|
||||
additional_args += ["-DENABLE_AMRNB=YES"]
|
||||
additional_args += ["-DENABLE_AMRWB=YES"]
|
||||
additional_args += ["-DENABLE_BV16=YES"]
|
||||
additional_args += ["-DENABLE_CODEC2=YES"]
|
||||
additional_args += ["-DENABLE_G729=YES"]
|
||||
additional_args += ["-DENABLE_GSM=YES"]
|
||||
additional_args += ["-DENABLE_ILBC=YES"]
|
||||
additional_args += ["-DENABLE_ISAC=YES"]
|
||||
additional_args += ["-DENABLE_OPUS=YES"]
|
||||
additional_args += ["-DENABLE_SILK=YES"]
|
||||
additional_args += ["-DENABLE_SPEEX=YES"]
|
||||
additional_args += ["-DENABLE_FFMPEG=YES"]
|
||||
additional_args += ["-DENABLE_H263=YES"]
|
||||
additional_args += ["-DENABLE_H263P=YES"]
|
||||
additional_args += ["-DENABLE_MPEG4=YES"]
|
||||
additional_args += ["-DENABLE_OPENH264=YES"]
|
||||
additional_args += ["-DENABLE_VPX=YES"]
|
||||
#additional_args += ["-DENABLE_X264=YES"] # Do not activate x264 because it has text relocation issues
|
||||
if args.disable_gpl_third_parties is True:
|
||||
additional_args += ["-DENABLE_GPL_THIRD_PARTIES=NO"]
|
||||
|
||||
if args.tunnel or os.path.isdir("submodules/tunnel"):
|
||||
if not os.path.isdir("submodules/tunnel"):
|
||||
info("Tunnel wanted but not found yet, trying to clone it...")
|
||||
p = Popen("git clone gitosis@git.linphone.org:tunnel.git submodules/tunnel".split(" "))
|
||||
p.wait()
|
||||
if p.returncode != 0:
|
||||
error("Could not clone tunnel. Please see http://www.belledonne-communications.com/voiptunnel.html")
|
||||
return 1
|
||||
warning("Tunnel enabled, disabling GPL third parties.")
|
||||
additional_args += ["-DENABLE_TUNNEL=YES", "-DENABLE_GPL_THIRD_PARTIES=OFF"]
|
||||
|
||||
# User's options are priority upon all automatic options
|
||||
additional_args += additional_args2
|
||||
|
||||
if args.list_features:
|
||||
list_features(args.debug, additional_args)
|
||||
return 0
|
||||
|
||||
selected_platforms_dup = []
|
||||
for platform in args.platform:
|
||||
if platform == 'all':
|
||||
selected_platforms_dup += ['arm', 'armv7', 'x86']
|
||||
else:
|
||||
selected_platforms_dup += [platform]
|
||||
# unify platforms but keep provided order
|
||||
selected_platforms = []
|
||||
for x in selected_platforms_dup:
|
||||
if x not in selected_platforms:
|
||||
selected_platforms.append(x)
|
||||
|
||||
if os.path.isdir('WORK') and not args.clean and not args.force:
|
||||
warning("Working directory WORK already exists. Please remove it (option -C or -c) before re-executing CMake "
|
||||
"to avoid conflicts between executions, or force execution (option -f) if you are aware of consequences.")
|
||||
if os.path.isfile('Makefile'):
|
||||
Popen("make help-prepare-options".split(" "))
|
||||
return 0
|
||||
|
||||
for platform in selected_platforms:
|
||||
target = targets[platform]
|
||||
|
||||
if args.clean:
|
||||
target.clean()
|
||||
else:
|
||||
retcode = prepare.run(target, args.debug, False, args.list_cmake_variables, args.force, additional_args)
|
||||
if retcode != 0:
|
||||
return retcode
|
||||
|
||||
if args.clean:
|
||||
if os.path.isfile('Makefile'):
|
||||
os.remove('Makefile')
|
||||
elif selected_platforms:
|
||||
# only generated makefile if we are using Ninja or Makefile
|
||||
if args.generator.endswith('Ninja'):
|
||||
if not check_is_installed("ninja", "it"):
|
||||
return 1
|
||||
generate_makefile(selected_platforms, 'ninja -C')
|
||||
info("You can now run 'make' to build.")
|
||||
elif args.generator.endswith("Unix Makefiles"):
|
||||
generate_makefile(selected_platforms, '$(MAKE) -C')
|
||||
info("You can now run 'make' to build.")
|
||||
else:
|
||||
warning("Not generating meta-makefile for generator {}.".format(target.generator))
|
||||
|
||||
return 0
|
||||
|
||||
if __name__ == "__main__":
|
||||
sys.exit(main())
|
||||
|
|
@ -6,8 +6,8 @@ index 5ef1374..86e13be 100644
|
|||
|
||||
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true"/>
|
||||
|
||||
- <application android:label="@string/app_name" android:icon="@drawable/linphone_logo" android:largeHeap="true" android:allowBackup="true">
|
||||
+ <application android:label="@string/app_name" android:icon="@drawable/linphone_logo" android:largeHeap="true" android:allowBackup="true" android:debuggable="false">
|
||||
- <application android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:largeHeap="true" android:allowBackup="true">
|
||||
+ <application android:label="@string/app_name" android:icon="@mipmap/ic_launcher" android:largeHeap="true" android:allowBackup="true" android:debuggable="false">
|
||||
|
||||
<activity android:name="org.linphone.LinphoneLauncherActivity"
|
||||
android:label="@string/app_name"
|
||||
|
|
|
|||
BIN
res/drawable-xhdpi/camera_disabled.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
res/drawable-xhdpi/contact_add_disabled.png
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
BIN
res/drawable-xhdpi/delete_disabled.png
Normal file
|
After Width: | Height: | Size: 1.8 KiB |
BIN
res/drawable-xhdpi/fast_scroll_default.png
Normal file
|
After Width: | Height: | Size: 326 B |
BIN
res/drawable-xhdpi/fast_scroll_over.png
Normal file
|
After Width: | Height: | Size: 605 B |
BIN
res/drawable-xhdpi/micro_disabled.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
res/drawable-xhdpi/options_add_call_disabled.png
Normal file
|
After Width: | Height: | Size: 4.5 KiB |
BIN
res/drawable-xhdpi/options_disabled.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
res/drawable-xhdpi/options_start_conference_disabled.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
res/drawable-xhdpi/options_transfer_call_disabled.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
BIN
res/drawable-xhdpi/resizable_assistant_button_disabled.9.png
Normal file
|
After Width: | Height: | Size: 419 B |
BIN
res/drawable-xhdpi/speaker_disabled.png
Normal file
|
After Width: | Height: | Size: 2 KiB |
BIN
res/drawable-xhdpi/valid_disabled.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
|
@ -3,7 +3,7 @@
|
|||
<item android:state_pressed="true"
|
||||
android:drawable="@drawable/resizable_cancel_button_over" />
|
||||
<item android:state_enabled="false"
|
||||
android:drawable="@drawable/resizable_cancel_button_over" />
|
||||
android:drawable="@drawable/resizable_assistant_button_disabled" />
|
||||
<item
|
||||
android:drawable="@drawable/resizable_cancel_button" />
|
||||
</selector>
|
||||
|
|
|
|||
7
res/drawable/camera_button.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="false"
|
||||
android:drawable="@drawable/camera_disabled" />
|
||||
<item
|
||||
android:drawable="@drawable/camera_default" />
|
||||
</selector>
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<bitmap
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:src="@drawable/edit_list"
|
||||
android:alpha="0.2" />
|
||||
6
res/drawable/fast_scroll.xml
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_pressed="true" android:drawable="@drawable/fast_scroll_over" />
|
||||
<item android:drawable="@drawable/fast_scroll_default" />
|
||||
</selector>
|
||||
|
||||
9
res/drawable/fast_scroll_preview.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item>
|
||||
<shape android:shape="rectangle">
|
||||
<size android:width="70dp" android:height="70dp"/>
|
||||
<solid android:color="@color/colorA" />
|
||||
</shape>
|
||||
</item>
|
||||
</layer-list>
|
||||
|
|
@ -1,5 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<bitmap
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:src="@drawable/menu"
|
||||
android:alpha="0.3" />
|
||||
7
res/drawable/options_add_call_button.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="false"
|
||||
android:drawable="@drawable/options_add_call_disabled" />
|
||||
<item
|
||||
android:drawable="@drawable/options_add_call" />
|
||||
</selector>
|
||||
7
res/drawable/options_start_conference_button.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="false"
|
||||
android:drawable="@drawable/options_start_conference_disabled" />
|
||||
<item
|
||||
android:drawable="@drawable/options_start_conference" />
|
||||
</selector>
|
||||
7
res/drawable/options_transfer_call_button.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<selector xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item android:state_enabled="false"
|
||||
android:drawable="@drawable/options_transfer_call_disabled" />
|
||||
<item
|
||||
android:drawable="@drawable/options_transfer_call" />
|
||||
</selector>
|
||||
167
res/layout-land/about.xml
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
android:orientation="horizontal"
|
||||
android:background="@color/colorF"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp">
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/menu_name"
|
||||
android:text="@string/about"
|
||||
style="@style/font1"
|
||||
android:singleLine="true"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.4"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
android:src="@drawable/dialer_back"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:padding="15dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorC"
|
||||
android:orientation="horizontal"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_gravity="center">
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="center">
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/splashscreen"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="60dp"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<TextView
|
||||
android:text="@string/app_name"
|
||||
style="@style/font15"
|
||||
android:paddingTop="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<TextView
|
||||
android:text="@string/app_description"
|
||||
style="@style/font3"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="vertical"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="center">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about_android_version"
|
||||
android:text="@string/about_version"
|
||||
style="@style/font12"
|
||||
android:layout_gravity="left"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about_liblinphone_version"
|
||||
android:text="@string/about_liblinphone_version"
|
||||
style="@style/font12"
|
||||
android:layout_gravity="left"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorH"
|
||||
android:orientation="vertical"
|
||||
android:padding="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_gravity="center">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about_link"
|
||||
android:text="@string/about_link"
|
||||
android:autoLink="web"
|
||||
style="@style/font2"
|
||||
android:textColorLink="@color/colorA"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/about_text"
|
||||
android:text="@string/about_text"
|
||||
style="@style/font23"
|
||||
android:layout_gravity="center"
|
||||
android:gravity="center"
|
||||
android:textSize="18sp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<View
|
||||
android:background="@color/colorE"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center">
|
||||
|
||||
<Button
|
||||
android:id="@+id/send_log"
|
||||
android:background="@drawable/button_background"
|
||||
android:layout_margin="5dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/menu_send_log" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/reset_log"
|
||||
android:background="@drawable/button_background"
|
||||
android:layout_margin="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/menu_reset_log" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -212,32 +212,27 @@
|
|||
android:layout_weight="0.8"
|
||||
android:padding="15dp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/hang_up"
|
||||
android:src="@drawable/call_hangup"
|
||||
android:background="@drawable/hangup"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.4"
|
||||
android:padding="12dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chat"
|
||||
android:src="@drawable/chat"
|
||||
android:background="@color/colorC"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.8"
|
||||
android:padding="15dp"/>
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/hang_up"
|
||||
android:src="@drawable/call_hangup"
|
||||
android:background="@drawable/hangup"
|
||||
android:contentDescription="@string/content_description_hang_up"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:padding="12dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/menu"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:layout_height="60dp"
|
||||
android:orientation="vertical">
|
||||
<ImageView
|
||||
android:id="@+id/chat"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:background="@color/colorC"
|
||||
android:contentDescription="@string/content_description_chat_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:padding="15dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorF"
|
||||
|
|
@ -251,22 +246,19 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/video"
|
||||
android:src="@drawable/camera_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/video_in_progress"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ImageView
|
||||
android:id="@+id/video"
|
||||
android:src="@drawable/camera_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_switch_video"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
|
@ -279,37 +271,46 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
android:src="@drawable/speaker_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
<ImageView
|
||||
android:id="@+id/micro"
|
||||
android:src="@drawable/micro_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_toggle_micro"
|
||||
android:padding="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/audio_route"
|
||||
android:src="@drawable/routes"
|
||||
android:background="@drawable/button_background"
|
||||
android:visibility="gone"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
android:src="@drawable/speaker_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_toggle_speaker"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/options"
|
||||
android:src="@drawable/options_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/audio_route"
|
||||
android:src="@drawable/routes_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_audio_route"
|
||||
android:visibility="gone"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/options"
|
||||
android:src="@drawable/options_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_call_options"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/menu_bottom"
|
||||
|
|
@ -330,25 +331,27 @@
|
|||
android:visibility="invisible"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_bluetooth"
|
||||
android:src="@drawable/route_bluetooth"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5" />
|
||||
<ImageView
|
||||
android:id="@+id/route_bluetooth"
|
||||
android:src="@drawable/route_bluetooth"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_bluetooth"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_call"
|
||||
android:src="@drawable/options_add_call"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5" />
|
||||
<ImageView
|
||||
android:id="@+id/add_call"
|
||||
android:src="@drawable/options_add_call"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_add_call"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
@ -371,25 +374,27 @@
|
|||
android:visibility="invisible"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_earpiece"
|
||||
android:src="@drawable/route_earpiece"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"/>
|
||||
<ImageView
|
||||
android:id="@+id/route_earpiece"
|
||||
android:src="@drawable/route_earpiece"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_earpiece"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:src="@drawable/options_transfer_call"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"/>
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:src="@drawable/options_transfer_call"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_transfer"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
@ -414,7 +419,8 @@
|
|||
<ImageView
|
||||
android:id="@+id/route_speaker"
|
||||
android:src="@drawable/route_speaker"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_toggle_speaker"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -424,7 +430,8 @@
|
|||
<ImageView
|
||||
android:id="@+id/conference"
|
||||
android:src="@drawable/options_start_conference"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_conference"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -52,9 +52,9 @@
|
|||
android:id="@+id/contact_detail"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:paddingTop="10dp"
|
||||
android:layout_above="@+id/menu">
|
||||
android:layout_above="@+id/menu"
|
||||
android:layout_below="@+id/top_bar">
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorG"
|
||||
|
|
|
|||
|
|
@ -53,8 +53,8 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_above="@id/menu"
|
||||
android:layout_below="@id/top_bar"
|
||||
android:paddingTop="10dp">
|
||||
android:paddingTop="10dp"
|
||||
android:layout_below="@+id/top_bar">
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorG"
|
||||
|
|
@ -107,7 +107,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:padding="12dp"/>
|
||||
android:padding="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
|
|
|
|||
113
res/layout-land/chatlist_cell.xml
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:paddingTop="5dp"
|
||||
android:background="@drawable/list_selector">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/delete_chatroom"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="invisible" android:layout_alignParentTop="true"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/avatar_layout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_picture"
|
||||
android:src="@drawable/avatar"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:singleLine="true"
|
||||
android:layout_alignBottom="@id/sipUri"
|
||||
style="@style/font2"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sipUri"
|
||||
android:lines="1"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
style="@style/font6"
|
||||
android:paddingLeft="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/date"
|
||||
android:layout_marginRight="30dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/unreadMessages"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:background="@drawable/chat_list_indicator"
|
||||
android:contentDescription="@string/content_description_unread_chat_message"
|
||||
style="@style/font18"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentTop="true"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lastMessage"
|
||||
android:maxLines="2"
|
||||
android:ellipsize="end"
|
||||
android:layout_below="@id/sipUri"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/font11"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
96
res/layout-land/dialer.xml
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/address_bar"
|
||||
android:background="@color/colorF"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_alignParentTop="true">
|
||||
|
||||
<org.linphone.ui.EraseButton
|
||||
android:id="@+id/erase"
|
||||
android:src="@drawable/backspace"
|
||||
android:contentDescription="@string/content_description_backspace"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_marginRight="10dp"
|
||||
android:layout_marginLeft="10dp" />
|
||||
|
||||
<org.linphone.ui.AddressText
|
||||
android:id="@+id/address"
|
||||
android:background="@color/colorF"
|
||||
android:textColorHint="@color/colorE"
|
||||
style="@style/font5"
|
||||
android:ellipsize="start"
|
||||
android:inputType="textEmailAddress"
|
||||
android:hint="@string/address_bar_hint"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="20dp"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_toLeftOf="@id/erase"
|
||||
android:layout_centerVertical="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<org.linphone.ui.Numpad
|
||||
android:id="@+id/numpad"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="10dp"
|
||||
android:visibility="gone"
|
||||
android:layout_above="@id/controls"
|
||||
android:layout_below="@id/address_bar"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/dialer_background"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/controls"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp">
|
||||
|
||||
<RelativeLayout
|
||||
android:focusable="true"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:adjustViewBounds="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_contact"
|
||||
android:src="@drawable/contact_add_button"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<org.linphone.ui.CallButton
|
||||
android:id="@+id/call"
|
||||
android:src="@drawable/call_audio_start"
|
||||
android:background="@drawable/call"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
50
res/layout-land/launch_screen.xml
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="@color/colorC"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/splashscreen"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:layout_gravity="center_horizontal"/>
|
||||
|
||||
<TextView
|
||||
android:text="@string/app_name"
|
||||
style="@style/font21"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<TextView
|
||||
android:text="@string/app_description"
|
||||
android:textSize="28sp"
|
||||
android:textColor="@color/colorA"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<ProgressBar
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_marginBottom="20dp"
|
||||
android:layout_gravity="center_horizontal|bottom" />
|
||||
|
||||
<View
|
||||
android:background="@color/colorA"
|
||||
android:layout_height="10dp"
|
||||
android:layout_width="100dp"
|
||||
android:layout_gravity="center_horizontal|bottom" />
|
||||
|
||||
</FrameLayout>
|
||||
|
|
@ -42,6 +42,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
android:src="@drawable/dialer_back"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="15dp"
|
||||
|
|
@ -88,6 +89,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/history_image"
|
||||
android:layout_width="match_parent"
|
||||
android:contentDescription="@string/content_description_history"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="18dp"
|
||||
android:layout_centerInParent="true"
|
||||
|
|
@ -97,14 +99,14 @@
|
|||
<TextView
|
||||
android:id="@+id/missed_calls"
|
||||
style="@style/font7"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_margin="12dp"
|
||||
android:background="@drawable/history_chat_indicator"
|
||||
android:visibility="gone"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"/>
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
|
@ -119,7 +121,24 @@
|
|||
android:padding="18dp"
|
||||
android:layout_centerInParent="true" />
|
||||
|
||||
<ImageView
|
||||
<ImageView
|
||||
android:src="@drawable/footer_contacts"
|
||||
android:contentDescription="@string/content_description_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/contacts_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:visibility="gone"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/dialer"
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:background="@drawable/footer_button"
|
||||
|
|
@ -130,6 +149,23 @@
|
|||
android:padding="18dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/dialer_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentLeft="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/chat"
|
||||
android:background="@drawable/footer_button"
|
||||
|
|
@ -140,6 +176,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/chat_image"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:contentDescription="@string/content_description_chat_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="18dp"
|
||||
|
|
@ -148,14 +185,14 @@
|
|||
<TextView
|
||||
android:id="@+id/missed_chats"
|
||||
style="@style/font7"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:layout_margin="12dp"
|
||||
android:background="@drawable/history_chat_indicator"
|
||||
android:visibility="gone"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"/>
|
||||
android:visibility="gone"
|
||||
android:layout_marginTop="15dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
|
@ -186,7 +223,7 @@
|
|||
|
||||
<ListView
|
||||
android:id="@+id/accounts_list"
|
||||
android:background="@color/colorG"
|
||||
android:background="@color/colorB"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:choiceMode="singleChoice"
|
||||
|
|
@ -196,12 +233,12 @@
|
|||
|
||||
<ListView
|
||||
android:id="@+id/item_list"
|
||||
android:background="@color/colorG"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:choiceMode="singleChoice"
|
||||
android:divider="@color/colorE"
|
||||
android:listSelector="@color/colorG"
|
||||
android:listSelector="@color/colorH"
|
||||
android:dividerHeight="1dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
|
|
@ -232,9 +269,44 @@
|
|||
android:layout_toRightOf="@id/quit_button"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/colorH"
|
||||
android:layout_above="@id/side_menu_quit"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/side_menu_main_account"/>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/accounts_list"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:choiceMode="singleChoice"
|
||||
android:cacheColorHint="@color/transparent"
|
||||
android:divider="@android:color/transparent"
|
||||
android:dividerHeight="0dp"/>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/item_list"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:choiceMode="singleChoice"
|
||||
android:divider="@color/colorE"
|
||||
android:listSelector="@color/colorH"
|
||||
android:footerDividersEnabled="true"
|
||||
android:dividerHeight="1dp"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/colorE"/>
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
|
|
|
|||
26
res/layout-land/search_contact_cell.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/layout"
|
||||
android:background="@drawable/list_selector"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:padding="5dp"
|
||||
android:gravity="center_vertical"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_name"
|
||||
style="@style/font6"
|
||||
android:lines="1"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_address"
|
||||
style="@style/font2"
|
||||
android:lines="1"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
</LinearLayout>
|
||||
20
res/layout-land/video_no_opengl.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/video_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<SurfaceView
|
||||
android:visibility="visible"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/videoSurface" />
|
||||
|
||||
<SurfaceView
|
||||
android:id="@+id/videoCaptureSurface"
|
||||
android:layout_width="145dp"
|
||||
android:layout_height="120dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
@ -56,6 +56,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -132,6 +133,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textPassword"
|
||||
android:contentDescription="@string/content_description_confirm_password_field"
|
||||
android:textCursorDrawable="@null"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
|
|
@ -169,6 +171,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_email_field"
|
||||
android:textCursorDrawable="@null"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
|
|
|
|||
|
|
@ -50,6 +50,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -103,6 +104,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textEmailAddress"
|
||||
android:contentDescription="@string/content_description_display_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -107,6 +108,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textEmailAddress"
|
||||
android:contentDescription="@string/content_description_display_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -131,6 +133,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textEmailAddress"
|
||||
android:contentDescription="@string/content_description_domain_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
|
|||
|
|
@ -185,17 +185,36 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dialer"
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:background="@color/colorC"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:padding="15dp"
|
||||
android:contentDescription="@string/content_description_numpad"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</FrameLayout>
|
||||
<ImageView
|
||||
android:id="@+id/hang_up"
|
||||
android:src="@drawable/call_hangup"
|
||||
android:background="@drawable/hangup"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"
|
||||
android:padding="12dp"
|
||||
android:contentDescription="@string/content_description_hang_up"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/call_bar"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal" >
|
||||
<ImageView
|
||||
android:id="@+id/chat"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:background="@color/colorC"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:padding="15dp"
|
||||
android:contentDescription="@string/content_description_chat_button"/>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/main_bar"
|
||||
|
|
@ -231,7 +250,14 @@
|
|||
android:layout_weight="0.2"
|
||||
android:padding="12dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/video"
|
||||
android:src="@drawable/camera_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:contentDescription="@string/content_description_switch_video"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/menu"
|
||||
|
|
@ -246,30 +272,46 @@
|
|||
android:layout_height="60dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:background="@drawable/button_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<ImageView
|
||||
android:id="@+id/micro"
|
||||
android:src="@drawable/micro_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@string/content_description_toggle_micro"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/video"
|
||||
android:src="@drawable/camera_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
android:src="@drawable/speaker_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@string/content_description_toggle_speaker"/>
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/video_in_progress"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ImageView
|
||||
android:id="@+id/audio_route"
|
||||
android:src="@drawable/routes_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:visibility="gone"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@string/content_description_audio_route"/>
|
||||
|
||||
</RelativeLayout>
|
||||
<ImageView
|
||||
android:id="@+id/options"
|
||||
android:src="@drawable/options_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:contentDescription="@string/content_description_call_options"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/micro"
|
||||
|
|
@ -289,15 +331,14 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/audio_route"
|
||||
android:src="@drawable/routes"
|
||||
android:background="@drawable/button_background"
|
||||
android:visibility="gone"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
<LinearLayout
|
||||
android:id="@+id/menu_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_above="@id/menu"
|
||||
android:orientation="horizontal"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_alignParentStart="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/options"
|
||||
|
|
@ -312,18 +353,27 @@
|
|||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/menu_bottom"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_above="@id/call_bar"
|
||||
android:orientation="horizontal" >
|
||||
<ImageView
|
||||
android:id="@+id/route_bluetooth"
|
||||
android:src="@drawable/route_bluetooth"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"
|
||||
android:contentDescription="@string/content_description_bluetooth"/>
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="invisible"
|
||||
android:layout_weight="0.2"/>
|
||||
<ImageView
|
||||
android:id="@+id/add_call"
|
||||
android:src="@drawable/options_add_call"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"
|
||||
android:contentDescription="@string/content_description_add_call"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_bluetooth"
|
||||
|
|
@ -354,21 +404,27 @@
|
|||
android:layout_above="@id/menu_bottom"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="invisible"
|
||||
android:layout_weight="0.2"/>
|
||||
<ImageView
|
||||
android:id="@+id/route_earpiece"
|
||||
android:src="@drawable/route_earpiece"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"
|
||||
android:contentDescription="@string/content_description_earpiece"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_earpiece"
|
||||
android:src="@drawable/route_earpiece"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.22" />
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:src="@drawable/options_transfer_call"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"
|
||||
android:contentDescription="@string/content_description_transfer"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
|
|
@ -394,26 +450,27 @@
|
|||
android:visibility="invisible"
|
||||
android:layout_weight="0.2"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_speaker"
|
||||
android:src="@drawable/route_speaker"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.22" />
|
||||
<ImageView
|
||||
android:id="@+id/route_speaker"
|
||||
android:src="@drawable/route_speaker"
|
||||
android:background="@drawable/button_background"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"
|
||||
android:contentDescription="@string/content_description_toggle_speaker"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/conference"
|
||||
android:src="@drawable/options_start_conference"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.22" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/conference"
|
||||
android:src="@drawable/options_start_conference"
|
||||
android:background="@drawable/button_background"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1.4"
|
||||
android:contentDescription="@string/content_description_conference"/>
|
||||
|
||||
<org.linphone.ui.Numpad
|
||||
android:id="@+id/numpad"
|
||||
|
|
|
|||
|
|
@ -161,7 +161,6 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:alpha="0.2"/>
|
||||
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/arrow_hangup"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp"
|
||||
android:layout_height="80dp"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
|
|
@ -12,13 +12,13 @@
|
|||
android:id="@+id/delete_chatroom"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="invisible" />
|
||||
android:visibility="invisible"
|
||||
android:layout_alignParentTop="true"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -38,6 +38,15 @@
|
|||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/avatar_layout"
|
||||
android:layout_marginTop="5dp"
|
||||
android:singleLine="true"
|
||||
style="@style/font2"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
|
|
@ -45,28 +54,14 @@
|
|||
android:layout_height="match_parent"
|
||||
android:paddingLeft="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="5dp"
|
||||
android:singleLine="true"
|
||||
style="@style/font2"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sipUri"
|
||||
android:lines="1"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:scrollHorizontally="true"
|
||||
android:fadingEdge="horizontal"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
style="@style/font2"
|
||||
android:paddingLeft="10dp"
|
||||
android:layout_marginTop="5dp"
|
||||
style="@style/font6"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toRightOf="@id/date"
|
||||
android:layout_marginRight="30dp"/>
|
||||
|
||||
<TextView
|
||||
|
|
@ -74,7 +69,8 @@
|
|||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:background="@drawable/chat_list_indicator"
|
||||
style="@style/font7"
|
||||
android:contentDescription="@string/content_description_unread_chat_message"
|
||||
style="@style/font18"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:layout_alignParentRight="true"
|
||||
|
|
@ -88,6 +84,7 @@
|
|||
android:layout_below="@id/sipUri"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="30dp"
|
||||
style="@style/font11"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
<org.linphone.ui.EraseButton
|
||||
android:id="@+id/erase"
|
||||
android:src="@drawable/backspace"
|
||||
android:contentDescription="@string/content_description_backspace"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
|
|
@ -69,12 +70,23 @@
|
|||
android:background="@drawable/button_back_background"
|
||||
android:layout_width="102dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="20dp"
|
||||
android:visibility="gone"/>
|
||||
android:layout_weight="1"
|
||||
android:adjustViewBounds="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_contact"
|
||||
android:src="@drawable/contact_add_button"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
|
||||
<org.linphone.ui.CallButton
|
||||
android:id="@+id/call"
|
||||
android:src="@drawable/call_audio_start"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:background="@drawable/call"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
android:src="@drawable/dialer_back"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="15dp"
|
||||
|
|
@ -71,7 +72,7 @@
|
|||
android:id="@+id/fragmentContainer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.63"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal" />
|
||||
|
||||
<LinearLayout
|
||||
|
|
@ -79,7 +80,7 @@
|
|||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.37"
|
||||
android:layout_weight="1"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<View
|
||||
|
|
@ -110,6 +111,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/history_image"
|
||||
android:src="@drawable/footer_history"
|
||||
android:contentDescription="@string/content_description_history"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
|
|
@ -119,13 +121,14 @@
|
|||
android:id="@+id/missed_calls"
|
||||
android:background="@drawable/history_chat_indicator"
|
||||
style="@style/font7"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:visibility="gone"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_alignBottom="@+id/history_image"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentRight="true"/>
|
||||
android:layout_marginRight="5dp"
|
||||
android:visibility="gone"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
|
@ -139,16 +142,39 @@
|
|||
android:padding="15dp"
|
||||
android:layout_centerInParent="true" />
|
||||
|
||||
<ImageView
|
||||
<ImageView
|
||||
android:src="@drawable/footer_contacts"
|
||||
android:contentDescription="@string/content_description_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/contacts_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="5dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:visibility="gone"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/dialer"
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:background="@drawable/footer_button"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="0dp"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
android:layout_height="0dp">
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/chat"
|
||||
|
|
@ -160,6 +186,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/chat_image"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:contentDescription="@string/content_description_chat_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
|
|
@ -169,12 +196,12 @@
|
|||
android:id="@+id/missed_chats"
|
||||
android:background="@drawable/history_chat_indicator"
|
||||
style="@style/font7"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
android:visibility="gone"
|
||||
android:layout_alignBottom="@+id/chat_image"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:gravity="center"
|
||||
android:layout_marginRight="5dp"
|
||||
android:visibility="gone"
|
||||
android:layout_centerVertical="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
|
||||
|
|
|
|||
20
res/layout-sw533dp-land/video_no_opengl.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/video_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<SurfaceView
|
||||
android:visibility="visible"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/videoSurface" />
|
||||
|
||||
<SurfaceView
|
||||
android:id="@+id/videoCaptureSurface"
|
||||
android:layout_width="218dp"
|
||||
android:layout_height="160dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
111
res/layout-sw533dp/chatlist_cell.xml
Normal file
|
|
@ -0,0 +1,111 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="100dp"
|
||||
android:gravity="center_vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:paddingTop="5dp"
|
||||
android:background="@drawable/list_selector">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/delete_chatroom"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="invisible"
|
||||
android:layout_alignParentTop="true"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_centerVertical="true"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/avatar_layout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_centerHorizontal="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_picture"
|
||||
android:src="@drawable/avatar"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/avatar_layout"
|
||||
android:layout_marginTop="5dp"
|
||||
android:singleLine="true"
|
||||
style="@style/font2"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingLeft="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/sipUri"
|
||||
android:lines="1"
|
||||
android:ellipsize="end"
|
||||
android:fadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
style="@style/font6"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="30dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/unreadMessages"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:background="@drawable/chat_list_indicator"
|
||||
android:contentDescription="@string/content_description_unread_chat_message"
|
||||
style="@style/font18"
|
||||
android:gravity="center"
|
||||
android:singleLine="true"
|
||||
android:layout_above="@+id/lastMessage"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/lastMessage"
|
||||
android:maxLines="3"
|
||||
android:ellipsize="end"
|
||||
android:layout_below="@id/sipUri"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginRight="30dp"
|
||||
style="@style/font11"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
@ -24,6 +24,7 @@
|
|||
<org.linphone.ui.EraseButton
|
||||
android:id="@+id/erase"
|
||||
android:src="@drawable/backspace"
|
||||
android:contentDescription="@string/content_description_backspace"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
|
|
@ -72,10 +73,23 @@
|
|||
android:padding="20dp"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_contact"
|
||||
android:src="@drawable/contact_add_button"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<org.linphone.ui.CallButton
|
||||
android:id="@+id/call"
|
||||
android:src="@drawable/call_audio_start"
|
||||
android:background="@drawable/call"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp"
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
android:src="@drawable/dialer_back"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="15dp"
|
||||
|
|
@ -88,7 +89,6 @@
|
|||
android:layout_height="match_parent"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
</FrameLayout>
|
||||
|
||||
|
|
@ -109,7 +109,9 @@
|
|||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/history_image"
|
||||
android:id="@+id/footer_history"
|
||||
android:src="@drawable/footer_history"
|
||||
android:contentDescription="@string/content_description_history"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="18dp"
|
||||
|
|
@ -124,10 +126,14 @@
|
|||
android:layout_height="25dp"
|
||||
android:layout_margin="12dp"
|
||||
android:background="@drawable/history_chat_indicator"
|
||||
android:visibility="gone"
|
||||
style="@style/font18"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"/>
|
||||
android:layout_margin="20dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:visibility="visible"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
|
@ -142,16 +148,39 @@
|
|||
android:padding="18dp"
|
||||
android:layout_centerInParent="true" />
|
||||
|
||||
<ImageView
|
||||
<ImageView
|
||||
android:src="@drawable/footer_contacts"
|
||||
android:contentDescription="@string/content_description_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/contacts_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/dialer"
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:background="@drawable/footer_button"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="18dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/chat"
|
||||
|
|
@ -163,6 +192,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/chat_image"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:contentDescription="@string/content_description_chat"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="18dp"
|
||||
|
|
@ -175,10 +205,14 @@
|
|||
android:layout_height="25dp"
|
||||
android:layout_margin="12dp"
|
||||
android:background="@drawable/history_chat_indicator"
|
||||
android:visibility="gone"
|
||||
style="@style/font18"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:layout_margin="20dp"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"/>
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:visibility="gone"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
20
res/layout-sw720dp-land/video_no_opengl.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/video_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<SurfaceView
|
||||
android:visibility="visible"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/videoSurface" />
|
||||
|
||||
<SurfaceView
|
||||
android:id="@+id/videoCaptureSurface"
|
||||
android:layout_width="290dp"
|
||||
android:layout_height="240dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
@ -31,7 +31,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:contentDescription="@string/content_description_edit"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
|
|||
|
|
@ -49,6 +49,7 @@
|
|||
android:id="@+id/username"
|
||||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
|
|
@ -117,6 +118,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textPassword"
|
||||
android:contentDescription="@string/content_description_confirm_password_field"
|
||||
android:textCursorDrawable="@null"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
|
|
@ -152,6 +154,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_email_field"
|
||||
android:textCursorDrawable="@null"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
|
|
@ -175,7 +178,6 @@
|
|||
android:background="@drawable/assistant_button"
|
||||
android:textColor="@drawable/assistant_button_text_color"
|
||||
style="@style/font8"
|
||||
android:contentDescription="@string/content_description_valid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="40dp"
|
||||
android:paddingLeft="10dp"
|
||||
|
|
|
|||
|
|
@ -1,44 +1,49 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="30dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical" >
|
||||
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
android:text="@string/assistant_create_account"
|
||||
style="@style/font6"
|
||||
android:textAllCaps="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="30dp"
|
||||
android:gravity="center_horizontal"
|
||||
android:orientation="vertical" >
|
||||
|
||||
<TextView
|
||||
android:text="@string/assistant_create_account_part_2"
|
||||
style="@style/font11"
|
||||
android:paddingTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<TextView
|
||||
android:text="@string/assistant_create_account"
|
||||
style="@style/font6"
|
||||
android:textAllCaps="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:text="@string/assistant_validate_account"
|
||||
style="@style/font11"
|
||||
android:paddingTop="10dp"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<TextView
|
||||
android:text="@string/assistant_create_account_part_2"
|
||||
style="@style/font11"
|
||||
android:paddingTop="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/assistant_check"
|
||||
android:text="@string/assistant_create_account"
|
||||
android:background="@drawable/assistant_button"
|
||||
style="@style/font8"
|
||||
android:contentDescription="@string/content_description_valid"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="40dp"
|
||||
android:layout_margin="10dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"/>
|
||||
<TextView
|
||||
android:text="@string/assistant_validate_account"
|
||||
style="@style/font11"
|
||||
android:paddingTop="10dp"
|
||||
android:gravity="center"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</LinearLayout>
|
||||
<Button
|
||||
android:id="@+id/assistant_check"
|
||||
android:text="@string/assistant_finish"
|
||||
android:background="@drawable/assistant_button"
|
||||
android:textColor="@drawable/assistant_button_text_color"
|
||||
style="@style/font8"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="40dp"
|
||||
android:layout_margin="10dp"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
</ScrollView>
|
||||
|
|
@ -46,6 +46,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -80,6 +81,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textEmailAddress"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
|
|||
|
|
@ -46,6 +46,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="text|textEmailAddress"
|
||||
android:contentDescription="@string/content_description_username_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -80,6 +81,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textEmailAddress"
|
||||
android:contentDescription="@string/content_description_domain_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
@ -97,6 +99,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textEmailAddress"
|
||||
android:contentDescription="@string/content_description_display_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
android:background="@drawable/resizable_textfield"
|
||||
android:textColor="@color/colorB"
|
||||
android:inputType="textUri"
|
||||
android:contentDescription="@string/content_description_url_field"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:singleLine="true"/>
|
||||
|
|
|
|||
|
|
@ -27,10 +27,10 @@
|
|||
<ImageView
|
||||
android:id="@+id/assistant_cancel"
|
||||
android:src="@drawable/dialer_back"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:padding="15dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
@ -70,14 +70,15 @@
|
|||
android:layout_alignParentBottom="true"
|
||||
android:orientation="vertical">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/current_contact_name"
|
||||
style="@style/font13"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_gravity="center"/>
|
||||
<TextView
|
||||
android:id="@+id/current_contact_name"
|
||||
style="@style/font5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingTop="5dp"
|
||||
android:gravity="center"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_gravity="center"/>
|
||||
|
||||
<Chronometer
|
||||
android:id="@+id/current_call_timer"
|
||||
|
|
@ -193,25 +194,19 @@
|
|||
android:layout_weight="0.8"
|
||||
android:padding="15dp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/hang_up"
|
||||
android:src="@drawable/call_hangup"
|
||||
android:background="@drawable/hangup"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.4"
|
||||
android:padding="12dp"/>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chat"
|
||||
android:src="@drawable/chat"
|
||||
android:background="@color/colorC"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.8"
|
||||
android:padding="15dp"/>
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/video"
|
||||
android:src="@drawable/camera_button"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_switch_video"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/menu"
|
||||
|
|
@ -226,30 +221,47 @@
|
|||
android:layout_height="60dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<RelativeLayout
|
||||
android:background="@drawable/button_background"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1">
|
||||
<ImageView
|
||||
android:id="@+id/micro"
|
||||
android:src="@drawable/micro_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_toggle_micro"
|
||||
android:padding="10dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/video"
|
||||
android:src="@drawable/camera_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
android:src="@drawable/speaker_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_toggle_speaker"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/video_in_progress"
|
||||
style="?android:attr/progressBarStyle"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="gone"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ImageView
|
||||
android:id="@+id/audio_route"
|
||||
android:src="@drawable/routes_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_audio_route"
|
||||
android:visibility="gone"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
|
||||
</RelativeLayout>
|
||||
<ImageView
|
||||
android:id="@+id/options"
|
||||
android:src="@drawable/options_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_call_options"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
</LinearLayout>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/micro"
|
||||
|
|
@ -260,34 +272,37 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
android:src="@drawable/speaker_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
<ImageView
|
||||
android:id="@+id/dialer"
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:background="@color/colorC"
|
||||
android:contentDescription="@string/content_description_numpad"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.8"
|
||||
android:padding="15dp" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/audio_route"
|
||||
android:src="@drawable/routes"
|
||||
android:background="@drawable/button_background"
|
||||
android:visibility="gone"
|
||||
android:padding="20dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="1" />
|
||||
<ImageView
|
||||
android:id="@+id/hang_up"
|
||||
android:src="@drawable/call_hangup"
|
||||
android:background="@drawable/hangup"
|
||||
android:contentDescription="@string/content_description_hang_up"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.4"
|
||||
android:padding="12dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/options"
|
||||
android:src="@drawable/options_default"
|
||||
android:background="@drawable/button_background"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1" />
|
||||
</LinearLayout>
|
||||
<ImageView
|
||||
android:id="@+id/chat"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:background="@color/colorC"
|
||||
android:contentDescription="@string/content_description_chat_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.8"
|
||||
android:padding="15dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
@ -310,25 +325,27 @@
|
|||
android:visibility="invisible"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_bluetooth"
|
||||
android:src="@drawable/route_bluetooth"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5" />
|
||||
<ImageView
|
||||
android:id="@+id/route_bluetooth"
|
||||
android:src="@drawable/route_bluetooth"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_bluetooth"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_call"
|
||||
android:src="@drawable/options_add_call"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5" />
|
||||
<ImageView
|
||||
android:id="@+id/add_call"
|
||||
android:src="@drawable/options_add_call_button"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_add_call"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
@ -351,25 +368,27 @@
|
|||
android:visibility="invisible"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/route_earpiece"
|
||||
android:src="@drawable/route_earpiece"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"/>
|
||||
<ImageView
|
||||
android:id="@+id/route_earpiece"
|
||||
android:src="@drawable/route_earpiece"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_earpiece"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:src="@drawable/options_transfer_call"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"/>
|
||||
<ImageView
|
||||
android:id="@+id/transfer"
|
||||
android:src="@drawable/options_transfer_call_button"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_transfer"
|
||||
android:padding="15dp"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="0.5"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
|
@ -394,7 +413,8 @@
|
|||
<ImageView
|
||||
android:id="@+id/route_speaker"
|
||||
android:src="@drawable/route_speaker"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_toggle_speaker"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -403,8 +423,9 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/conference"
|
||||
android:src="@drawable/options_start_conference"
|
||||
android:background="@drawable/button_call_background"
|
||||
android:src="@drawable/options_start_conference_button"
|
||||
android:background="@drawable/button_background"
|
||||
android:contentDescription="@string/content_description_conference"
|
||||
android:visibility="invisible"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
|
|
|
|||
|
|
@ -56,9 +56,28 @@
|
|||
android:paddingTop="10dp"
|
||||
android:layout_above="@+id/menu">
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorG"
|
||||
android:layout_alignParentBottom="true"
|
||||
<TextView
|
||||
android:id="@+id/contact_name"
|
||||
style="@style/font5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:gravity="center"
|
||||
android:paddingTop="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_number"
|
||||
style="@style/font2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/contact_name"
|
||||
android:layout_gravity="center"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:paddingBottom="10dp"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/avatar_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
|
|
|
|||
|
|
@ -56,9 +56,28 @@
|
|||
android:layout_below="@id/top_bar"
|
||||
android:paddingTop="10dp">
|
||||
|
||||
<LinearLayout
|
||||
android:background="@color/colorG"
|
||||
android:layout_alignParentBottom="true"
|
||||
<TextView
|
||||
android:id="@+id/contact_name"
|
||||
style="@style/font5"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentTop="true"
|
||||
android:gravity="center"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:paddingTop="5dp"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_number"
|
||||
style="@style/font2"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/contact_name"
|
||||
android:layout_gravity="center"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:paddingBottom="10dp"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/avatar_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
|
|
@ -106,7 +125,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_weight="1"
|
||||
android:padding="12dp"/>
|
||||
android:padding="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/speaker"
|
||||
|
|
|
|||
|
|
@ -41,7 +41,9 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/back_to_call"
|
||||
android:src="@drawable/call_back_button"
|
||||
android:src="@drawable/call_back"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_back_call"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -51,6 +53,8 @@
|
|||
<ImageView
|
||||
android:id="@+id/edit"
|
||||
android:src="@drawable/edit_list_button"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_edit_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -65,25 +69,33 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/footer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_centerHorizontal="true"
|
||||
android:background="@color/colorD">
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/message_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/send_picture"
|
||||
android:padding="15dp"
|
||||
android:scaleType="center"
|
||||
<LinearLayout
|
||||
android:id="@+id/message_layout"
|
||||
android:orientation="horizontal"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/send_picture"
|
||||
android:src="@drawable/chat_send_file"
|
||||
android:contentDescription="@string/content_description_send_file"
|
||||
android:padding="5dp"
|
||||
android:layout_weight="0.1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<EditText
|
||||
android:id="@+id/message"
|
||||
android:textColor="@color/colorB"
|
||||
android:imeOptions="flagNoExtractUi"
|
||||
android:textCursorDrawable="@null"
|
||||
android:inputType="textMultiLine"
|
||||
android:contentDescription="@string/content_description_message"
|
||||
android:maxLines="3"
|
||||
android:padding="5dp"
|
||||
android:layout_margin="5dp"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_centerVertical="true"
|
||||
|
|
@ -97,9 +109,11 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:src="@drawable/chat_send_message"
|
||||
android:layout_alignTop="@+id/message"
|
||||
android:layout_alignParentRight="true"/>
|
||||
|
||||
android:contentDescription="@string/content_description_send_message"
|
||||
android:padding="5dp"
|
||||
android:layout_weight="0.1"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/message"
|
||||
|
|
|
|||
|
|
@ -1,86 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bubble"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="left"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:background="@drawable/resizable_chat_bubble_incoming"
|
||||
android:orientation="horizontal" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_header"
|
||||
style="@style/font12"
|
||||
android:singleLine="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/message"
|
||||
style="@style/font14"
|
||||
android:linksClickable="true"
|
||||
android:autoLink="web"
|
||||
android:layout_gravity="left"
|
||||
android:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:visibility="gone"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="150dp"
|
||||
android:scaleType="centerInside"
|
||||
android:maxWidth="250dp"
|
||||
android:maxHeight="250dp" />
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/file_transfer_layout"
|
||||
android:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="5dp"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/accept_download"
|
||||
android:text="@string/download"
|
||||
android:background="@drawable/resizable_confirm_delete_button"
|
||||
style="@style/font7"
|
||||
android:textAllCaps="true"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_below="@id/progress_bar"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/bubble"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="left"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/delete"
|
||||
android:id="@+id/delete_message"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:layout_marginLeft="5dp"
|
||||
|
|
@ -91,5 +18,95 @@
|
|||
android:layout_alignParentRight="true"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/message_content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
|
||||
</LinearLayout>
|
||||
<LinearLayout
|
||||
android:background="@drawable/resizable_chat_bubble_incoming"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="10dp"
|
||||
android:orientation="horizontal">
|
||||
<RelativeLayout
|
||||
android:id="@+id/avatar_layout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
<ImageView
|
||||
android:id="@+id/contact_picture"
|
||||
android:src="@drawable/avatar"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_chat_mask"
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="40dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical"
|
||||
android:paddingLeft="10dp">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_header"
|
||||
style="@style/font9"
|
||||
android:singleLine="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/message"
|
||||
style="@style/font11"
|
||||
android:linksClickable="true"
|
||||
android:autoLink="web"
|
||||
android:visibility="gone"
|
||||
android:maxHeight="250dp" />
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/image"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="150dp"
|
||||
android:scaleType="centerInside"
|
||||
android:visibility="gone"
|
||||
android:maxWidth="250dp"
|
||||
android:maxHeight="250dp"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/file_transfer_layout"
|
||||
android:visibility="gone"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ProgressBar
|
||||
android:id="@+id/progress_bar"
|
||||
style="@android:style/Widget.ProgressBar.Horizontal"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_marginBottom="10dp"
|
||||
android:layout_width="150dp"
|
||||
android:layout_height="5dp"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/accept_download"
|
||||
android:text="@string/accept"
|
||||
android:background="@drawable/resizable_assistant_button"
|
||||
style="@style/font8"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/progress_bar"/>
|
||||
|
||||
</RelativeLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@
|
|||
android:orientation="horizontal">
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/delete"
|
||||
android:id="@+id/delete_message"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:layout_marginLeft="5dp"
|
||||
|
|
@ -21,7 +21,7 @@
|
|||
android:background="@drawable/resizable_chat_bubble_outgoing"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_toLeftOf="@id/delete"
|
||||
android:layout_toLeftOf="@id/delete_message"
|
||||
android:orientation="horizontal">
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -24,7 +24,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back_in_call"
|
||||
android:src="@drawable/call_back_button"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:contentDescription="@string/content_description_back_call"
|
||||
android:visibility="invisible"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -39,7 +39,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/edit"
|
||||
android:src="@drawable/edit_list_button"
|
||||
android:contentDescription="@string/content_description_edit"
|
||||
android:contentDescription="@string/content_description_edit_list"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
|
|||
|
|
@ -11,13 +11,11 @@
|
|||
android:id="@+id/delete_chatroom"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:paddingRight="5dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerVertical="true"
|
||||
android:visibility="gone" />
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
|
|
@ -44,6 +42,13 @@
|
|||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<TextView
|
||||
|
|
@ -65,10 +70,8 @@
|
|||
<TextView
|
||||
android:id="@+id/sipUri"
|
||||
android:lines="1"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:ellipsize="end"
|
||||
android:scrollHorizontally="true"
|
||||
android:fadingEdge="horizontal"
|
||||
android:singleLine="true"
|
||||
style="@style/font2"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
@ -79,6 +82,7 @@
|
|||
android:id="@+id/unreadMessages"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:contentDescription="@string/content_description_unread_chat_message"
|
||||
android:background="@drawable/chat_list_indicator"
|
||||
style="@style/font7"
|
||||
android:gravity="center"
|
||||
|
|
@ -94,7 +98,8 @@
|
|||
android:layout_below="@id/sipUri"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
style="@style/font9"/>
|
||||
android:layout_marginRight="30dp"
|
||||
style="@style/font11"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
|
|
|||
|
|
@ -49,9 +49,9 @@
|
|||
<ImageView
|
||||
android:id="@+id/quitConference"
|
||||
android:src="@drawable/conference_exit_default"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="20dp"
|
||||
android:contentDescription="@string/content_description_exit_conference"
|
||||
android:layout_width="30dp"
|
||||
android:layout_height="30dp"
|
||||
android:gravity="center_vertical"
|
||||
android:scaleType="fitCenter"
|
||||
android:adjustViewBounds="true" />
|
||||
|
|
|
|||
|
|
@ -69,12 +69,14 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/contact_function"
|
||||
style="@style/font2"
|
||||
android:singleLine="true"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -33,6 +33,29 @@
|
|||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/delete"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerInParent="true"
|
||||
android:visibility="gone"
|
||||
android:paddingLeft="5dp"
|
||||
android:paddingRight="5dp" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/name"
|
||||
android:lines="1"
|
||||
|
|
@ -56,18 +79,6 @@
|
|||
android:scaleType="centerInside"
|
||||
android:src="@drawable/led_connected" />
|
||||
|
||||
<CheckBox
|
||||
android:id="@+id/delete"
|
||||
android:button="@drawable/checkbox"
|
||||
android:contentDescription="@string/content_description_delete"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_centerInParent="true"
|
||||
android:visibility="gone"
|
||||
android:paddingLeft="5dp"
|
||||
android:paddingRight="5dp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -32,7 +32,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/contact_call"
|
||||
android:src="@drawable/call_start_button"
|
||||
android:contentDescription="@string/content_description_dial_back"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/back"
|
||||
android:src="@drawable/back"
|
||||
android:contentDescription="@string/content_description_back"
|
||||
android:contentDescription="@string/content_description_cancel_button"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -37,7 +37,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/ok"
|
||||
android:src="@drawable/valid"
|
||||
android:contentDescription="@string/content_description_edit"
|
||||
android:contentDescription="@string/content_description_valid"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -74,6 +74,19 @@
|
|||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
android:layout_width="100dp"
|
||||
android:layout_height="100dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
|
||||
<TextView
|
||||
android:text="@string/contact_last_name"
|
||||
style="@style/font13"
|
||||
|
|
@ -86,6 +99,7 @@
|
|||
android:id="@+id/contactLastName"
|
||||
android:background="@drawable/resizable_textfield"
|
||||
style="@style/font6"
|
||||
android:contentDescription="@string/content_description_contact_last_name"
|
||||
android:textCursorDrawable="@null"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
|
|
@ -106,6 +120,7 @@
|
|||
android:textCursorDrawable="@null"
|
||||
android:background="@drawable/resizable_textfield"
|
||||
style="@style/font6"
|
||||
android:contentDescription="@string/content_description_contact_first_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="40dp"
|
||||
android:gravity="left"
|
||||
|
|
@ -115,6 +130,7 @@
|
|||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/sip_addresses"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="10dp"
|
||||
|
|
@ -152,8 +168,8 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/phone_numbers"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="10dp"
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@
|
|||
android:layout_toStartOf="@+id/delete"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/delete"
|
||||
android:id="@+id/delete_field"
|
||||
android:src="@drawable/delete_field_default"
|
||||
android:contentDescription="@string/content_description_add"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="30dp"
|
||||
|
|
|
|||
|
|
@ -6,13 +6,91 @@
|
|||
android:orientation="vertical" >
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="60dp">
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/all_contacts"
|
||||
android:src="@drawable/contacts_all"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_all_contacts"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/all_contacts_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/linphone_contacts"
|
||||
android:src="@drawable/contacts_sip"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_linphone_contacts"
|
||||
android:gravity="center"
|
||||
android:padding="15dp"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/linphone_contacts_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:visibility="gone"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
</RelativeLayout>
|
||||
|
||||
<View
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/newContact"
|
||||
android:src="@drawable/contact_add"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_edit"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:padding="15dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/edit"
|
||||
android:src="@drawable/edit_list_button"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_edit"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:padding="15dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
<include layout="@layout/edit_list"/>
|
||||
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:layout_margin="10dp">
|
||||
|
||||
<EditText
|
||||
android:contentDescription="@string/content_description_search"
|
||||
android:contentDescription="@string/content_description_search_contact"
|
||||
android:textCursorDrawable="@null"
|
||||
android:id="@+id/searchField"
|
||||
android:layout_weight="0.15"
|
||||
|
|
@ -44,9 +122,8 @@
|
|||
android:id="@+id/contactsList"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:divider="@color/colorF"
|
||||
android:divider="@color/colorE"
|
||||
android:fastScrollAlwaysVisible="true"
|
||||
android:fastScrollEnabled="true"
|
||||
android:dividerHeight="1dp" />
|
||||
|
||||
<TextView
|
||||
|
|
|
|||
|
|
@ -15,7 +15,12 @@
|
|||
|
||||
<org.linphone.ui.EraseButton
|
||||
android:id="@+id/erase"
|
||||
<<<<<<< HEAD
|
||||
android:src="@drawable/erase_button"
|
||||
=======
|
||||
android:src="@drawable/backspace"
|
||||
android:contentDescription="@string/content_description_backspace"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="40dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_alignParentRight="true"
|
||||
|
|
@ -61,13 +66,31 @@
|
|||
android:background="@drawable/button_back_background"
|
||||
android:layout_width="102dp"
|
||||
android:layout_height="wrap_content"
|
||||
<<<<<<< HEAD
|
||||
android:padding="20dp"
|
||||
android:visibility="gone"/>
|
||||
=======
|
||||
android:layout_weight="1"
|
||||
android:adjustViewBounds="true">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/add_contact"
|
||||
android:src="@drawable/contact_add_button"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
>>>>>>> public/master
|
||||
|
||||
<org.linphone.ui.CallButton
|
||||
android:id="@+id/call"
|
||||
android:src="@drawable/call_audio_start"
|
||||
android:background="@drawable/call"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="12dp"
|
||||
|
|
|
|||
|
|
@ -9,7 +9,13 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
<<<<<<< HEAD
|
||||
android:src="@drawable/cancel_button"
|
||||
=======
|
||||
android:src="@drawable/cancel_edit"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_cancel_button"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -22,7 +28,13 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/select_all"
|
||||
<<<<<<< HEAD
|
||||
android:src="@drawable/select_all_button"
|
||||
=======
|
||||
android:src="@drawable/select_all"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_select_all"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -30,7 +42,13 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/deselect_all"
|
||||
<<<<<<< HEAD
|
||||
android:src="@drawable/deselect_all_button"
|
||||
=======
|
||||
android:src="@drawable/deselect_all"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_deselect_all"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
@ -40,6 +58,11 @@
|
|||
<ImageView
|
||||
android:id="@+id/delete"
|
||||
android:src="@drawable/delete_button"
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_delete_selection"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
|
|||
|
|
@ -38,7 +38,12 @@
|
|||
<ImageView
|
||||
android:id="@+id/edit"
|
||||
android:src="@drawable/edit_list_button"
|
||||
<<<<<<< HEAD
|
||||
android:contentDescription="@string/content_description_edit"
|
||||
=======
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_edit_list"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
|
|
|
|||
|
|
@ -22,6 +22,7 @@
|
|||
android:layout_margin="5dp"
|
||||
android:gravity="center_vertical">
|
||||
|
||||
<<<<<<< HEAD
|
||||
<ImageView
|
||||
android:id="@+id/contact_picture"
|
||||
android:src="@drawable/avatar"
|
||||
|
|
@ -31,6 +32,34 @@
|
|||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
=======
|
||||
<RelativeLayout
|
||||
android:id="@+id/avatar_layout"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/contact_picture"
|
||||
android:src="@drawable/avatar"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/mask"
|
||||
android:src="@drawable/avatar_mask"
|
||||
android:layout_width="35dp"
|
||||
android:layout_height="35dp"
|
||||
android:adjustViewBounds="true"
|
||||
android:layout_alignParentLeft="true"
|
||||
android:layout_marginLeft="5dp"/>
|
||||
|
||||
</RelativeLayout>
|
||||
>>>>>>> public/master
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/icon"
|
||||
|
|
@ -69,10 +98,7 @@
|
|||
android:id="@+id/sip_uri"
|
||||
style="@style/font2"
|
||||
android:lines="1"
|
||||
android:ellipsize="marquee"
|
||||
android:marqueeRepeatLimit="marquee_forever"
|
||||
android:scrollHorizontally="true"
|
||||
android:fadingEdge="horizontal"
|
||||
android:ellipsize="end"
|
||||
android:singleLine="true"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_width="wrap_content"
|
||||
|
|
|
|||
|
|
@ -1,9 +1,16 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<<<<<<< HEAD
|
||||
android:background="@color/colorG"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" >
|
||||
=======
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:orientation="vertical" >
|
||||
>>>>>>> public/master
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/top_bar"
|
||||
|
|
@ -14,7 +21,12 @@
|
|||
|
||||
<ImageView
|
||||
android:id="@+id/back"
|
||||
<<<<<<< HEAD
|
||||
android:src="@drawable/back_button"
|
||||
=======
|
||||
android:src="@drawable/back"
|
||||
android:background="@drawable/toolbar_button"
|
||||
>>>>>>> public/master
|
||||
android:contentDescription="@string/content_description_back"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -39,6 +51,7 @@
|
|||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
<<<<<<< HEAD
|
||||
android:id="@+id/contact_picture"
|
||||
android:src="@drawable/avatar"
|
||||
android:contentDescription="@string/content_description_contact_picture"
|
||||
|
|
@ -70,6 +83,16 @@
|
|||
|
||||
</LinearLayout>
|
||||
|
||||
=======
|
||||
android:id="@+id/add_contact"
|
||||
android:src="@drawable/contact_add"
|
||||
android:background="@drawable/toolbar_button"
|
||||
android:contentDescription="@string/content_description_add_contact"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_weight="0.2"
|
||||
android:padding="15dp"/>
|
||||
>>>>>>> public/master
|
||||
</LinearLayout>
|
||||
|
||||
<ScrollView
|
||||
|
|
@ -151,8 +174,14 @@
|
|||
android:padding="10dp">
|
||||
|
||||
<TextView
|
||||
<<<<<<< HEAD
|
||||
android:id="@+id/date"
|
||||
style="@style/font2"
|
||||
=======
|
||||
android:id="@+id/contact_name"
|
||||
style="@style/font5"
|
||||
android:gravity="center_horizontal"
|
||||
>>>>>>> public/master
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
|
|
@ -162,6 +191,83 @@
|
|||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="10dp"
|
||||
android:gravity="center"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/call"
|
||||
android:src="@drawable/call_start_body_default"
|
||||
android:contentDescription="@string/content_description_call"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chat"
|
||||
android:src="@drawable/chat_start_body_default"
|
||||
android:contentDescription="@string/content_description_chat"
|
||||
android:layout_width="60dp"
|
||||
android:layout_height="60dp"
|
||||
android:layout_margin="10dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/log_row"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<View
|
||||
android:background="@color/colorE"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="1dp"/>
|
||||
|
||||
<TextView
|
||||
android:text="@string/call"
|
||||
style="@style/font13"
|
||||
android:textAllCaps="true"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_gravity="center"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:orientation="horizontal"
|
||||
android:gravity="center"
|
||||
android:padding="10dp">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/direction"
|
||||
android:paddingLeft="10dp"
|
||||
android:paddingRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/date"
|
||||
style="@style/font10"
|
||||
android:paddingRight="10dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/time"
|
||||
style="@style/font10"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"/>
|
||||
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
>>>>>>> public/master
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
</LinearLayout>
|
||||
|
|
|
|||
|
|
@ -42,6 +42,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/cancel"
|
||||
android:src="@drawable/dialer_back"
|
||||
android:contentDescription="@string/content_description_dialer_back"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:padding="15dp"
|
||||
|
|
@ -88,11 +89,26 @@
|
|||
<ImageView
|
||||
android:id="@+id/history_image"
|
||||
android:layout_width="match_parent"
|
||||
<<<<<<< HEAD
|
||||
android:layout_height="match_parent"
|
||||
android:padding="18dp"
|
||||
android:layout_centerInParent="true"
|
||||
android:contentDescription="@string/content_description_history"
|
||||
android:src="@drawable/footer_history"/>
|
||||
=======
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/content_description_history"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/history_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"/>
|
||||
>>>>>>> public/master
|
||||
|
||||
<TextView
|
||||
android:id="@+id/missed_calls"
|
||||
|
|
@ -115,9 +131,30 @@
|
|||
android:contentDescription="@string/content_description_contacts"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
<<<<<<< HEAD
|
||||
android:layout_height="match_parent"
|
||||
android:padding="18dp"
|
||||
android:layout_centerInParent="true" />
|
||||
=======
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/footer_contacts"
|
||||
android:contentDescription="@string/content_description_contacts"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/contacts_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:visibility="gone"/>
|
||||
</RelativeLayout>
|
||||
>>>>>>> public/master
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/dialer"
|
||||
|
|
@ -126,9 +163,30 @@
|
|||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_weight="1"
|
||||
android:layout_width="0dp"
|
||||
<<<<<<< HEAD
|
||||
android:layout_height="match_parent"
|
||||
android:padding="18dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
=======
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
android:src="@drawable/footer_dialer"
|
||||
android:contentDescription="@string/content_description_dialer"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="15dp"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
<View
|
||||
android:id="@+id/dialer_select"
|
||||
android:background="@color/colorA"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="5dp"
|
||||
android:layout_alignParentBottom="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
>>>>>>> public/master
|
||||
|
||||
<RelativeLayout
|
||||
android:id="@+id/chat"
|
||||
|
|
@ -140,6 +198,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/chat_image"
|
||||
android:src="@drawable/footer_chat"
|
||||
android:contentDescription="@string/content_description_chat_button"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="18dp"
|
||||
|
|
@ -177,6 +236,7 @@
|
|||
android:layout_height="match_parent"
|
||||
android:layout_gravity="left">
|
||||
|
||||
<<<<<<< HEAD
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
|
|
@ -205,6 +265,8 @@
|
|||
android:dividerHeight="1dp"/>
|
||||
</LinearLayout>
|
||||
|
||||
=======
|
||||
>>>>>>> public/master
|
||||
<RelativeLayout
|
||||
android:id="@+id/side_menu_quit"
|
||||
android:background="@color/colorA"
|
||||
|
|
@ -232,9 +294,44 @@
|
|||
android:layout_toRightOf="@id/quit_button"
|
||||
android:gravity="center_vertical"
|
||||
android:layout_centerInParent="true"/>
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/colorH"
|
||||
android:layout_above="@id/side_menu_quit"
|
||||
android:orientation="vertical">
|
||||
|
||||
<include layout="@layout/side_menu_main_account"/>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/accounts_list"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:choiceMode="singleChoice"
|
||||
android:cacheColorHint="@color/transparent"
|
||||
android:divider="@android:color/transparent"
|
||||
android:dividerHeight="0dp"/>
|
||||
|
||||
<ListView
|
||||
android:id="@+id/item_list"
|
||||
android:background="@color/colorH"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:choiceMode="singleChoice"
|
||||
android:divider="@color/colorE"
|
||||
android:listSelector="@color/colorH"
|
||||
android:footerDividersEnabled="true"
|
||||
android:dividerHeight="1dp"/>
|
||||
|
||||
<View
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="1dp"
|
||||
android:background="@color/colorE"/>
|
||||
|
||||
</LinearLayout>
|
||||
</RelativeLayout>
|
||||
|
||||
</android.support.v4.widget.DrawerLayout>
|
||||
|
|
|
|||
13
res/layout/progress_dialog.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:orientation="vertical"
|
||||
android:gravity="center"
|
||||
android:layout_width="fill_parent"
|
||||
android:layout_height="fill_parent">
|
||||
|
||||
<ProgressBar
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_marginBottom="20dp"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -1,6 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/default_account"
|
||||
android:contentDescription="@string/content_description_default_account"
|
||||
android:background="@color/colorF"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="70dp">
|
||||
|
|
@ -42,8 +43,15 @@
|
|||
android:src="@drawable/led_connected"
|
||||
android:layout_width="25dp"
|
||||
android:layout_height="25dp"
|
||||
<<<<<<< HEAD
|
||||
android:layout_alignParentRight="true"
|
||||
android:padding="7dp"
|
||||
android:layout_marginTop="10dp"/>
|
||||
=======
|
||||
android:padding="5dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentTop="true"/>
|
||||
>>>>>>> public/master
|
||||
|
||||
</RelativeLayout>
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@
|
|||
<ImageView
|
||||
android:id="@+id/side_menu_button"
|
||||
android:src="@drawable/menu_burger"
|
||||
android:contentDescription="@string/content_description_menu"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="10dp"
|
||||
|
|
|
|||
54
res/layout/tuto_carddav.xml
Normal file
|
|
@ -0,0 +1,54 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:gravity="top|center_horizontal"
|
||||
android:orientation="vertical">
|
||||
|
||||
<LinearLayout
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="match_parent"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<EditText
|
||||
android:id="@+id/carddav_username"
|
||||
android:hint="Username"
|
||||
android:text="sylvain"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/carddav_pwd"
|
||||
android:hint="Pwd"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"/>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/carddav_ha1"
|
||||
android:hint="HA1"
|
||||
android:text="4747ce2517a985f2fc20234a38f068b6"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
<EditText
|
||||
android:id="@+id/carddav_server"
|
||||
android:hint="Server URL"
|
||||
android:text="http://192.168.0.230/sabredav/addressbookserver.php/addressbooks/sylvain/default"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/carddav_synchronize"
|
||||
android:text="Synchronize"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_width="wrap_content"/>
|
||||
|
||||
<TextView
|
||||
android:id="@+id/carddav_events"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_weight="1"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
@ -29,5 +29,11 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:layout_margin="10dp"
|
||||
android:onClick="startBuddyStatusTutorial" />
|
||||
|
||||
<Button android:text="CardDAV Sync"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_margin="10dp"
|
||||
android:onClick="startCardDavSyncTutorial"/>
|
||||
|
||||
</LinearLayout>
|
||||
|
|
|
|||
20
res/layout/video_no_opengl.xml
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:id="@+id/video_frame"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<SurfaceView
|
||||
android:visibility="visible"
|
||||
android:layout_height="match_parent"
|
||||
android:layout_width="match_parent"
|
||||
android:id="@+id/videoSurface" />
|
||||
|
||||
<SurfaceView
|
||||
android:id="@+id/videoCaptureSurface"
|
||||
android:layout_width="120dp"
|
||||
android:layout_height="145dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true" />
|
||||
|
||||
</RelativeLayout>
|
||||
BIN
res/raw/hold.mkv
Normal file
|
|
@ -15,6 +15,7 @@ size=qvga
|
|||
sharing_server=https://www.linphone.org:444/lft.php
|
||||
tunnel=disabled
|
||||
push_notification=1
|
||||
auto_start=1
|
||||
|
||||
[tunnel]
|
||||
host=
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
[net]
|
||||
mtu=1300
|
||||
|
||||
<<<<<<< HEAD
|
||||
[app]
|
||||
animations=0
|
||||
show_login_view=1
|
||||
|
|
@ -12,6 +13,8 @@ debug_popup_magic=#1234
|
|||
debug=1
|
||||
server_url=http://85.233.205.218:443/xmlrpc
|
||||
|
||||
=======
|
||||
>>>>>>> public/master
|
||||
[sip]
|
||||
guess_hostname=1
|
||||
inc_timeout=15
|
||||
|
|
@ -37,7 +40,6 @@ dtmf_player_amp=0.1
|
|||
#remove this property for any application that is not Linphone public version itself
|
||||
ec_calibrator_cool_tones=1
|
||||
|
||||
|
||||
[misc]
|
||||
max_calls=10
|
||||
log_collection_upload_server_url=https://www.linphone.org:444/lft.php
|
||||
314
res/values-ar/strings.xml
Normal file
|
|
@ -0,0 +1,314 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<!--Custom-->
|
||||
<string name="app_name">لِنْفُونْ</string>
|
||||
<string name="service_name">خدمة لِنْفُونْ</string>
|
||||
<string name="addressbook_label">لِنْفُونْ</string>
|
||||
<string name="notification_title">لِنْفُونْ</string>
|
||||
<string name="wait_dialog_text">يجري التشغيل</string>
|
||||
<string name="notification_registered">%s مُسجَّل</string>
|
||||
<string name="notification_register_failure">فشل %s في التسجيل</string>
|
||||
<string name="tunnel_host"></string>
|
||||
<!--Common-->
|
||||
<string name="username">إسم المستخدم</string>
|
||||
<string name="display_name">الإسم المعروض</string>
|
||||
<string name="password">كلمة السر</string>
|
||||
<string name="confirm_password">تأكيد كلمة السر</string>
|
||||
<string name="domain">النطاق</string>
|
||||
<string name="remote_provisioning_url">عنوان الموقع</string>
|
||||
<string name="email">البريد الإلكتروني</string>
|
||||
<string name="delete_text">أأنت متأكد من حذف تحديدك ؟</string>
|
||||
<string name="delete">حذف</string>
|
||||
<string name="retry">إعادة المحاولة</string>
|
||||
<string name="cancel">إلغاء</string>
|
||||
<string name="accept">قبول</string>
|
||||
<string name="continue_text">استمرار</string>
|
||||
<string name="about">حول</string>
|
||||
<string name="deny">رفض</string>
|
||||
<string name="no_account">لم يُهيَّأ أي حساب</string>
|
||||
<string name="search">بحث</string>
|
||||
<string name="outgoing">الصادرة</string>
|
||||
<string name="incoming">الواردة</string>
|
||||
<string name="missed">الفائتة</string>
|
||||
<string name="settings">اﻹعدادات</string>
|
||||
<string name="connect">الاتصال</string>
|
||||
<string name="decline">رفض</string>
|
||||
<string name="conference">اجتماع</string>
|
||||
<!--Launch screen-->
|
||||
<string name="app_description">الزبون SIP <i>الحر</i></string>
|
||||
<!--Assistant-->
|
||||
<string name="welcome">مرحبا</string>
|
||||
<string name="assistant">المرشد</string>
|
||||
<string name="assistant_create_account">إنشاء الحساب</string>
|
||||
<string name="assistant_finish">أنهِ التهئية</string>
|
||||
<string name="assistant_validate_account">لقد أُنشِيء حسابك. يُرجى الاطلاع على رسائل بريدك الإلكتروني لتأكيد حسابك. حالما تنتهي من ذلك، عُد إلى هنا واضغط على الزر.</string>
|
||||
<string name="assistant_welcome_desc">سيمكنك هذا المرشد من إعداد حسابك SIP لإجراء المكالمات.</string>
|
||||
<string name="assistant_linphone_login_desc">أدخِل اسم المستخدم وكلمة السر لحساب لِنْفُونْ</string>
|
||||
<string name="assistant_login_desc">أدخِل اسم المستخدم وكلمة السر الحساب مع نطاق SIP</string>
|
||||
<string name="assistant_remote_provisioning_desc">يٌرجى إدخال عنوان التهئية البعيدة</string>
|
||||
<string name="transport">النقل</string>
|
||||
<string name="assistant_login_linphone">استخدم حساب لِنْفُونْ</string>
|
||||
<string name="assistant_login_generic">استخدم حساب SIP</string>
|
||||
<string name="assistant_remote_provisioning">اجذب التهئية البعيدة</string>
|
||||
<string name="assistant_create_account_part_1">1/2</string>
|
||||
<string name="assistant_create_account_part_2">2/2</string>
|
||||
<string name="assistant_display_name_optional">الاسم المعروض (اختياري)</string>
|
||||
<string name="assistant_linphone_account">هيِّءْ حساب لِنْفُونْ</string>
|
||||
<string name="assistant_generic_account">هيِّءْ حساب SIP</string>
|
||||
<string name="assistant_remote_provisioning_title">اجذب التهئية البعيدة</string>
|
||||
<string name="assistant_fetch_apply">اجذبْ وطبِّق</string>
|
||||
<string name="assistant_login">الولوج</string>
|
||||
<string name="assistant_ec_calibration">معايرة مزيل الصدى في طور الإنجاز</string>
|
||||
<string name="assistant_remote_provisioning_login">أدخل اسم الولوج</string>
|
||||
<string name="assistant_account_not_validated">لم يتم تأكيد حسابك بعد.</string>
|
||||
<string name="assistant_account_validated">تم تأكيد حسابك.</string>
|
||||
<string name="assistant_error_bad_credentials">اسم المسخدم أو كلمة السر غير صحيحة</string>
|
||||
<string name="wizard_failed">حدث خطأ، حاول لاحقا.</string>
|
||||
<string name="wizard_server_unavailable">انعدام الوصول للخادم، تأكد من اتصالك بالشبكة.</string>
|
||||
<string name="wizard_username_unavailable">إن إسم المستخدم هذا مُستعمَل.</string>
|
||||
<string name="wizard_username_incorrect">اسم المستخدم غير صحيح.</string>
|
||||
<string name="wizard_email_incorrect">عنوانك الإلكتروني غير صحيح.</string>
|
||||
<string name="wizard_password_incorrect">كلمة السر غير صحيحة.</string>
|
||||
<string name="wizard_passwords_unmatched">كلمتا السر غير متطابقتين.</string>
|
||||
<string name="setup_confirm_username">سيكون اسم المستخدم هو %s.\r\n\r\nقد يختلف عما أدخلته ليوافق المعايير.\r\nأتقبل ذلك ؟</string>
|
||||
<string name="first_launch_no_login_password">يُرجى إدخال إسم المستخدم وكلمة السر</string>
|
||||
<!--Dailer-->
|
||||
<string name="address_bar_hint">أدخل رقما أو عنوانا</string>
|
||||
<!--History-->
|
||||
<string name="no_call_history">لا وجود للمكالمات في تاريخك</string>
|
||||
<string name="no_missed_call_history">لا وجود للمكالمات الفائتة في تاريخك</string>
|
||||
<string name="delete_history_log">أتود حذف سجل المكالمات المحددة ؟</string>
|
||||
<string name="today">اليوم</string>
|
||||
<string name="yesterday">اﻷمس</string>
|
||||
<!--Contacts-->
|
||||
<string name="no_contact">لا وجود لأي جهة اتصال في دفتر عناوينك.</string>
|
||||
<string name="no_sip_contact">لا وجود لأي جهة اتصال SIP في دفتر عناوينك.</string>
|
||||
<string name="delete_contacts">أتود حذف جهات الاتصال المحددة ؟</string>
|
||||
<string name="delete_contact">أتود حذف جهة الاتصال المحددة ؟</string>
|
||||
<string name="sip_address">عنوان SIP</string>
|
||||
<string name="phone_number">رقم الهاتف</string>
|
||||
<string name="contact_first_name">اﻹسم</string>
|
||||
<string name="contact_last_name">اللقب</string>
|
||||
<!--Chat-->
|
||||
<string name="no_chat_history">لا وجود لأي محادثة</string>
|
||||
<string name="delete_conversation">أتود حذف المحادثات المحددة ؟</string>
|
||||
<string name="delete_message">أتود حذف الرسالة المحددة ؟</string>
|
||||
<string name="remote_composing">المُراسِل يكتب...</string>
|
||||
<string name="share_picture_size_small">صغيرة</string>
|
||||
<string name="share_picture_size_medium">متوسطة</string>
|
||||
<string name="share_picture_size_large">كبيرة</string>
|
||||
<string name="share_picture_size_real">الحجم الحقيقي</string>
|
||||
<string name="text_copied_to_clipboard">نُسخ النص في الحافظة</string>
|
||||
<string name="copy_text">نسخ النص</string>
|
||||
<string name="image_picker_title">اختر المصدر</string>
|
||||
<string name="image_saved">حُفظَت الصورة</string>
|
||||
<string name="image_not_saved">خطأ، لم تُحفَظ الصورة</string>
|
||||
<string name="wait">يُرجى الانتظار...</string>
|
||||
<string name="processing_image">قد تستلزم معالجة الصور بضع ثوان حسب حجم الملف.</string>
|
||||
<!--Status Bar-->
|
||||
<string name="status_connected">مُسجَّل</string>
|
||||
<string name="status_not_connected">غير مُسجَّل</string>
|
||||
<string name="status_in_progress">يجري التسجيل</string>
|
||||
<string name="status_error">فشِل التسجيل</string>
|
||||
<string name="voicemail_unread">الرسائل غير المقروءة</string>
|
||||
<!--Side Menu-->
|
||||
<string name="menu_assistant">المرشد</string>
|
||||
<string name="menu_settings">اﻹعدادات</string>
|
||||
<string name="menu_about">حول</string>
|
||||
<string name="quit">غادِرْ</string>
|
||||
<!--Call-->
|
||||
<string name="incoming_call">مكالمة واردة</string>
|
||||
<string name="outgoing_call">مكالمة صادرة</string>
|
||||
<string name="add_video_dialog">يود مخاطبك تشغيل الفيديو</string>
|
||||
<string name="no_current_call">لا وجود لأي مكالمة نشيطة</string>
|
||||
<string name="call_paused_by_remote">أوقف مخاطبك المكالمة مؤقتا</string>
|
||||
<string name="couldnt_accept_call">حدث خطأ خلال قبول المكالمة</string>
|
||||
<string name="zrtp_dialog">رمز ZRTP هو %s\nيُفترَض عليك قبوله فقط إذا كان مخاطبك قد أخبرك برؤيته لنفس الرمز الذي تراه</string>
|
||||
<string name="unknown_incoming_call_name">مجهول</string>
|
||||
<string name="call_stats_audio">الصوت</string>
|
||||
<string name="call_stats_video">الفيديو</string>
|
||||
<string name="call_stats_codec">المِرماز :</string>
|
||||
<string name="call_stats_upload">صبيب الرفع :</string>
|
||||
<string name="call_stats_download">صبيب التنزيل :</string>
|
||||
<string name="call_stats_ice">توصيل ICE :</string>
|
||||
<string name="call_stats_video_resolution">مقاس الفيديو :</string>
|
||||
<string name="call">مكالمة</string>
|
||||
<!--About-->
|
||||
<string name="menu_send_log">إرسال السجل</string>
|
||||
<string name="menu_reset_log">إعادة تعيين السجل</string>
|
||||
<!--Service-->
|
||||
<string name="incall_notif_active">المكالمة الصوتية الجارية</string>
|
||||
<string name="incall_notif_paused">المكالمة الموقَّفة مؤقتا الجارية</string>
|
||||
<string name="incall_notif_video">المكالمة المرئية الجارية</string>
|
||||
<string name="notification_started">بدَأ</string>
|
||||
<string name="unread_messages">%i رسائل غير مقروءة</string>
|
||||
<!--Errors-->
|
||||
<string name="skipable_error_service_not_ready">تحذير : الخدمة غير جاهزة</string>
|
||||
<string name="error">خطأ</string>
|
||||
<string name="warning_wrong_destination_address">لا يمكن تركيب عنوان الوجهة انطلاقا من %s</string>
|
||||
<string name="error_unknown">خطأ مجهول</string>
|
||||
<string name="error_call_declined">مكالمة مرفوضة</string>
|
||||
<string name="error_user_not_found">لم يعثر على المستخدم</string>
|
||||
<string name="error_incompatible_media">مُعامِلات الوسائط غير متوافقة</string>
|
||||
<string name="error_low_bandwidth">لمخاطبك سعة قناة ضيقة، لا يمكن إذن بدء الفيديو</string>
|
||||
<string name="error_network_unreachable">تعذر الوصول إلى الشبكة</string>
|
||||
<string name="error_bad_credentials">الاعتمادات غير صحيحة</string>
|
||||
<string name="error_unauthorized">غير مُصرَّح</string>
|
||||
<string name="error_io_error">خطأ في الشبكة</string>
|
||||
<string name="download_image_failed">فشل التنزيل. يُرجى التحقق من اتصالك بالشبكة أو الإعادة لاحقا.</string>
|
||||
<string name="remote_provisioning_failure">فشِل تنزيل أو تطبيق تشكيلة التهيئة عن بعد</string>
|
||||
<string name="remote_provisioning_again_title">التهيئة عن بعد</string>
|
||||
<string name="remote_provisioning_again_message">أتود تغيير عنوان التهئية البعيدة ؟</string>
|
||||
<!--Account Settings-->
|
||||
<string name="pref_sipaccount">حساب SIP</string>
|
||||
<string name="pref_manage_title">الإدارة</string>
|
||||
<string name="pref_disable_account">إيقاف</string>
|
||||
<string name="pref_proxy">الوسيط</string>
|
||||
<string name="pref_domain">النطاق*</string>
|
||||
<string name="pref_passwd">كلمة السر*</string>
|
||||
<string name="pref_username">إسم المستخدم*</string>
|
||||
<string name="pref_enable_outbound_proxy">وسيط التوجُّه</string>
|
||||
<string name="pref_help_proxy">إسم مضيف وسيط SIP أو عنوان IP (اختياري)</string>
|
||||
<string name="pref_help_outbound_proxy">توجيه كل المكالمات عبر وسيط SIP</string>
|
||||
<string name="pref_help_username">مثلا : john إذا كان حسابك john@sip.example.org</string>
|
||||
<string name="pref_help_domain">sip.example.org إذا كان حسابك john@sip.example.org</string>
|
||||
<string name="pref_help_password">يجب عليك إدخال كلمة السر مرة أخرى إذا أردت تحرير إسم المستخدم أو النطاق</string>
|
||||
<string name="pref_expire_title">انتهاء الصلاحية</string>
|
||||
<string name="pref_avpf">AVPF</string>
|
||||
<string name="pref_avpf_rr_interval">نطاق RTCP الاعتيادي لـ AVPF بالثواني (ما بين 1 و 5)</string>
|
||||
<string name="pref_escape_plus">استبدال + بـ 00</string>
|
||||
<string name="pref_auth_userid">مُعرِّف استيثاق المستخدم</string>
|
||||
<string name="pref_help_auth_userid">ادخل مُعرِّف استيثاق المستخدم (اختياري)</string>
|
||||
<string name="pref_display_name">الإسم المعروض</string>
|
||||
<string name="pref_help_display_name">ادخل الاسم المعروض (اختياري)</string>
|
||||
<string name="pref_prefix">البادِئة</string>
|
||||
<string name="pref_transport">النقل</string>
|
||||
<string name="pref_transport_udp">UDP</string>
|
||||
<string name="pref_transport_tcp">TCP</string>
|
||||
<string name="pref_transport_tls">TLS</string>
|
||||
<string name="pref_delete_account">حذف هذا الحساب</string>
|
||||
<string name="pref_default_account">استخدام كافتراضي</string>
|
||||
<!--Settings-->
|
||||
<string name="pref_sipaccounts">حسابات SIP</string>
|
||||
<string name="default_account_flag">الحساب الافتراضي</string>
|
||||
<string name="pref_add_account">إضافة حساب</string>
|
||||
<string name="pref_tunnel">النفق</string>
|
||||
<string name="pref_tunnel_host">إسم المضيف</string>
|
||||
<string name="pref_tunnel_port">المنفذ</string>
|
||||
<string name="pref_tunnel_mode">الوضع</string>
|
||||
<!--do not change order without changing corresponding entry_values in non_localizable_strings.xml-->
|
||||
<string-array name="tunnel_mode_entries">
|
||||
<item>غير مُشغَّل</item>
|
||||
<item>3G فقط</item>
|
||||
<item>دائما</item>
|
||||
<item>تلقائي</item>
|
||||
</string-array>
|
||||
<string name="pref_none">بدون</string>
|
||||
<string name="pref_preferences_title">التفضيلات</string>
|
||||
<string name="pref_video_enable_title">تشغيل الفيديو</string>
|
||||
<!--Audio settings-->
|
||||
<string name="pref_audio_title">الصوت</string>
|
||||
<string name="pref_echo_cancellation">إزالة الصدى</string>
|
||||
<string name="pref_echo_cancellation_summary">إزالة الصدى المسموع من الطرف الآخر</string>
|
||||
<string name="pref_echo_canceller_calibration">معايرة مزيل الصدى</string>
|
||||
<string name="ec_calibrating">يُعايِر...</string>
|
||||
<string name="no_echo">لا وجود لصدى</string>
|
||||
<string name="failed">فشِل</string>
|
||||
<string name="pref_adaptive_rate_control">التحكم في ملائمة الصبيب</string>
|
||||
<string name="pref_codec_bitrate_limit">حد صبيب المِرماز</string>
|
||||
<string name="pref_codecs">المراميز</string>
|
||||
<!--Video settings-->
|
||||
<string name="pref_video_title">الفيديو</string>
|
||||
<string name="pref_video_use_front_camera_title">استخدام الكاميرا الأمامية</string>
|
||||
<string name="pref_video_initiate_call_with_video_title">بدء اتصالات بالصورة</string>
|
||||
<string name="pref_video_initiate_call_with_video">أرسِل دائما طلبات الفيديو</string>
|
||||
<string name="pref_video_automatically_accept_video_title">قبول طلبات الفيديو الواردة</string>
|
||||
<string name="pref_video_automatically_accept_video">قبول طلبات الفيديو دائما</string>
|
||||
<string name="pref_preferred_video_size">حجم الفيديو المفضل</string>
|
||||
<string name="pref_preferred_fps">معدل الإطارات المفضل</string>
|
||||
<string name="pref_bandwidth_limit">حد سعة القناة بـ ك.بِتْ/ثانية</string>
|
||||
<string name="pref_video_codecs_title">المراميز</string>
|
||||
<!--Call settings-->
|
||||
<string name="pref_call_title">مكالمة</string>
|
||||
<string name="pref_rfc2833_dtmf">إرسال RFC2833 DTMFs</string>
|
||||
<string name="pref_sipinfo_dtmf">إرسال SIP INFO DTMFs</string>
|
||||
<string name="pref_voice_mail">عنوان العلبة الصوتية</string>
|
||||
<!--Network settings-->
|
||||
<string name="pref_network_title">الشبكة</string>
|
||||
<string name="pref_wifi_only">استخدم WiFi فقط</string>
|
||||
<string name="pref_stun_server">خادم STUN</string>
|
||||
<string name="pref_ice_enable">تشغيل ICE</string>
|
||||
<string name="pref_upnp_enable">تشغيل UPnP</string>
|
||||
<string name="pref_transport_use_random_ports">استخدم منافذ عشوائية</string>
|
||||
<string name="pref_sip_port_title">منفذ SIP المُراد استخدامه</string>
|
||||
<string name="pref_video_port_title">منفذ الفيديو أو نطاق المنفذ</string>
|
||||
<string name="pref_audio_port_title">منفذ الصوت أو نطاق المنفذ</string>
|
||||
<string name="pref_video_port_description">منفذ الفيديو أو نطاق المنفذ (الأدنى – الأقصى)</string>
|
||||
<string name="pref_audio_port_description">منفذ الصوت أو نطاق المنفذ (الأدنى – الأقصى)</string>
|
||||
<string name="pref_media_encryption">وسيط التعمية</string>
|
||||
<string name="pref_push_notification">تشغيل إشعارات التنبيه</string>
|
||||
<string name="pref_ipv6_title">رخِّصْ IPv6</string>
|
||||
<!--Advanced settings-->
|
||||
<string name="pref_advanced_title">متقدم</string>
|
||||
<string name="pref_debug">التنقيح</string>
|
||||
<string name="pref_background_mode">وضع الخلفية</string>
|
||||
<string name="pref_animation_enable_title">تشغيل التحريكات</string>
|
||||
<string name="pref_autostart">البدء خلال الإقلاع</string>
|
||||
<string name="pref_incoming_call_timeout_title">مهلة الانتظار قبل رفض المكالمة (بالثواني)</string>
|
||||
<string name="pref_image_sharing_server_title">خادم المشاركة</string>
|
||||
<string name="pref_remote_provisioning_title">التهيئة عن بعد</string>
|
||||
<string name="pref_primary_account_title">الحساب اﻷوَّلي</string>
|
||||
<string name="pref_display_name_title">الإسم المعروض</string>
|
||||
<string name="pref_user_name_title">إسم المستخدم</string>
|
||||
<!--Audio hack settings-->
|
||||
<string name="pref_audio_hacks_title">تطويعات الصوت</string>
|
||||
<string name="pref_audio_use_specific_mode_title">استخدم وضع محددا للتطويع</string>
|
||||
<string name="pref_audio_use_specific_mode_summary">0=MODE_NORMAL (افتراضي)، 2=MODE_IN_CALL</string>
|
||||
<string name="pref_audio_hacks_use_routing_api_title">استخدم تطويعات API التوجيه</string>
|
||||
<string name="pref_audio_hacks_use_galaxys_hack_title">استخدم تطويعات الصوت لـ Galaxy S</string>
|
||||
<!--Content description-->
|
||||
<string name="content_description_back">الرجوع</string>
|
||||
<string name="content_description_dialer">لوحة المفاتيح</string>
|
||||
<string name="content_description_toggle_micro">تبديل الميكروفون</string>
|
||||
<string name="content_description_toggle_speaker">تبديل مكبر الصوت</string>
|
||||
<string name="content_description_decline">رفض</string>
|
||||
<string name="content_description_hang_up">ضع السماعة</string>
|
||||
<string name="content_description_accept">قبول</string>
|
||||
<string name="content_description_edit">تحرير</string>
|
||||
<string name="content_description_add_contact">إضافة إلى جهات الاتصال</string>
|
||||
<string name="content_description_new_contact">جهة اتصال جديدة</string>
|
||||
<string name="content_description_call">مكالمة</string>
|
||||
<string name="content_description_backspace">مسافة</string>
|
||||
<string name="content_description_chat">المحادثة</string>
|
||||
<string name="content_description_dial_back">إعادة الاتصال</string>
|
||||
<string name="content_description_contact_picture">صورة جهة الاتصال</string>
|
||||
<string name="content_description_send_message">إرسال رسالة</string>
|
||||
<string name="content_description_detail">التفاصيل</string>
|
||||
<string name="content_description_delete">حذف</string>
|
||||
<string name="content_description_add">إضافة مكالمة</string>
|
||||
<string name="content_description_new_discussion">محادثة جديدة</string>
|
||||
<string name="content_description_search">بحث</string>
|
||||
<string name="content_description_all_contacts">كل جهات الاتصال</string>
|
||||
<string name="content_description_linphone_contacts">جهات اتصال Linphone</string>
|
||||
<string name="content_description_call_direction">اتجاه الاتصال</string>
|
||||
<string name="content_description_all_calls">كل المكالمات</string>
|
||||
<string name="content_description_missed_calls">المكالمات الفائتة</string>
|
||||
<string name="content_description_switch_video">تبديل الفيديو</string>
|
||||
<string name="content_description_add_call">إضافة مكالمة</string>
|
||||
<string name="content_description_pause">توقيف مؤقت</string>
|
||||
<string name="content_description_numpad">لوحة الأرقام</string>
|
||||
<string name="content_description_history">زر التاريخ</string>
|
||||
<string name="content_description_chat_button">زر المحادثات</string>
|
||||
<string name="content_description_contacts">رز جهات الاتصال</string>
|
||||
<string name="content_description_call_quality">جودة المكالمة</string>
|
||||
<string name="content_description_encryption">التعمية</string>
|
||||
<string name="content_description_switch_camera">تبديل الكاميرا</string>
|
||||
<string name="content_description_cancel_button">زر الإلغاء</string>
|
||||
<string name="content_description_message_status">حالة الرسالة</string>
|
||||
<string name="content_description_conference">اجتماع</string>
|
||||
<string name="content_description_default_account">الحساب الافتراضي</string>
|
||||
<string name="content_description_contact_first_name">اﻹسم</string>
|
||||
<string name="content_description_contact_last_name">اللقب</string>
|
||||
<string name="content_description_transfer">تحويل</string>
|
||||
<string name="content_description_bluetooth">بلوتوث</string>
|
||||
</resources>
|
||||
243
res/values-de/strings.xml
Normal file
|
|
@ -0,0 +1,243 @@
|
|||
<?xml version='1.0' encoding='UTF-8'?>
|
||||
<resources>
|
||||
<!--Custom-->
|
||||
<string name="app_name">Linphone</string>
|
||||
<string name="service_name">Linphone-Dienst</string>
|
||||
<string name="addressbook_label">Linphone</string>
|
||||
<string name="notification_title">Linphone</string>
|
||||
<string name="wait_dialog_text">Startvorgang</string>
|
||||
<string name="tunnel_host"></string>
|
||||
<!--Common-->
|
||||
<string name="username">Benutzername</string>
|
||||
<string name="display_name">Anzeigename</string>
|
||||
<string name="password">Passwort</string>
|
||||
<string name="delete">Löschen</string>
|
||||
<string name="retry">Erneut versuchen</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="accept">Annehmen</string>
|
||||
<string name="continue_text">Fortsetzen</string>
|
||||
<string name="about">Über</string>
|
||||
<string name="deny">Verweigern</string>
|
||||
<string name="search">Suchen</string>
|
||||
<string name="outgoing">Ausgehend</string>
|
||||
<string name="incoming">Eingehend</string>
|
||||
<string name="missed">Verpasst</string>
|
||||
<string name="settings">Einstellungen</string>
|
||||
<string name="decline">Ablehnen</string>
|
||||
<string name="conference">Konferenz</string>
|
||||
<!--Launch screen-->
|
||||
<!--Assistant-->
|
||||
<string name="assistant_welcome_desc">Dieser Assistent wird Ihnen dabei helfen, ein SIP-Konto für Ihre Anrufe zu verwenden.</string>
|
||||
<string name="transport">Transport</string>
|
||||
<string name="assistant_account_not_validated">Ihr Konto wurde noch nicht überprüft.</string>
|
||||
<string name="assistant_account_validated">Ihr Konto wurde überprüft.</string>
|
||||
<string name="wizard_failed">Es ist ein Fehler aufgetreten, versuchen Sie es später nochmal</string>
|
||||
<string name="wizard_username_unavailable">Der Benutzername wird bereits verwendet.</string>
|
||||
<string name="first_launch_no_login_password">Bitte geben Sie Ihren Benutzername und Ihr Passwort ein</string>
|
||||
<!--Dailer-->
|
||||
<!--History-->
|
||||
<string name="today">Heute</string>
|
||||
<string name="yesterday">Gestern</string>
|
||||
<!--Contacts-->
|
||||
<string name="no_contact">Kein Kontakt in Ihrem Adressbuch.</string>
|
||||
<string name="no_sip_contact">Kein SIP-Kontakt in Ihrem Adressbuch.</string>
|
||||
<string name="sip_address">SIP-Adresse</string>
|
||||
<string name="phone_number">Telefonnummer</string>
|
||||
<string name="contact_first_name">Vorname</string>
|
||||
<string name="contact_last_name">Nachname</string>
|
||||
<!--Chat-->
|
||||
<string name="remote_composing">Partner schreibt...</string>
|
||||
<string name="share_picture_size_small">Klein</string>
|
||||
<string name="share_picture_size_medium">Mittel</string>
|
||||
<string name="share_picture_size_large">Groß</string>
|
||||
<string name="share_picture_size_real">Echte Größe</string>
|
||||
<string name="text_copied_to_clipboard">Text in die Zwischenablage kopiert</string>
|
||||
<string name="copy_text">Kopiere Text</string>
|
||||
<string name="image_picker_title">Wähle Quelle</string>
|
||||
<string name="image_saved">Bild gespeichert</string>
|
||||
<string name="image_not_saved">Fehler, Bild nicht gespeichert</string>
|
||||
<string name="wait">Bitte warten...</string>
|
||||
<string name="processing_image">Bild wird verarbeitet. Je nach Größe der Datei kann dies mehrere Sekunden in Anspruch nehmen</string>
|
||||
<!--Status Bar-->
|
||||
<string name="status_connected">Registriert</string>
|
||||
<string name="status_in_progress">Registrierung in Arbeit</string>
|
||||
<string name="status_error">Registierung fehlgeschlagen</string>
|
||||
<string name="voicemail_unread">ungelesene Nachrichten</string>
|
||||
<!--Side Menu-->
|
||||
<string name="menu_settings">Einstellungen</string>
|
||||
<string name="menu_about">Über</string>
|
||||
<!--Call-->
|
||||
<string name="unknown_incoming_call_name">Unbekannt</string>
|
||||
<string name="call_stats_audio">Audio</string>
|
||||
<string name="call_stats_video">Video</string>
|
||||
<string name="call_stats_codec">Codec:</string>
|
||||
<string name="call_stats_upload">Upload-Bandbreite:</string>
|
||||
<string name="call_stats_download">Download-Bandbreite:</string>
|
||||
<string name="call_stats_ice">ICE-Konnektivität:</string>
|
||||
<string name="call_stats_video_resolution">Videogröße:</string>
|
||||
<string name="call">Anruf</string>
|
||||
<!--About-->
|
||||
<string name="menu_send_log">Protokoll senden</string>
|
||||
<string name="menu_reset_log">Protokoll zurücksetzen</string>
|
||||
<!--Service-->
|
||||
<string name="incall_notif_active">Anruf fortsetzen</string>
|
||||
<string name="incall_notif_paused">Pausierten Anruf fortsetzen</string>
|
||||
<string name="incall_notif_video">Video-Anruf fortsetzen</string>
|
||||
<string name="notification_started">begonnen</string>
|
||||
<string name="unread_messages">%i ungelesene Nachrichten</string>
|
||||
<!--Errors-->
|
||||
<string name="skipable_error_service_not_ready">Warnung: Dienst ist nicht bereit</string>
|
||||
<string name="error">Fehler</string>
|
||||
<string name="error_unknown">Unbekannter Fehler</string>
|
||||
<string name="error_call_declined">Anruf abgelehnt</string>
|
||||
<string name="error_user_not_found">Benutzer nicht gefunden</string>
|
||||
<string name="error_incompatible_media">Inkompatible Medienparameter</string>
|
||||
<string name="error_network_unreachable">Netzwerk ist nicht erreichbar</string>
|
||||
<string name="error_bad_credentials">Falsche Anmeldedaten</string>
|
||||
<string name="error_unauthorized">Unzulässig</string>
|
||||
<string name="error_io_error">Netzwerkfehler</string>
|
||||
<string name="remote_provisioning_failure">Fehler beim Herunterladen oder Anwenden des Fernbereitstellungsprofils...</string>
|
||||
<string name="remote_provisioning_again_title">Fernbereitstellung</string>
|
||||
<!--Account Settings-->
|
||||
<string name="pref_sipaccount">SIP-Konto</string>
|
||||
<string name="pref_manage_title">Verwalten</string>
|
||||
<string name="pref_disable_account">Deaktivieren</string>
|
||||
<string name="pref_proxy">Proxy</string>
|
||||
<string name="pref_domain">Domain*</string>
|
||||
<string name="pref_passwd">Passwort*</string>
|
||||
<string name="pref_username">Benutzername*</string>
|
||||
<string name="pref_enable_outbound_proxy">Ausgehender Proxy</string>
|
||||
<string name="pref_help_proxy">SIP-Proxy-Hostname oder IP-Adresse (optional)</string>
|
||||
<string name="pref_help_outbound_proxy">Alle Anrufe üder einen SIP Proxy leiten</string>
|
||||
<string name="pref_help_username">Beispiel: John, wenn ihr Konto john@sip.example.org ist</string>
|
||||
<string name="pref_help_domain">sip.example.org, wenn Ihr Konto john@sip.example.org ist</string>
|
||||
<string name="pref_help_password">Sie müssen Ihr Passwort erneut eingeben, wenn Sie Ihren Benutzernamen und/oder Domain ändern</string>
|
||||
<string name="pref_expire_title">Ablaufen</string>
|
||||
<string name="pref_avpf">AVPF</string>
|
||||
<string name="pref_avpf_rr_interval"> AVPF Standard RTCP Interval in Sekunden (zwischen 1 und 5)</string>
|
||||
<string name="pref_escape_plus">Ersetzen + durch 00</string>
|
||||
<string name="pref_auth_userid">Authentifizierungs-Benutzerkennung</string>
|
||||
<string name="pref_display_name">Anzeigename</string>
|
||||
<string name="pref_prefix">Präfix</string>
|
||||
<string name="pref_transport">Transport</string>
|
||||
<string name="pref_transport_udp">UDP</string>
|
||||
<string name="pref_transport_tcp">TCP</string>
|
||||
<string name="pref_transport_tls">TLS</string>
|
||||
<string name="pref_delete_account">Konto löschen</string>
|
||||
<string name="pref_default_account">Als Standard benutzen</string>
|
||||
<!--Settings-->
|
||||
<string name="pref_sipaccounts">SIP-Konten</string>
|
||||
<string name="default_account_flag">Standardkonto</string>
|
||||
<string name="pref_add_account">Konto hinzufügen</string>
|
||||
<string name="pref_tunnel">Tunnel</string>
|
||||
<string name="pref_tunnel_host">Hostname</string>
|
||||
<string name="pref_tunnel_port">Port</string>
|
||||
<string name="pref_tunnel_mode">Modus</string>
|
||||
<!--do not change order without changing corresponding entry_values in non_localizable_strings.xml-->
|
||||
<string-array name="tunnel_mode_entries">
|
||||
<item>deaktiviert</item>
|
||||
<item>nur 3G</item>
|
||||
<item>immer</item>
|
||||
<item>auto</item>
|
||||
</string-array>
|
||||
<string name="pref_none">Keine</string>
|
||||
<string name="pref_preferences_title">Einstellungen</string>
|
||||
<string name="pref_video_enable_title">Video aktivieren</string>
|
||||
<!--Audio settings-->
|
||||
<string name="pref_audio_title">Audio</string>
|
||||
<string name="pref_echo_cancellation">Echounterdrückung</string>
|
||||
<string name="pref_echo_cancellation_summary">Entfernt das Echo, das am anderen Ende gehört wird</string>
|
||||
<string name="ec_calibrating">Kalibrierung...</string>
|
||||
<string name="no_echo">Kein Echo</string>
|
||||
<string name="failed">fehlgeschlagen</string>
|
||||
<string name="pref_adaptive_rate_control">Adaptive Ratenregelung</string>
|
||||
<string name="pref_codec_bitrate_limit">Codec-Bitratenbegrenzung</string>
|
||||
<string name="pref_codecs">Codecs</string>
|
||||
<!--Video settings-->
|
||||
<string name="pref_video_title">Video</string>
|
||||
<string name="pref_video_use_front_camera_title">Frontkamera benutzen</string>
|
||||
<string name="pref_video_initiate_call_with_video_title">Videoanrufe starten</string>
|
||||
<string name="pref_video_initiate_call_with_video">Immer Videoanfragen senden</string>
|
||||
<string name="pref_video_automatically_accept_video_title">Eingehende Videoanfragen annehmen</string>
|
||||
<string name="pref_video_automatically_accept_video">Videoanfragen immer annehmen</string>
|
||||
<string name="pref_preferred_video_size">Bevorzugte Videogröße</string>
|
||||
<string name="pref_bandwidth_limit">Bandbreitenbegrenzung in kbits/s</string>
|
||||
<string name="pref_video_codecs_title">Codecs</string>
|
||||
<!--Call settings-->
|
||||
<string name="pref_call_title">Anruf</string>
|
||||
<string name="pref_rfc2833_dtmf">RFC2833 DTMFs senden</string>
|
||||
<string name="pref_sipinfo_dtmf">SIP INFO DTMFs senden</string>
|
||||
<!--Network settings-->
|
||||
<string name="pref_network_title">Netzwerk</string>
|
||||
<string name="pref_stun_server">Stun-Server</string>
|
||||
<string name="pref_ice_enable">ICE aktivieren</string>
|
||||
<string name="pref_upnp_enable">UPNP aktivieren</string>
|
||||
<string name="pref_transport_use_random_ports">Zufällige Ports verwenden</string>
|
||||
<string name="pref_sip_port_title">Zu benutzender SIP-Port</string>
|
||||
<string name="pref_video_port_title">Videoport oder Portbereich</string>
|
||||
<string name="pref_audio_port_title">Audioport oder Portbereich</string>
|
||||
<string name="pref_video_port_description">Videoport oder Portbereich (Min.Port-Max.Port)</string>
|
||||
<string name="pref_audio_port_description">Audioport oder Portbereich (Min.Port-Max.Port)</string>
|
||||
<string name="pref_media_encryption">Medienverschlüsselung</string>
|
||||
<string name="pref_push_notification">Push-Benachrichtigungen aktivieren</string>
|
||||
<!--Advanced settings-->
|
||||
<string name="pref_advanced_title">Erweitert</string>
|
||||
<string name="pref_debug">Debug</string>
|
||||
<string name="pref_background_mode">Hintergrundmodus</string>
|
||||
<string name="pref_animation_enable_title">Animationen aktivieren</string>
|
||||
<string name="pref_autostart">Beim Einschalten starten</string>
|
||||
<string name="pref_remote_provisioning_title">Fernbereitstellung</string>
|
||||
<string name="pref_primary_account_title">Primäres Konto</string>
|
||||
<string name="pref_display_name_title">Anzeigename</string>
|
||||
<string name="pref_user_name_title">Benutzername</string>
|
||||
<!--Audio hack settings-->
|
||||
<string name="pref_audio_hacks_title">Audio Hacks</string>
|
||||
<string name="pref_audio_use_specific_mode_title">Speziellen Modus Hack verwenden</string>
|
||||
<string name="pref_audio_use_specific_mode_summary">0=MODE_NORMAL (Standard), 2=MODE_IN_CALL</string>
|
||||
<string name="pref_audio_hacks_use_routing_api_title">Routing-API-Hack verwenden</string>
|
||||
<string name="pref_audio_hacks_use_galaxys_hack_title">Galaxy-S-Audio-Hack verwenden</string>
|
||||
<!--Content description-->
|
||||
<string name="content_description_back">Zurück</string>
|
||||
<string name="content_description_dialer">Wählgerät</string>
|
||||
<string name="content_description_toggle_micro">Mikrofon umschalten</string>
|
||||
<string name="content_description_toggle_speaker">Lautsprecher umschalten</string>
|
||||
<string name="content_description_decline">Ablehnen</string>
|
||||
<string name="content_description_hang_up">Auflegen</string>
|
||||
<string name="content_description_accept">Annehmen</string>
|
||||
<string name="content_description_edit">Ändern</string>
|
||||
<string name="content_description_add_contact">Zu Kontakten hinzufügen</string>
|
||||
<string name="content_description_new_contact">Neuer Kontakt</string>
|
||||
<string name="content_description_call">Call</string>
|
||||
<string name="content_description_backspace">Zurückschalten</string>
|
||||
<string name="content_description_chat">Nachrichten</string>
|
||||
<string name="content_description_dial_back">Zurückrufen</string>
|
||||
<string name="content_description_contact_picture">Kontaktbild</string>
|
||||
<string name="content_description_send_message">Nachricht senden</string>
|
||||
<string name="content_description_delete">Löschen</string>
|
||||
<string name="content_description_add">Anruf hinzufügen</string>
|
||||
<string name="content_description_new_discussion">Neue Diskussion</string>
|
||||
<string name="content_description_search">Suchen</string>
|
||||
<string name="content_description_all_contacts">Alle Kontakte</string>
|
||||
<string name="content_description_linphone_contacts">Linphone-Kontakte</string>
|
||||
<string name="content_description_call_direction">Anrufrichtung</string>
|
||||
<string name="content_description_all_calls">Alle Anrufe</string>
|
||||
<string name="content_description_missed_calls">Verpasste Anrufe</string>
|
||||
<string name="content_description_switch_video">Video umschalten</string>
|
||||
<string name="content_description_add_call">Anruf hinzufügen</string>
|
||||
<string name="content_description_pause">Pause</string>
|
||||
<string name="content_description_numpad">Nummernblock</string>
|
||||
<string name="content_description_history">Schaltfläche Verlauf</string>
|
||||
<string name="content_description_chat_button">Schaltfläche Chat</string>
|
||||
<string name="content_description_contacts">Schaltfläche Kontakte</string>
|
||||
<string name="content_description_call_quality">Anrufqualität</string>
|
||||
<string name="content_description_encryption">Verschlüsselung</string>
|
||||
<string name="content_description_switch_camera">Kamera umschalten</string>
|
||||
<string name="content_description_cancel_button">Schaltfläche Abbrechen</string>
|
||||
<string name="content_description_message_status">Nachrichtenstatus</string>
|
||||
<string name="content_description_conference">Konferenz</string>
|
||||
<string name="content_description_default_account">Standardkonto</string>
|
||||
<string name="content_description_contact_first_name">Vorname</string>
|
||||
<string name="content_description_contact_last_name">Nachname</string>
|
||||
<string name="content_description_transfer">Weiterleiten</string>
|
||||
<string name="content_description_bluetooth">Bluetooth</string>
|
||||
</resources>
|
||||