Perancangan dan Realisasi Aplikasi Softphone Pada Jaringan VoIP Berbasis SIP Untuk Smartphone Android.

(1)

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 ends

CodecBase

i mpl ement s

Codec {


(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 e

enc[ ] ,

shor t

l i n[ ] ,

i nt

f 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 t

l i n[ ] ,

i nt

of f set ,

byt e

enc[ ] ,

i nt

f 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.