Perancangan dan Realisasi Aplikasi Softphone Pada Jaringan VoIP Berbasis SIP Untuk Smartphone Android.
i
Universitas Kristen Maranatha
PERANCANGAN DAN REALISASI APLIKASI
SOFTPHONE PADA JARINGAN VOIP BERBASIS SIP
UNTUK SMARTPHONE ANDROID
Disusun Oleh:
Nama : Richard
NRP : 0922001
Jurusan Teknik Elektro
Universitas Kristen Maranatha
Email : corser_speed@yahoo.co.id
ABSTRAK
Kebutuhan akan informasi dan komunikasi semakin meningkat akibat
berkembangnya teknologi. Sehingga dibutuhkan media dan sarana komunikasi
yang akurat, cepat, efisien dan hemat biaya. Salah satunya media komunikasi
yang dikembangkan menggunakan jaringan internet yaitu
Voice Over Internet
Protocol
(
VoIP
).VoIP merupakan teknologi yang dapat menggabungkan antara
jaringan telepon dengan komunikasi data.
Pada tugas akhir ini direalisasikan jaringan VoIP dengan server Asterisk
dan aplikasi
softphone
berbasis Android. Komunikasi jaringan menggunakan
koneksi Wi-Fi yang menghubungkan server dan
client (user)
. Antar
client
baik
yang menggunakan laptop yang terinstal
softphone
x-lite atau menggunakan
smartphone
Android yang terinstal
softphone
SIP yang telah dirancang dapat
berkomunikasi suara dalam satu jaringan yang terhubung Wi-Fi
Perancangan jaringan VoIP dan aplikasi
softphone
SIP pada
smartphone
Android berhasil direalisasikan dalam satu jaringan, penyebaran koneksinya
terbatas pada kemampuan router menjangkau wilayah. Aplikasi
softphone
pada
Android hanya dapat digunakan pada server Asterisk yang penggunaannya
disesuaikan dengan kebutuhan server untuk komunikasi suara saja.
(2)
ii
Universitas Kristen Maranatha
DESIGNING AND REALIZATION OF SOFTPHONE
APPLICATIONS ON SIP-BASED VOIP NETWORK
FOR ANDROID SMARTPHONE
Composed By:
Name : Richard
NRP : 0922001
Electrical Engineering Department
Maranatha Christian University
Email : corser_speed@yahoo.co.id
ABSTRACT
The need for information and communication are increasing due to the
development of technology. So it takes media and means of communication of
accurate, fast, efficient and cost-effective. One of them developed communication
media that uses the internet is Voice Over Internet Protocol (VoIP). VoIP is a
technology that can combine between telephone networks with data
communications.
In this final project realized VoIP network with an Asterisk server and
Android-based softphone applications. Communications network using Wi-Fi
connection that connects the server and client (user). Between client whether
using a laptop installed x-lite softphone or using a smartphone installed Android
SIP softphone which has been designed to voice communication in one network
are connected Wi-Fi.
Design a VoIP network and SIP softphone application on Android
smartphones successfully realized in the one network, spread of connection is
limited to the ability the router reach the area. Softphone applications on Android
can only be used on the Asterisk server, its use matched with the needs of the
server just for voice communication.
(3)
iii
Universitas Kristen Maranatha
DAFTAR ISI
Halaman
LEMBAR PENGESAHAN
PERNYATAAN ORISINALITAS LAPORAN PENELITIAN
PERNYATAAN PUBLIKASI LAPORAN KERJA PRAKTEK
KATA PENGANTAR
ABSTRAK ...
i
ABSTRACT ...
ii
DAFTAR
ISI ...
iii
DAFTAR
GAMBAR ...
vi
DAFTAR
TABEL ...
viii
BAB
I
PENDAHULUAN
I.1 Latar Belakang Masalah ... 1
I.2 Identifikasi Masalah ... 2
I.3 Rumusan Masalah ... 2
I.4 Tujuan ... 2
I.5 Pembatasan Masalah ... 2
I.6 Spesifikasi Alat ... 3
I.7 Sistematika Penulisan... 3
BAB
II
LANDASAN TEORI
II.1 VoIP ... 5
II.1.1 Komponen VoIP ... 6
II.1.2 Protokol-Protokol VoIP
...
7
II.1.3 Codec Pendukung VoIP
...
10
II.2 SIP ... 11
II.2.1 Fungsi-Fungsi SIP ... 11
II.2.2 Elemen Jaringan SIP
...
12
II.2.3 Metoda Perintah SIP
...
13
II.3 Wi-Fi ... 16
II.3.1 Mode Akses koneksi Wi-Fi
...
17
II.4 Perangkat LAN ... 18
II.4.1 Modem
...
18
(4)
iv
Universitas Kristen Maranatha
II.4.3 Hub
...
19
II.4.4 Switch
...
19
II.4.5 Router
...
20
II.4.6 Bridge Jaringan
...
20
II.4.7 Access Point
...
20
II.5 Softphone ... 21
II.6 Asterisk ... 22
II.6.1 Arsitektur Asterisk
...
22
II.6.2 Konfigurasi Asterisk
...
23
II.6.3 Perintah Asterisk
...
27
II.7 Android ... 28
II.7.1 Arsitektur Android
...
29
II.7.2 Android SDK
...
32
II.7.3 Eclipse IDE
...
33
II.7.4 ADT (
Android Development Tools
)
...
33
BAB
III
PERANCANGAN DAN REALISASI
III.1
Hardware
dan
Software ...
34
III.2 Perancangan Sistem VoIP
...
34
III.2.1 Asterisk 1.4.17
...
36
III.2.1.1 Instalasi Pada Linux Open Suse... 36
III.2.1.2 Konfigurasi Sip.conf ... 39
III.2.1.3 Konfigurasi Extensions.conf
...
41
III.2.2 X-Lite 3.0 ... 42
III.3 Perancangan Aplikasi
...
45
III.3.1 Cara Kerja
...
46
III.3 Tampilan
Interface
Aplikasi
...
49
BAB
IV
DATA PENGAMATAN DAN ANALISA
IV.1
Cara Pengamatan
...
56
IV.2 Pengamatan Paket Data
...
57
IV.3 Pengamatan Keberhasilan dan Delay
...
62
BAB
V
KESIMPULAN DAN SARAN
V.1
Kesimpulan ...
71
(5)
v
Universitas Kristen Maranatha
V.2
Saran...
71
DAFTAR PUSTAKA ...
72
LAMPIRAN A SPESIFIKASI ALAT
LAMPIRAN B
(6)
vi
Universitas Kristen Maranatha
DAFTAR GAMBAR
Halaman
Gambar 2.1 Format paket VoIP IPv4 ... 6
Gambar 2.2 Diagram VoIP ... 7
Gambar 2.3 Mekanisme Protokol TCP/IP ... 8
Gambar 2.4 Diagram arsitektur panggilan SIP
connected
... 14
Gambar 2.5 Diagram arsitektur panggilan SIP server
error
...
15
Gambar 2.6 Diagram arsitektur panggilan SIP
busy
... 16
Gambar 2.7 Topologi VoIP Asterisk ... 27
Gambar 2.8 Arsitektur Android ... 32
Gambar 3.1 Skema Jaringan yang digunakan
...
35
Gambar 3.2 Router yang digunakan
...
36
Gambar 3.3 Flowchart Koneksi Server Asterisk
...
38
Gambar 3.4 Tampilan asterisk
running
/aktif pada terminal SLES ... 39
Gambar 3.5 Tampilan folder /etc/asterisk/sip.conf pada mc
...
40
Gambar 3.6 Tampilan folder /etc/asterisk/extensions.conf pada mc ... 42
Gambar 3.7 Konfigurasi SIP
account
... 44
Gambar 3.8 Tampilan X-Lite yang telah teregister pada SIP server ... 44
Gambar 3.9 Flowchart proses register client aplikasi ... 47
Gambar 3.10 Flowchart proses melakukan panggilan (
dialing)
... 48
Gambar 3.11 Flowchart proses panggilan datang
(incoming call) ...
49
Gambar 3.12 Tampilan awal aplikasi ... 50
Gambar 3.13 Tampilan
input number ...
50
Gambar 3.14 Tampilan pilihan menu aplikasi
...
51
Gambar 3.15 Tampilan isi menu
...
51
Gambar 3.16 Tampilan menu SIP account
...
52
Gambar 3.17 Tampilan menu audio codec ... 52
Gambar 3.18 Tampilan saat
dialing
... 53
Gambar 3.19 Tampilan saat proses komunikasi ... 53
Gambar 3.20 Tampilan akhir komunikasi ... 54
Gambar 3.21 Tampilan saat panggilan masuk ... 54
Gambar 3.22 Tampilan
message dialog
saat komunikasi Wi-Fi
off
... 55
Gambar 4.1 Tampilan Asterisk saat registrasi
client ...
57
Gambar 4.2 Tampilan capture protokol SIP
...
58
(7)
vii
Universitas Kristen Maranatha
(8)
viii
Universitas Kristen Maranatha
DAFTAR TABEL
Halaman
Tabel 2.1 Spesifikasi Wi-Fi
...
17
Tabel 4.1 Level sinyal Wi-Fi
client ...
63
Tabel 4.2 Pengamatan
dialing
client
104 ke 102 dan sebaliknya
...
63
Tabel 4.3 Pengamatan
dialing
client 104 ke 101 dan sebaliknya ... 64
Tabel 4.4 Pengamatan
dialing
client
102 ke 101 dan sebaliknya ... 65
Tabel 4.5 Pengamatan
dialing
client
105 ke 101 dan sebaliknya ... 65
Tabel 4.6 Pengamatan
dialing
client
105 ke 104 dan sebaliknya ... 66
Tabel 4.7 Percobaan 1, delay saat 2
client
melakukan komunikasi ... 67
Tabel 4.8 Percobaan 2, delay saat 2
client
melakukan komunikasi ... 68
Tabel 4.9 Percobaan 1, delay saat 4
client
melakukan komunikasi ... 69
(9)
LAM PIRAN A
(10)
1.
Spesifikasi TP-Link TL-WR841ND AP Router N Series
FITUR PERANGKAT KERAS
Tampilan
4 10/100Mbps LAN PORTS
1 10/100Mbps WAN PORT
Tombol
Quick Setup Security Button
Reset Button
Catu Daya Eksternal
9VDC / 0.6A
Standar Nirkabel (Wireless)
IEEE 802.11n, IEEE 802.11g, IEEE 802.11b
Antena
2*5dBi Detachable Omni Directional Antenna (RP-SMA)
Dimensi ( W x D x H )
7.6 x 5.1 x 1.3 in.(192 x 130 x 33 mm)
FITUR WIRELESS
Frekuensi
2.4-2.4835GHz
Tingkat Signal
11n: Up to 300Mbps(dynamic)
11g: Up to 54Mbps(dynamic)
11b: Up to 11Mbps(dynamic)
EIRP
<20dBm(EIRP)
Penerimaan Sensitivitas
270M: -68dBm@10% PER
130M: -68dBm@10% PER
108M: -68dBm@10% PER
54M: -68dBm@10% PER
11M: -85dBm@8% PER
6M: -88dBm@10% PER
1M: -90dBm@8% PER
Fungsi Wireless
Enable/Disable Wireless Radio, WDS Bridge, WMM, Wireless
Statistics
Keamanan Wireless
64/128/152-bit WEP / WPA / WPA2,WPA-PSK / WPA2-PSK
FITUR PERANGKAT LUNAK
Tipe WAN
Dynamic IP/Static IP/PPPoE/
PPTP(Dual Access)/L2TP(Dual Access)/BigPond
DHCP
Server, Client, DHCP Client List,
Address Reservation
Quality of Service
WMM, Bandwidth Control
Port Forwarding
Virtual Server,Port Triggering, UPnP, DMZ
Dynamic DNS
DynDns, Comexe, NO-IP
VPN Pass-Through
PPTP, L2TP, IPSec (ESP Head)
Access Control
Parental Control, Local Management Control, Host List, Access
Schedule, Rule Management
Keamanan Firewall
DoS, SPI Firewall
IP Address Filter/MAC Address Filter/Domain Filter
IP and MAC Address Binding
Manajemen
Access Control
Local Management
Remote Management
Lainnya
Sertifikasi
CE, FCC, RoHS
Isi Paket
Wireless N Rotuer TL-WR841ND
2 Detachable Omni Directional Antennas
Power supply unit
Resource CD
Quick Installation Guide
Kebutuhan Sistem
Microsoft® Windows® 98SE, NT, 2000, XP, Vista™ or
Windows 7, MAC® OS, NetWare®, UNIX® or Linux.
Lingkungan
Operating Temperature: 0
℃
~40
℃
(32
℉
~104
℉
)
Storage Temperature: -40
℃
~70
℃
(-40
℉
~158
℉
)
Operating Humidity: 10%~90% non-condensing
Storage Humidity: 5%~90% non-condensing
(11)
2.
Spesifikasi Samsung Galaxy W I18150
GENERAL
Network
2G GSM 850 / 900 / 1800 / 1900 3G HSDPA
LAYAR
Tipe
Capacitive touchscreen, 16M colors
Ukuran
480 x 800 pixels, 3.7 inches (~252 ppi pixel
density) - Multi-touch input method -
Accelerometer sensor for UI auto-rotate -
Touch-sensitive controls - Proximity sensor
for auto turn-off
DIMENSI
Ukuran/Berat
115.5 x 59.8 x 11.5 mm / 109.9 g
AUDIO
Fitur
Vibration
MP3, WAV ringtones
Jack
3,5mm Jack Audio
Speakerphone
Ya
MEMORY
Internal
512 MB RAM, 2 GB ROM
Eksternal
microSD, up to 32GB
DATA
3G
HSDPA, 14.4 Mbps; HSUPA, 5.76 Mbps
EDGE
Ya
GPRS
Ya
WLAN
Wi-Fi 802.11 b/g/n, Wi-Fi hotspot
Bluetooth
Ya, v3.0 with A2DP
Infrared
Tidak
USB/Port
Ya, v2.0 microUSB
KAMERA
Primer
5 MP, 2592x1944 pixels, autofocus, LED
flash - Geo-tagging, touch focus, face and
smile detection
Sekunder
Ya, VGA
Video Record
Ya, 720p@30fps
BATERAI
Tipe
Standard battery, Li-Ion 1500 mAh
Standby
Up to 570 h (2G) / Up to 420 h (3G)
Talk Time
Up to 17 h 50 min (2G) / Up to 8 h 20 min
(3G)
FITUR
OS
Android OS, v2.3 (Gingerbread)
CPU
1.4 GHz Scorpion processor, Adreno 205
GPU, Qualcomm MSM8255T Snapdragon
Browser
HTML
GPS
Ya, with A-GPS support
Messaging
SMS(threaded view), MMS, Email, Push
Mail, IM, RSS
Java
via Java MIDP emulator, Fitur tambahan:
Stereo FM radio with RDS - SNS integration
- Digital compass - Organizer - Image/video
editor - Document editor (Word, Excel,
PowerPoint, PDF) - Google Search, Maps,
Gmail, YouTube, Calendar, Google Talk,
Picasa integration - Adobe Flash support -
Voice memo/dial/commands - Predictive text
input (Swype)
FITUR
LAIN
Multiple SIM
Tidak
Video Player
- MP4/DivX/XviD/WMV/H.264/H.263
player
MP3 Player
- MP3/WAV/eAAC+ player
Audio Record
Ya
TV
(12)
3.
Samsung Galaxy Tab2 7.0 P3100
GENERAL
Network
GSM 850 / 900 / 1800 / 1900 ,3G HSDPA 900 /1900 /
2100
LAYAR
Tipe
PLS LCD capacitive touchscreen, 16M colors
Ukuran
600 x 1024 pixels, 7.0 inches (~170 ppi pixel density,
Multitouch, TouchWiz UX UI
DIMENSI
Ukuran/Berat
193.7 x 122.4 x 10.5 mm / 344 g
AUDIO
Fitur
Vibration
MP3, WAV ringtones
Jack
3.5mm jack audio
Speakerphone
Ya
MEMORY
Internal
16 GB storage, 1GB RAM
Eksternal
microSD, up to 64 GB
DATA
3G
HSDPA, 21 Mbps; HSUPA, 5.76 Mbps
EDGE
Ya
GPRS
Ya
WLAN
Wi-Fi 802.11 a/b/g/n, DLNA, Wi-Fi Direct, dual-band
,Wi-Fi hotspot
Bluetooth
v3.0 with A2DP, HS
Infrared
Tidak
USB/Port
microUSB v2.0, USB On-the-go support
KAMERA
Primer
3.15 MP, 2048x1536 pixels, autofocus
Sekunder
VGA
Video Record
1080p@30fps
BATERAI
Tipe
Standard battery, Li-Ion 4000 mAh
Standby
-
Talk Time
-
FITUR
OS
Android OS, v4.0.3 (Ice Cream Sandwich)
CPU
TI OMAP 4430, CPU Dual-core 1 GHz, GPU PowerVR
SGX540
Browser
HTML5, Adobe Flash
GPS
Ya, A-GPS
Messaging
SMS(threaded view), MMS, Email, Push Email, IM, RS
Java
via Java MIDP emulator, fitur tambahan: - TV Out - SNS
integration- Organizer - Image/video editor - Quickoffice
HD editor/viewer - Google Search, Maps, Gmail, YouTube,
Calendar, Google Talk, Picasa integration - Voice memo -
Predictive text input (Swype)
FITUR
LAIN
Multiple SIM
Tidak
Video Player
MP4/DivX/Xvid/H.264/H.263/WMV player
MP3 Player
MP3/WAV/eAAC+/WMA/AC3/Flac player
Audio Record
Ya
(13)
4.
Smartfren Andromax U 4.5 LE
General
Network
GSM 850 / 900 / 1800 / 1900, CDMA 2000 1x, EVDO Rev A 800/1900
Mhz
Layar
Type
IPS LCD capacitive touchscreen, 16M colors
Ukuran
4.5
″ IPS Display with 540×960 pixels (256 ppi pixels density)
Multitouch
Ya
Proteksi
Tidak
Dimensi
Ukuran/Berat 130 x 66 x 9mm / 140 gram
Audio
Fitur
Vibration, MP3 Ringtones
Jack
3,5 mm Jack Audio
Speakerphone Ya
Memory
Internal
4 GB, 1 GB RAM
Eksternal
Micro SD Card Slot, up to 32 GB
Data
GPRS
Class B
EDGE
Up to 236.8 kbps
3G
EVDO Rev. A up to 3.1 Mbps
WLAN
Wi-Fi 802.11 a/b/g/n, Wi-Fi hotspot
Bluetooth
Ya, with A2DP
NFC
Tidak
USB/Port
microUSB v2.0
Kamera
Primer
8 MP, 3200?2400 piksel, autofocus, LED flash; Geo-tagging
Sekunder
2 MP
Video Record Ya, Video HD 720p
Baterai
Tipe
Li-Ion 1800mAh
Standby
-
Talk Time
-
Fitur
OS
Android OS, v4.1.2 Jelly Bean
CPU
Prosesor Qualcomm Snapdragon quad core 1.2 Ghz, Adreno 203 GPU
Messaging
SMS (threaded view), MMS, Email, IM, Push Email
Browser
HTML5
Radio
FM radio
GPS
Ya, with A-GPS
Java
Via Java Emulator, Fitur tambahan: Stereo FM radio with RDS,
Organizer (kalender, kalkulator, clock, voice recorder, Google Drive,
Voice Dialer), Viki, VMS, Play Movies, Smartfren Mobile, Smart
Pustakaoogle Maps, Google Play (Android Market), Gmail, Google
Search, Gtalk,
Fitur lainnya
Dual SIM CDMA-GSM, MP4/H.264/H.263 player, MP3/WAV/eAAC+
(14)
(15)
AndroidManifest.xml
<?xml ver si on=" 1. 0" enc odi ng=" ut f - 8" ?>
<mani f est xml ns: andr oi d=" ht t p: / / schemas. andr oi d. com/ apk/ r es/ andr oi d"
package=" or g. si pdr oi d. s i pua"
andr oi d: ver si onName=" 2. 5 bet a"
andr oi d: ver si onCode=" 88"
andr oi d: i nst al l Locat i on=" aut o">
<uses- sdk andr oi d: mi nSdkVer si on=" 8" andr oi d: t ar get SdkVer s i on=" 10" andr oi d: maxSdk Ver si on=" 15"/ > <suppor t s- sc r eens
andr oi d: nor mal Scr eens=" t r ue"
andr oi d: smal l Scr eens=" t r ue"
andr oi d: l ar geScr eens=" t r ue"
andr oi d: anyDensi t y=" f al s e" / >
<uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. bl uet oot h" andr oi d: r equi r ed=" f al se"/ > <uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. l ocat i on" andr oi d: r equi r ed=" f al se"/ > <uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. l ocat i on. gps " andr oi d: r equi r ed=" f al se"/ > <uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. t el ephony" andr oi d: r equi r ed=" f al se"/ > <uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. t ouchscr een" andr oi d: r equi r ed=" f al s e"/ > <uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. wi f i " andr oi d: r equi r ed=" f al se"/ > <uses- f eat ur e andr oi d: name=" andr oi d. har dwar e. c amer a" andr oi d: r equi r ed=" f al se"/ > <appl i cat i on andr oi d: i c on=" @dr awabl e/ ast er i sk" andr oi d: l abel =" @st r i ng/ app_name"> <act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . Si pdr oi d" andr oi d: l abel =" @st r i ng/ app_name"
andr oi d: l aunchMode=" si ngl eI nst ance"
andr oi d: conf i gChanges=" or i ent at i on| keyboar dHi dden"> <i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. MAI N" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . LAUNCHER" / > </ i nt ent - f i l t er >
</ ac t i vi t y>
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . PSTN" andr oi d: l abel =" @st r i ng/ pst n_name"
andr oi d: i con=" @dr awabl e/ i c_l auncher _phone"> <i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. SENDTO" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . DEFAULT" / > <dat a andr oi d: scheme=" sms" / >
<dat a andr oi d: scheme=" smst o" / > </ i nt ent - f i l t er >
</ ac t i vi t y>
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . SI P" andr oi d: l abel =" @st r i ng/ app_name"> <i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. SENDTO" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . DEFAULT" / > <dat a andr oi d: scheme=" sms" / >
<dat a andr oi d: scheme=" smst o" / > </ i nt ent - f i l t er >
</ ac t i vi t y>
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . Aut oAnswer " andr oi d: l abel =" @st r i ng/ app_name"/ > <act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . ChangeAcc ount " andr oi d: l abel =" @s t r i ng/ app_name"/ > <act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . SI PUr i " andr oi d: l abel =" @st r i ng/ app_name"
andr oi d: t heme=" @andr oi d: st yl e/ Theme. Di al og"> <i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. CALL" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . DEFAULT" / > <dat a andr oi d: scheme=" si p" / >
<dat a andr oi d: scheme=" si pdr oi d" / > </ i nt ent - f i l t er >
<i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. SENDTO" / > <act i on andr oi d: name=" andr oi d. i nt ent . act i on. VI EW" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . DEFAULT" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . BROWSABLE" / > <dat a andr oi d: scheme=" i mt o" / >
<dat a andr oi d: scheme=" si p" / > </ i nt ent - f i l t er >
<i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. CALL_PRI VI LEGED" / > <cat egor y andr oi d: name=" andr oi d. i nt ent . cat egor y . DEFAULT" / > <dat a andr oi d: scheme=" si p" / >
</ i nt ent - f i l t er > </ ac t i vi t y>
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . Act i vi t y2" andr oi d: l abel =" @st r i ng/ app_name"
andr oi d: excl udeFr omRecent s=" t r ue" andr oi d: t ask Af f i ni t y=" "/ >
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . Set t i ngs" andr oi d: l abel =" @st r i ng/ app_name"
andr oi d: conf i gChanges=" or i ent at i on| keyboar dHi dden"> andr oi d: excl udeFr omRecent s=" t r ue" andr oi d: t ask Af f i ni t y=" " > </ ac t i vi t y>
<act i vi t y
andr oi d: name=" or g. si pdr oi d. codecs. Codecs$CodecSet t i ngs "
andr oi d: l abel =" @st r i ng/ app_name" > </ ac t i vi t y>
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . Vi deoCamer a" andr oi d: l abel =" @st r i ng/ menu_vi deo"
andr oi d: excl udeFr omRecent s=" t r ue" andr oi d: t askAf f i ni t y=" "
andr oi d: t heme=" @andr oi d: st yl e/ Theme. Bl ack. NoTi t l eBar . Ful l scr een"
andr oi d: scr eenOr i ent at i on=" l andscape"
andr oi d: cl ear TaskOnLaunch=" t r ue"
andr oi d: conf i gChanges=" or i ent at i on| key boar dHi dden"> </ ac t i vi t y>
<act i vi t y andr oi d: name=" or g. si pdr oi d. s i pua. ui . I nCal l Scr een" andr oi d: l abel =" @st r i ng/ app_name"
andr oi d: excl udeFr omRecent s=" t r ue" andr oi d: t askAf f i ni t y=" "
andr oi d: l aunchMode=" si ngl eI nst ance"> </ ac t i vi t y>
(16)
<r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . OneShot Al ar m"/ > <r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . OneShot Al ar m2"/ > <r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . LoopAl ar m"/ > <r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . OwnWi f i "/ > <r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . OneShot Locat i on"/ > <r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . LoopLoc at i on"/ > <r ecei ver andr oi d: name=" or g. si pdr oi d. si pua. ui . Cal l er "> <i nt ent - f i l t er andr oi d: pr i or i t y=" - 1">
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. NEW_OUTGOI NG_CALL" / > </ i nt ent - f i l t er >
</ r ecei v er >
<r ec ei ver andr oi d: name=" or g. si pdr oi d. s i pua. ui . Rec ei ver " andr oi d: enabl ed=" t r ue"> <i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. BOOT_COMPLETED" / >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. EXTERNAL_APPLI CATI ONS_AVAI LABLE" / > <act i on andr oi d: name=" andr oi d. i nt ent . act i on. EXTERNAL_APPLI CATI ONS_UNAVAI LABLE" / > </ i nt ent - f i l t er >
<i nt ent - f i l t er >
<act i on andr oi d: name=" andr oi d. i nt ent . act i on. PACKAGE_REPLACED" / > <dat a andr oi d: scheme=" package" / >
<dat a andr oi d: pat h=" or g. si pdr oi d. si pua" / > </ i nt ent - f i l t er >
</ r ecei v er >
<ser vi ce andr oi d: name=" or g. si pdr oi d. si pua. ui . Regi st er Ser v i ce" / > </ appl i c at i on>
<uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. I NTERNET"></ uses- per mi ssi on>
<uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. MODI FY_AUDI O_SETTI NGS"></ uses- per mi s si on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. RECORD_AUDI O"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. PROCESS_OUTGOI NG_CALLS"></ uses - per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. WRI TE_SETTI NGS"></ uses- per mi ss i on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. READ_PHONE_STATE"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. ACCESS_WI FI _STATE"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. RECEI VE_BOOT_COMPLETED"></ uses - per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. READ_CONTACTS"></ us es- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. WRI TE_CONTACTS"></ uses- per mi ss i on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. CALL_PHONE"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. WAKE_LOCK"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. DI SABLE_KEYGUARD"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. CAMERA"></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. VI BRATE" ></ uses- per mi ssi on>
<uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. ACCESS_FI NE_LOCATI ON" ></ uses- per mi s si on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. CHANGE_WI FI _STATE" ></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. WRI TE_EXTERNAL_STORAGE" ></ uses- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. BLUETOOTH" ></ uses- per mi ssi on>
<uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. GET_ACCOUNTS" ></ us es- per mi ssi on> <uses- per mi s si on andr oi d: name=" andr oi d. per mi ss i on. BROADCAST_STI CKY" ></ uses- per mi ssi on> </ mani f est >
Folder src
/Sipdroid/src/org/sipdroid/codecs
G711. j ava
package
or g. si pdr oi d. codecs;
/ * *
* G. 711 codec. Thi s cl ass pr ovi des met hods f or u- l aw, A- l aw and l i near PCM * conver si ons.
* /
publ i c cl ass G711 { / *
* Copyr i ght 1992 by Jut t a Degener and Car st en Bor mann, Techni s che * Uni ver si t aet Ber l i n. See t he accompanyi ng f i l e " COPYRI GHT" f or * det ai l s. THERE I S ABSOLUTELY NO WARRANTY FOR THI S SOFTWARE. * /
st at i c f i nal shor t[ ] a2s = newshor t[ 256] ;
st at i c f i nal i nt[ ] _a2s = {
60032, 60288, 59520, 59776, 61056, 61312, 60544, 60800, 57984, 58240, 57472, 57728, 59008, 59264, 58496, 58752, 62784, 62912, 62528, 62656, 63296, 63424, 63040, 63168, 61760, 61888, 61504, 61632, 62272, 62400, 62016, 62144, 43520, 44544, 41472, 42496, 47616, 48640, 45568, 46592, 35328, 36352, 33280, 34304, 39424, 40448, 37376, 38400, 54528, 55040, 53504, 54016, 56576, 57088, 55552, 56064, 50432, 50944, 49408, 49920, 52480, 52992, 51456, 51968, 65192, 65208, 65160, 65176, 65256, 65272, 65224, 65240, 65064, 65080, 65032, 65048, 65128, 65144, 65096, 65112, 65448, 65464, 65416, 65432, 65512, 65528, 65480, 65496, 65320, 65336, 65288, 65304, 65384, 65400, 65352, 65368, 64160, 64224, 64032, 64096, 64416, 64480, 64288, 64352, 63648, 63712, 63520, 63584, 63904, 63968, 63776, 63840, 64848, 64880, 64784, 64816, 64976, 65008, 64912, 64944, 64592, 64624, 64528, 64560, 64720, 64752, 64656, 64688, 5504, 5248, 6016, 5760, 4480, 4224, 4992, 4736, 7552, 7296, 8064, 7808, 6528, 6272, 7040, 6784, 2752, 2624, 3008, 2880, 2240, 2112, 2496, 2368, 3776, 3648, 4032, 3904, 3264, 3136, 3520, 3392, 22016, 20992, 24064, 23040, 17920, 16896, 19968, 18944, 30208, 29184, 32256, 31232, 26112, 25088, 28160, 27136,
(17)
11008, 10496, 12032, 11520, 8960, 8448, 9984, 9472, 15104, 14592, 16128, 15616, 13056, 12544, 14080, 13568, 344, 328, 376, 360, 280, 264, 312, 296, 472, 456, 504, 488, 408, 392, 440, 424, 88, 72, 120, 104, 24, 8, 56, 40, 216, 200, 248, 232, 152, 136, 184, 168, 1376, 1312, 1504, 1440, 1120, 1056, 1248, 1184, 1888, 1824, 2016, 1952, 1632, 1568, 1760, 1696, 688, 656, 752, 720, 560, 528, 624, 592, 944, 912, 1008, 976, 816, 784, 880, 848 } ;
st at i c f i nal byt e[ ] s2a = newbyt e[ 65536] ;
st at i c f i nal i nt[ ] _s2a = {
213, 212, 215, 214, 209, 208, 211, 210, 221, 220, 223, 222, 217, 216, 219, 218, 197, 196, 199, 198, 193, 192, 195, 194, 205, 204, 207, 206, 201, 200, 203, 202, 245, 245, 244, 244, 247, 247, 246, 246, 241, 241, 240, 240, 243, 243, 242, 242, 253, 253, 252, 252, 255, 255, 254, 254, 249, 249, 248, 248, 251, 251, 250, 250, 229, 229, 229, 229, 228, 228, 228, 228, 231, 231, 231, 231, 230, 230, 230, 230, 225, 225, 225, 225, 224, 224, 224, 224, 227, 227, 227, 227, 226, 226, 226, 226, 237, 237, 237, 237, 236, 236, 236, 236, 239, 239, 239, 239, 238, 238, 238, 238, 233, 233, 233, 233, 232, 232, 232, 232, 235, 235, 235, 235, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151, 151, 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157, 157, 156, 156, 156, 156, 156, 156, 156, 156, 159, 159, 159, 159, 159, 159, 159, 159, 158, 158, 158, 158, 158, 158, 158, 158, 153, 153, 153, 153, 153, 153, 153, 153, 152, 152, 152, 152, 152, 152, 152, 152, 155, 155, 155, 155, 155, 155, 155, 155, 154, 154, 154, 154, 154, 154, 154, 154, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 135, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 134, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 129, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 131, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 130, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 137, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 136, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 181, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 183, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 182, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 177, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 176, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 179, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 178, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 189, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 188, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 191, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 190, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 185, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 184, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 186, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166,
(18)
166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 173, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 172, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 175, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 174, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33,
(19)
33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 30, 30, 30, 30, 30, 30, 30, 30, 31, 31, 31, 31, 31, 31, 31, 31, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 106, 106, 106, 106, 107, 107, 107, 107, 104, 104, 104, 104, 105, 105, 105, 105, 110, 110, 110, 110, 111, 111, 111, 111, 108, 108, 108, 108, 109, 109, 109, 109, 98, 98, 98, 98, 99, 99, 99, 99, 96, 96, 96, 96, 97, 97, 97, 97, 102, 102, 102, 102, 103, 103, 103, 103, 100, 100, 100, 100, 101, 101, 101, 101, 122, 122, 123, 123, 120, 120, 121, 121, 126, 126, 127, 127, 124, 124, 125, 125, 114, 114, 115, 115, 112, 112, 113, 113, 118, 118, 119, 119, 116, 116, 117, 117, 74, 75, 72, 73, 78, 79, 76, 77, 66, 67, 64, 65, 70, 71, 68, 69, 90, 91, 88, 89, 94, 95, 92, 93, 82, 83, 80, 81, 86, 87, 84, 85 } ;
/ / change G711 ul aw st ar t
st at i c f i nal i nt _u2a[ ] = { / * u- t o A- l aw conver si ons * /
1, 1, 2, 2, 3,
3, 4, 4,
5, 5, 6, 6, 7,
7, 8, 8,
9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24,
25, 27, 29, 31, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 46, 48, 49, 50, 51, 52, 53, 54,
(20)
55, 56, 57, 58, 59, 60, 61, 62, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128} ;
st at i c f i nal i nt _a2u[ ] = { / * A- t o u- l aw conver si ons * /
1, 3, 5, 7, 9,
11, 13, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 32, 33, 33, 34, 34, 35, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 48, 49, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127} ; / / change end
publ i c st at i cvoi d i ni t ( ) { }
st at i c {
i nt i ;
f or ( i = 0; i < 256; i ++)
a2s[ i ] = (shor t)_a2s[ i ] ;
f or ( i = 0; i < 65536; i ++)
s2a[ i ] = (by t e)_s2a[ i >> 4] ; }
publ i c st at i cvoi d al aw2l i near (byt e al aw[ ] ,shor t l i n[ ] ,i nt f r ames) {
i nt i ;
f or ( i = 0; i < f r ames; i ++)
l i n[ i ] = a2s[ al aw[ i +12] & 0xf f ] ; }
publ i c st at i cvoi d al aw2l i near (byt e al aw[ ] ,shor t l i n[ ] ,i nt f r ames,i nt mu) {
i nt i ;
f or ( i = 0; i < f r ames; i ++)
l i n[ i ] = a2s[ al aw[ i / mu+12] & 0xf f ] ; }
publ i c st at i cvoi d l i near 2al aw(shor t l i n[ ] ,i nt of f set ,byt e al aw[ ] ,i nt f r ames) {
i nt i ;
f or ( i = 0; i < f r ames; i ++)
al aw[ i +12] = s2a[ l i n[ i +of f set ] & 0xf f f f ] ; }
/ / change g711 ul aw st ar t pr ot ect edst at i ci nt al aw2ul aw(i nt aval ) { aval &=0xf f ;
r et ur n ( ( aval & 0x80) ! =0) ? ( 0xFF^_a2u[ aval ^ 0xD5] ) : ( 0x7F^_a2u[ aval ^0x55] ) ; }
pr ot ect edst at i ci nt ul aw2al aw(i nt uval ) { uval &=0xf f ;
r et ur n ( ( uval &0x80) ! =0) ? ( 0xD5^ (_u2a[ 0xFF^ uval ] - 1) ) : ( 0x55^ (_u2a[ 0x7F^ uval ] - 1) ) ; }
publ i c st at i cvoi d ul aw2l i near (byt e ul aw[ ] ,shor t l i n[ ] ,i nt f r ames) {
i nt i ;
f or ( i = 0; i < f r ames; i ++)
l i n[ i ] = a2s[ul aw2al aw( ul aw[ i +12] & 0xf f ) ] ; }
publ i c st at i cvoi d l i near 2ul aw(shor t l i n[ ] ,i nt of f set ,byt e ul aw[ ] ,i nt f r ames) {
i nt i ;
f or ( i = 0; i < f r ames; i ++)
ul aw[ i +12] = (byt e)al aw2ul aw(s2a[ l i n[ i +of f set ] & 0xf f f f ] ) ; }
/ / change end }
alaw.java
package
or g. si pdr oi d. codecs;
cl ass
al aw
ext endsCodecBase
i mpl ement sCodec {
(21)
CODEC_NAME = " PCMA" ;
CODEC_USER_NAME = " PCMA" ;
CODEC_DESCRI PTI ON = " 64kbi t " ;
CODEC_NUMBER = 8;
CODEC_DEFAULT_SETTI NG = " wl anor 3g" ;
l oad( ) ;
}
publ i c voi d
i ni t ( ) {
G711.
i ni t
( ) ;
}
publ i c i nt
decode(
byt eenc[ ] ,
shor tl i n[ ] ,
i ntf r ames) {
G711.
al aw2l i near
( enc, l i n, f r ames) ;
r et ur n
f r ames;
}
publ i c i nt
encode(
shor tl i n[ ] ,
i ntof f set ,
byt eenc[ ] ,
i ntf r ames) {
G711.
l i near 2al aw
( l i n, of f set , enc, f r ames) ;
r et ur n
f r ames;
}
publ i c voi d
cl ose( ) {
}
}
Ulaw.java
package or g. si pdr oi d. codecs;
cl ass ul aw e xt ends CodecBase i mpl e ment s Codec { ul aw( ) {
CODEC_NAME = " PCMU" ; CODEC_USER_NAME = " PCMU" ; CODEC_DESCRI PTI ON = " 64kbi t " ; CODEC_NUMBER = 0;
CODEC_DEFAULT_SETTI NG = " wl anor 3g" ; l oad( ) ;
}
publ i c voi d i ni t ( ) { G711.i ni t( ) ; }
publ i c i nt decode(byt e enc[ ] , shor t l i n[ ] , i nt f r ames) { G711.ul aw2l i near( enc, l i n, f r ames) ;
r et ur n f r ames; }
publ i c i nt encode(shor t l i n[ ] , i nt of f set , byt e enc[ ] , i nt f r ames) { G711.l i near 2ul aw( l i n, of f set , enc, f r ames) ;
r et ur n f r ames; }
publ i c voi d cl ose( ) { }
}
Codec.java
package or g. si pdr oi d. codecs;
i mpor t andr oi d. pr ef er ence. Li st Pr ef er ence; / * *
* Repr esent s t he basi c i nt er f ace t o t he Codec cl asses Al l codecs need * t o i mpl ement basi c encode and decode capabi l i t y Codecs whi ch * i nher i t f r om { @l i nk CodecBase} onl y need t o i mpl ement encode, * dec ode and i ni t
* /
publ i c i nt er f ace Codec { / * *
* Dec ode a l i near pcm audi o st r eam *
* @par am encoded The encoded audi o st r eam *
* @par am l i n The l i near pcm audi o f r ame buf f er i n whi ch t o pl ace t he decoded st r eam *
* @par am si ze The si ze of t he encoded f r ame *
(22)
* @r et ur ns The si ze of t he decoded f r ame * /
i nt decode( byt e encoded[ ] , shor t l i n[ ] , i nt si ze) ; / * *
* Enc ode a l i near pcm audi o st r eam *
* @par am l i n The l i near st r eam t o encode *
* @par am of f set The of f set i nt o t he l i near st r eam t o begi n *
* @par am encoded The buf f er t o pl ace t he encoded st r eam *
* @par am si ze t he si ze of t he l i near pcm st r eam ( i n wor ds) *
* @r et ur ns t he l engt h ( i n byt es) of t he encoded st r eam * /
i nt encode( s hor t l i n[ ] , i nt of f set , byt e al aw[ ] , i nt f r ames) ; / * *
* The sampl i ng r at e f or t hi s par t i cul ar codec * /
i nt samp_r at e( ) ; / * *
* The audi o f r ame si ze f or t hi s par t i cul ar codec * /
i nt f r ame_si ze( ) ; / * *
* Opt i onal l y used t o i ni t i al l i ze t he codec bef or e any * enc odi ng or decodi ng
* / voi d i ni t ( ) ; voi d updat e( ) ; / * *
* Opt i onal l y used t o f r ee any r es our ces al l oc at ed i n i ni t * af t er encodi ng or decodi ng i s c ompl et e
* / voi d c l ose( ) ; / * *
* ( i mpl ement ed by { @l i nk CodecBas e} * <p>
* checks t o see i f t he user has enabl ed t he c odec. *
* @r et ur ns t r ue i f t he codec can be used * /
bool ean i sEnabl ed( ) ; / * *
* ( i mpl ement ed by { @l i nk CodecBas e} * <p>
* Checks t o see i f t he bi nar y l i br ar y associ at ed wi t h t he * codec ( i f any) l oaded OK.
*
* @r et ur ns t r ue i f t he codec l oaded pr oper l y * /
bool ean i sLoaded( ) ; bool ean i sFai l ed( ) ; voi d f ai l ( ) ; bool ean i sVal i d( ) ; / * *
* ( i mpl ement ed by { @l i nk CodecBas e} *
* @r et ur ns The user f r i endl y st r i ng f or t he c odec ( shoul d * i nc l ude bot h t he name and t he bandwi dt h
* /
St r i ng get Ti t l e( ) ;
/ * *
* ( i mpl ement ed by { @l i nk CodecBas e} *
* @r et ur ns The RTP ass i gned name st r i ng f or t he codec * /
St r i ng name( ) ; St r i ng key( ) ; St r i ng get Val ue( ) ; / * *
* ( i mpl ement ed by { @l i nk CodecBas e} *
* @r et ur ns The commonl y used name f or t he codec. * /
St r i ng user Name( ) ; / * *
* ( i mpl ement ed by { @l i nk CodecBas e} *
* @r et ur ns The RTP ass i gned number f or t he codec * /
(23)
/ * *
* ( i mpl ement ed by { @l i nk CodecBas e} *
* @par am l The l i st pr ef er ence cont r ol l i ng t hi s Codec *
* Used t o add l i st ener s f or pr ef er ence changes and updat e * t he codec par amet er s accor di ngl y.
* /
voi d s et Li st Pr ef er ence( Li st Pr ef er ence l ) ; }
Codecs.java
package or g. si pdr oi d. codecs; i mpor t j ava. ut i l . HashMap; i mpor t j ava. ut i l . Vect or ; i mpor t or g. s i pdr oi d. si pua. R; i mpor t or g. s i pdr oi d. si pua. ui . Recei ver ; i mpor t or g. s i pdr oi d. si pua. ui . Set t i ngs; i mpor t or g. z ool u. sdp. Medi aFi el d; i mpor t or g. z ool u. sdp. Sessi onDescr i pt or ; i mpor t or g. z ool u. sdp. At t r i but eFi el d; i mpor t andr oi d. cont ent . Cont ext ; i mpor t andr oi d. cont ent . r es. Resour c es; i mpor t andr oi d. cont ent . Shar edPr ef er ences; i mpor t andr oi d. os. Bundl e;
i mpor t andr oi d. pr ef er ence. Pr ef er ence; i mpor t andr oi d. pr ef er ence. Pr ef er enceAct i vi t y; i mpor t andr oi d. pr ef er ence. Li st Pr ef er ence; i mpor t andr oi d. pr ef er ence. Pr ef er enceManager ; i mpor t andr oi d. pr ef er ence. Pr ef er enceScr een; i mpor t andr oi d. vi ew. Cont ext Menu;
i mpor t andr oi d. vi ew. Cont ext Menu. Cont ext MenuI nf o; i mpor t andr oi d. vi ew. Menu;
i mpor t andr oi d. vi ew. MenuI t em; i mpor t andr oi d. vi ew. Vi ew;
i mpor t andr oi d. wi dget . Adapt er Vi ew. Adapt er Cont ext MenuI nf o; publ i c cl ass Codecs {
pr i vat e st at i c f i nal Vect or <Codec> codecs = new Vect or <Codec>( ) { { / / add( new G722( ) ) ;
/ / add( new SI LK24( ) ) ; save s pace ( unt i l a common l i br ar y f or al l bi t r at es get s avai l abl e?)
/ / add( new SI LK16( ) ) ; / / add( new SI LK8( ) ) ;
add( new al aw( ) ) ; add( new ul aw( ) ) ; / / add( new Speex( ) ) ; / / add( new GSM( ) ) ; / / add( new BV16( ) ) ;
} } ;
pr i vat e st at i c f i nal HashMap<I nt eger , Codec> c odecsNumber s; pr i vat e st at i c f i nal HashMap<St r i ng, Codec> codecsNames; st at i c {
f i nal i nt si ze = codecs . si ze( ) ;
codecs Number s = new Has hMap<I nt eger , Codec>( si ze) ; codecs Names = new HashMap<St r i ng, Codec>( si ze) ; f or ( Codec c : codecs) {
codecs Names. put ( c. name( ) , c) ; codecs Number s. put ( c. number ( ) , c) ; }
Shar edPr ef er ences sp = Pr ef er enceManager . get Def aul t Shar edPr ef er ences( Recei ver . mCont ext ) ; St r i ng pr ef s = sp. get St r i ng( Set t i ngs. PREF_CODECS, Set t i ngs. DEFAULT_CODECS) ;
i f ( pr ef s == nul l ) { St r i ng v = " " ;
Shar edPr ef er ences. Edi t or e = sp. edi t ( ) ; f or ( Codec c : codecs)
v = v + c. number ( ) + " " ; e. put St r i ng( Set t i ngs. PREF_CODECS, v) ; e. commi t ( ) ;
} el se {
St r i ng[ ] val s = pr ef s. s pl i t ( " " ) ; f or ( St r i ng v: val s) {
t r y {
i nt i = I nt eger . par seI nt ( v) ; Codec c = codecsNumber s . get ( i ) ; / * mov es t he codec t o t he end * of t he l i st so we end up * wi t h t he new codecs ( i f * any ) at t he t op and t he * r emai ni ng ones or der ed * acc or di ng t o t he user * / i f ( c ! = nul l ) {
codecs . r emov e( c) ; codecs . add( c ) ; }
} cat c h ( Exc ept i on e) {
/ / do not hi ng ( expect i ng / / Number For mat Except i on and
(24)
/ / i ndexnot f ound }
} }
}
publ i c st at i c Codec get ( i nt key) { r et ur n codec sNumber s. get ( key) ; }
publ i c st at i c Codec get Name( St r i ng name) { r et ur n codec sNames. get ( name) ; }
publ i c st at i c voi d chec k( ) {
HashMap<St r i ng, St r i ng> ol d = new HashMap<St r i ng, St r i ng>( codec s. si ze( ) ) ; f or ( Codec c : codecs) {
c. updat e( ) ;
ol d. put ( c. name( ) , c. get Val ue( ) ) ; i f ( ! c . i sLoaded( ) ) {
Shar edPr ef er ences sp = Pr ef er enceManager . get Def aul t Shar edPr ef er ences( Recei ver . mCont ext ) ;
Shar edPr ef er ences. Edi t or e = sp. edi t ( ) ; e. put St r i ng( c. key( ) , " never " ) ; e. commi t ( ) ;
} }
f or ( Codec c : codecs)
i f ( ! ol d. get ( c. name( ) ) . equal s( " nev er " ) ) { c. i ni t ( ) ;
i f ( c. i sLoaded( ) ) {
Shar edPr ef er ences sp = Pr ef er enceManager . get Def aul t Shar edPr ef er ences( Recei ver . mCont ext ) ;
Shar edPr ef er ences. Edi t or e = sp. edi t ( ) ; e. put St r i ng( c. key( ) , ol d. get ( c. name( ) ) ) ; e. commi t ( ) ;
c. i ni t ( ) ; } el se
c. f ai l ( ) ; }
}
pr i vat e st at i c voi d addPr ef er ences( Pr ef er enceScr een ps) { Cont ex t cx = ps. get Cont ext ( ) ;
Resour ces r = cx. get Res our ces( ) ; ps. set Or der i ngAsAdded( t r ue) ; f or ( Codec c : codecs) {
Li st Pr ef er ence l = new Li st Pr ef er ence( cx) ;
l . set Ent r i es ( r . get St r i ngAr r ay( R. ar r ay. compr ess i on_di spl ay _val ues) ) ; l . set Ent r yVal ues( r . get St r i ngAr r ay( R. ar r ay. compr essi on_val ues) ) ; l . set Key( c. k ey( ) ) ;
l . set Per si st ent ( t r ue) ; l . set Enabl ed( ! c. i sFai l ed( ) ) ; c. set Li st Pr ef er ence( l ) ; i f ( c. number ( ) == 9)
i f ( ps . get Shar edPr ef er ences( ) . get St r i ng( Set t i ngs. PREF_SERVER, Set t i ngs. DEFAULT_SERVER) . equal s( Set t i ngs. DEFAULT_SERVER) )
l . set Summar y ( l . get Ent r y ( ) +" ( " +r . get St r i ng( R. st r i ng. set t i ngs_i mpr ove2) +" ) " ) ;
el se
l . set Summar y ( l . get Ent r y ( ) +" ( " +r . get St r i ng( R. st r i ng. set t i ngs_hdvoi ce) +" ) " ) ;
el se
l . set Summar y ( l . get Ent r y ( ) ) ; l . set Ti t l e( c . get Ti t l e( ) ) ;
ps. addPr ef er ence( l ) ; }
}
publ i c st at i c i nt [ ] get Codecs( ) {
Vect or <I nt eger > v = new Vect or <I nt eger >( codecs . si ze( ) ) ; f or ( Codec c : codecs) {
c. updat e( ) ; i f ( ! c . i sVal i d( ) )
cont i nue; v. add( c. number ( ) ) ; }
i nt i [ ] = new i nt [ v. si z e( ) ] ; f or ( i nt j = 0; j < i . l engt h; j ++)
i [ j ] = v. el ement At ( j ) ; r et ur n i ;
}
publ i c st at i c cl ass Map { publ i c i nt number ; publ i c Codec codec; Vect or <I nt eger > number s ; Vect or <Codec > codecs;
(25)
Map( i nt n, Codec c, Vec t or <I nt eger > ns, Vect or <Codec> cs) { number = n;
codec = c; number s = ns ; codecs = cs; }
publ i c bool ean change( i nt n) { i nt i = number s. i ndexOf ( n) ;
i f ( i >= 0 && codecs. el ement At ( i ) ! = nul l ) { codec. cl ose( ) ;
number = n;
codec = codecs. el ement At ( i ) ; r et ur n t r ue;
}
r et ur n f al se; }
publ i c St r i ng t oSt r i ng( ) {
r et ur n " Codecs. Map { " + number + " : " + codec + " } " ; }
} ;
publ i c st at i c Map get Codec( Sessi onDescr i pt or of f er s) {
Medi aFi el d m = of f er s. get Medi aDesc r i pt or ( " audi o" ) . get Medi a( ) ; i f ( m==nul l )
r et ur n nul l ; St r i ng pr ot o = m. get Tr anspor t ( ) ;
/ / see ht t p: / / t ool s. i et f . or g/ ht ml / r f c4566#page- 22, par agr aph 5. 14, <f mt > descr i pt i on i f ( pr ot o. equal s( " RTP/ AVP" ) | | pr ot o. equal s( " RTP/ SAVP" ) ) {
Vect or <St r i ng> f or mat s = m. get For mat Li st ( ) ;
Vect or <St r i ng> names = new Vect or <St r i ng>( f or mat s. si ze( ) ) ; Vect or <I nt eger > number s = new Vect or <I nt eger >( f or mat s. si z e( ) ) ; Vect or <Codec > codecmap = new Vect or <Codec>( f or mat s. si ze( ) ) ; / / add al l av ai l f or mat s wi t h empt y names
f or ( St r i ng f mt : f or mat s) { t r y {
i nt number = I nt eger . par seI nt ( f mt ) ; number s. add( number ) ;
names. add( " " ) ; codecmap. add( nul l ) ; } cat c h ( Number For mat Ex cept i on e) {
/ / cont i nue . . . r emot e sent bogus r t p set t i ng }
} ;
/ / i f we have at t r s f or f or mat - > s et name Vect or <At t r i but eFi el d> at t r s =
of f er s . get Medi aDescr i pt or ( " audi o" ) . get At t r i but es( " r t pmap" ) ; f or ( At t r i but eFi el d a : at t r s) {
St r i ng s = a. get Val ue( ) ; / / ski p over " r t pmap: "
s = s. subst r i ng( 7, s. i ndexOf ( " / " ) ) ; i nt i = s. i ndexOf ( " " ) ;
t r y {
St r i ng name = s. subst r i ng( i + 1) ;
i nt number = I nt eger . par seI nt ( s. subst r i ng( 0, i ) ) ; i nt i ndex = number s. i ndexOf ( number ) ;
i f ( i ndex >=0)
names. set ( i ndex, name. t oLower Case( ) ) ; } cat c h ( Number For mat Ex cept i on e) {
/ / cont i nue . . . r emot e sent bogus r t p set t i ng }
}
Codec codec = nul l ;
i nt i ndex = f or mat s. si z e( ) + 1; f or ( Codec c : codecs) {
c. updat e( ) ; i f ( ! c . i sVal i d( ) )
cont i nue;
/ / sear ch cur r ent codec i n of f er s by name i nt i = names. i ndexOf ( c . user Name( ) . t oLower Case( ) ) ; i f ( i >= 0) {
codecmap. set ( i , c) ;
i f ( ( codec==nul l ) | | ( i < i ndex) ) { codec = c;
i ndex = i ; cont i nue; }
}
/ / sear ch cur r ent codec i n of f er s by number i = number s. i ndexOf ( c. number ( ) ) ; i f ( i >= 0) {
i f ( names. el ement At ( i ) . equal s( " " ) ) { codecmap. set ( i , c) ;
i f ( ( codec==nul l ) | | ( i < i ndex) ) { / / f mt number has no at t r wi t h name
(1)
Bab I Pendahuluan 2
Universitas Kristen Maranatha I.2 Identifikasi Masalah
Diperlukan suatu aplikasi softphone SIP pada smartphone Android yang dapat terintegrasi dengan server Asterisk yang memiliki jaringan VoIP berbasis SIP. Antara client yang telah terinstal aplikasi dapat berkomunikasi satu sama lain tanpa harus menggunakan pulsa atau membayar untuk hubungan tersebut.
I.3 Rumusan Masalah
1. Bagaimana mengkonfigurasi server Asterisk agar dapat digunakan sebagai server VoIP?
2. Bagaimana merancang sebuah jaringan VoIP agar antar client (user) bisa saling berkomunikasi menggunakan server Asterisk?
3. Bagaimana membuat program aplikasi client SIP pada smartphone berbasis Android?
I.4 Tujuan
Tujuan dari tugas akhir ini membuat jaringan server VoIP berbasis SIP dan aplikasi softphone pada smartphone Android untuk dapat menelepon antar client dalam satu server yang terintegrasi.
I.5 Pembatasan Masalah
Dalam perancangan tugas akhir ini, hal-hal yang akan dibahas meliputi: 1. Implementasi VoIP dengan menggunakan client Android.
2. Hanya melakukan perencanaan jaringan VoIP dengan menggunakan software Asterisk sebagai server.
3. Komunikasi antar perangkat hanya melalui hubungan LAN dan Wi-Fi dalam satu jaringan (tanpa dapat komunikasi dengan PSTN atau GSM dan CDMA).
4. Hubungan antara server dan client berbasis Android hanya dihubungkan dengan koneksi Wi-Fi dalam satu jaringan.
5. Tidak membahas yang berhubungan dengan keamanan sistem. 6. Jaringan VoIP menggunakan koneksi wireless Fidelity (Wi-Fi).
(2)
Bab I Pendahuluan 3
Universitas Kristen Maranatha I.6 Spesifikasi Alat
Spesifikasi alat yang digunakan untuk perancangan dan realisasi adalah sebagai berikut:
1. Tiga smartphone dengan OS Android, digunakan sebagai client aplikasi Android.
2. Laptop dengan OS Linux Open Suse 10.2 yang terinstal software Asterisk PBX 1.4.17 dan softphone X-Lite, sebagai server dan client pc1.
3. Laptop yang terinstal softphone X-Lite sebagai client pc 2.
4. Wireless Router TP-Link TL-WR841ND, digunakan untuk menyebarkan sinyal Wi-Fi dan pemberi nomor IP.
5. Earphone Genius HS300A yang digunakan untuk komunikasi suara pada client laptop.
I.7 Sistematika Penulisan
Sistematika penulisan laporan dalam tugas akhir ini disusun menjadi beberapa bab seperti yang diuraikan berikut:
BAB I PENDAHULUAN
Dalam bab ini menjelaskan permasalahan yang melatarbelakangi penulisan laporan tugas akhir ini, selain itu membahas identifikasi masalah, rumusan masalah, tujuan, pembatasan masalah dan menguraikan sistematika penulisan tugas akhir ini.
BAB II DASAR TEORI
Dalam bab ini akan dibahas mengenai landasan teori mengenai VoIp, SIP, Wi-Fi, perangkat LAN, softphone, Asterisk dan Android.
(3)
Bab I Pendahuluan 4
Universitas Kristen Maranatha BAB III PERANCANGAN DAN REALISASI
Dalam bab ini akan dibahas mengenai hardware dan software yang digunakan, perancangan sistem VoIP, Perancangan aplikasi dan tampilan interface aplikasi Android.
BAB IV ANALISA DAN DATA PENGAMATAN
Dalam bab ini dibahas pengambilan data dan analisa terhadap data pengamatan.
BAB V KESIMPULAN DAN SARAN
Pada bab ini akan membahas mengenai kesimpulan dari apa yang telah dikerjakan dan saran untuk perbaikan dan pengembangan lebih lanjut.
(4)
71 Universitas Kristen Maranatha
BAB V
KESIMPULAN DAN SARAN
V.1 Kesimpulan
Perancangan jaringan VoIP dan aplikasi softphone SIP pada smartphone Android berhasil direalisasikan dalam satu jaringan, yang penyebarannya terbatas pada kemampuan router meng-cover area/wilayah.
Komunikasi suara client 104 Samsung Galaxy W dan client 105 Smartfren Andromax U dengan client lainnya (kecuali client 102 S. Galaxy Tab2) memiliki tingkat keberhasilan 100% dari 10 kali pengujian. Komunikasi suara antara S.Galaxy Tab2 dengan client lainnya (Laptop dan smartphone) memiliki tingkat keberhasilan 50% sampai 70%, hal ini disebabkan karena perangkat S.Galaxy Tab2 memiliki level sinyal Wi-Fi yang kurang stabil dibandingkan perangkat lainnya.
Penggunaan smartphone Android dengan versi Operating System yang berbeda tidak mempengaruhi kerja aplikasi. Level sinyal Wi-Fi client saat pengujian juga mempengaruhi kualitas suara dan keberhasilan panggilan. Perbedaan spesifikasi yang dimiliki masing-masing smartphone juga mempengaruhi kerja aplikasi.
Delay komunikasi antara 2 client dan 4 client yang saling berkomunikasi memiliki rata-rata waktu 0,43s dan 0,4s untuk komunikasi S.Galaxy Tab2 dengan S.Galaxy W, waktu yang dihasilkan hampir mirip karena kemampuan server Asterisk yang cukup handal dalam alokasi bandwidth.
V.2 Saran
Perancangan aplikasi softphone berbasis Android ini agar dapat dikembangan lagi tidak terbatas pada penggunaan koneksi Wi-Fi saja, namun dapat dengan jaringan lainnya seperti EDGE, 3G dan dapat terkoneksi dengan jaringan PSTN. Selain itu untuk perkembangannya aplikasi tidak hanya mendukung komunikasi suara saja namun juga kemam- puan komunikasi lainnya seperti message, video call, video message dll.
(5)
72 Universitas Kristen Maranatha
DAFTAR PUSTAKA
1. Ensiklopedia Wikipedia. VoIP. (online),
(http://id.wikipedia.org/wiki/Voip, diakses 15 Juni 2013)
2. STIMIK AMIKOM. Publikasi_2705.(online),
(http://repository.amikom.ac.id/index.php/detail/1881/PENGARUH%20SPEECH%2 0CODEC%20GSM,%20ILBC%20DAN%20PCMU%20PADA%20KUALITAS%20
LAYANAN%20VOIP%20DI%20SMK%0SYUBBANUL%20WATHON, diakses
16 Juni 2013)
3. Simanjuntak,Hakim.2013. Pengertian VoIP Server.(online),
(http://engineindo.blogspot.com/2013/02/pengertian-voip-server.html, diakses 16 Juni 2013)
4. Ensiklopedia Wikipedia. G.711. (online),
( http://en.wikipedia.org/wiki/G.711, diakses 16 Juni 2013) 5. Ozeki. Session Initiation Protocol (SIP). (online),
(http://www.voip-sip-sdk.com/p_230-session-initiation-protocol-voip.html, diakses 15 Juni 2013)
6. Ensiklopedia Wikipedia. SIP. (online),
(http://en.wikipedia.org/wiki/Session_Initiation_Protocol, diakses 15 Juni 2013)
7. Ensiklopedia Wikipedia. Wi-Fi. (online),
(http://id.wikipedia.org/wiki/WiFi, diakses 15 Juni 2013)
8. Indrawan, Rizky. 2011. Penjelasan Tentang Wi-Fi/Wirelass Lan. (online), (http://rizkyindrawan.wordpress.com/2010/12/10/penjelasan-tentang-wi-fi-wireless-lan/, diakses 16 Juni 2013)
9. Antenaku. Perbedaan Modem, Repeater, HUB, Switch, Router, Bridge, Access Point. (online),
(http://antena-ku.blogspot.com/2013/04/perbedaan-modem-repeater-hub-switch.html, diakses 16 Juni 2013)
(6)
73
Universitas Kristen Maranatha (http://blog.virtualpbx.com/2011/10/27/what-exactly-is-a-softphone/, diakses 17 Juni 2013)
11.Megellen Van J, Madsen L, Smith J. 2007. Asterisk The Future of Telephony. Sebastopol: O Reilly.
12.Safaat, Nazruddin H. 2012.Pemrograman Aplikasi Mobile Smartphone dan Tablet PC Berbasis Android. Bandung: Informatika Bandung.
13.Ableson, W.F., Robi, S., King, C.2011. Android in Action, Second Edition. Stamford : Manning Publications Co.