Panduan Dasar Pemrograman Tizen

168

Transcript of Panduan Dasar Pemrograman Tizen

Page 1: Panduan Dasar Pemrograman Tizen
Page 2: Panduan Dasar Pemrograman Tizen

0

1

2

3

3.1

3.2

3.3

4

4.1

4.2

4.3

4.4

4.5

4.6

4.7

5

5.1

5.2

5.3

5.4

5.5

5.6

5.7

6

6.1

6.2

6.3

6.4

6.5

6.6

TableofContentsIntroduction

KataPengantar

Pendahuluan

MengenalTizendanPenerapannya

ArsitekturUmumTizen

PenerapandanPenggunaanTizen

PengembanganaplikasiTizen

PemrogramanTizenuntukPlatformWindows

PersiapanInstalasi

InstalasiTizen

KonfigurasiSetelahInstalasiTizen

MengenalTizenDevelopmentIDE

MengenalTizenEmulator

HelloWorldTizen

ProyekTizenPertamaku

PemrogramanTizenuntukPlatformLinux

PersiapanInstalasi

InstalasiTizen

KonfigurasiSetelahInstalasiTizen

MengenalTizenDevelopmentIDE

MengenalTizenEmulator

HelloWorldTizen

ProyekTizenPertamaku

PemrogramanTizenuntukPlatformMac

PersiapanInstalasi

InstalasiTizen

KonfigurasiSetelahInstalasiTizen

MengenalTizenDevelopmentIDE

MengenalTizenEmulator

HelloWorldTizen

PanduanDasarPemrogramanTizen

2

Page 3: Panduan Dasar Pemrograman Tizen

6.7

7

8

ProyekTizenPertamaku

Resouces

ProfilPenulis

PanduanDasarPemrogramanTizen

3

Page 4: Panduan Dasar Pemrograman Tizen

TizenmerupakanopensourceprojectuntuksistemoperasiyangberbasismodifikasiLinuxKerneldanWebKitruntime.DenganTizen,kitadapatmenjalankanaplikasidiatasSmartphone,WearableataupuncomplaisancedevicesyangmengusungOSTizen.

BukuPanduanDasarPemrogramanTizendibuatdenganmaksuddantujuanuntukmembantuparadeveloperpemulaataudeveloperyangsudahmemilikiketrampilanmemprogramaplikasimobilebaikituWindowsPhone,AndroidataupuniOSdalammembuataplikasimobilediatasplatformTizen.

PanduanDasarPemrogramanTizen

4Introduction

Page 5: Panduan Dasar Pemrograman Tizen

KataPengantarTizenadalahsistemoperasiterbuka,efisiendanfleksibelyangdibangununtukbekerjapadasemuakategoridevices.SaatiniTizentelahmenjadibagianpentingpadaekosistemdevicemanufacture,mobileoperators,appdevelopersdanISV,karenajumlahdanjenisdeviceyangmenggunakansistemoperasiiniterusbertambah,termasukdiIndonesia.Tizendirancanguntukmemenuhikebutuhanberbagaijenisindustri,sepertiautomotiveIVI(In-VehicleInfotainment),mobile,TVdanWearable.ManufacturedapatmemodifikasiTizensesuaidengankebutuhan,untukberjalandiatasspesifikasihardwareyangterbatas,sepertimemory,processordanpower.EfisiensiadalahsalahsatukeunggulanTizendibandingsistemoperasilainnya.

UntukappdevelopersdanISV,Tizenmenyediakanfasilitasuntukmembangunaplikasimenggunakannative(C/C++)danweb(HTML5/JavaScript)secaraproduktif.Karenacakupannyayangluas,developerdapatmembuataplikasiyangterkoneksiantarasemuasmartdevices,sepertiwearables,consumerelectronics(TVs,gamingconsoles,DVRs,danlain-lain),mobildanIoTappliances.BukuiniakansangatmembantudevelopersuntukmemulaieksplorasitentangTizensebagaiplatformdevelopment.DengangayapenulisanyangpraktikalbukuinidapatmempercepatprosespembelajaranhinggaandadapatmembuatprogramTizenpertamamenggunakantoolsetsepertiTizenIDE,emulatordanSDK.

PengembanganaplikasidiTizendapatdilakukandenganpendekatannative(C/C++)maupunweb(HTML5/JavaScript).DalambukuiniandaakanmencobapendekatanpertamamenggunakanANSICdanEnlightenmentFrameworkLibrary(EFL)untukmembuatprogramkalkulatorsederhana.NantikanbukuselanjutnyayangakanmengupaslebihdalammengenaiEFLobjects.

SemogabukuinimembantueksplorasiTizenanda.

RismanAdnan,Director,SamsungR&DIndonesia.

PanduanDasarPemrogramanTizen

5KataPengantar

Page 6: Panduan Dasar Pemrograman Tizen

PendahuluanTizenmerupakanopensourceprojectuntuksistemoperasiyangberbasismodifikasiLinuxKerneldanWebKitruntime.DenganTizen,kitadapatmenjalankanaplikasidiatasSmartphone,WearableataupuncomplaisancedevicesyangmengusungOSTizen.

BukuPanduanDasarPemrogramanTizendibuatdenganmaksuddantujuanuntukmembantuparadeveloperpemulaataudeveloperyangsudahmemilikiketrampilanmemprogramaplikasimobilebaikituWindowsPhone,AndroidataupuniOSdalammembuataplikasimobilediatasplatformTizen.

Adaempatbabyangakandibahaspadabukuini,antaralain:

MengenalTizendanpenerapannyaPemrogramanTizenuntukPlatformWindowsPemrogramanTizenuntukPlatformLinuxPemrogramanTizenuntukPlatformMac

PanduanDasarPemrogramanTizen

6Pendahuluan

Page 7: Panduan Dasar Pemrograman Tizen

PendahuluanTizenadalahperangkatlunak(software)platformberbasisopensourceyangdiperuntukanuntukberbagaiplatformsepertismartphone,wearable,tablet,netbook,smartTVdanlain-lainnya.

TizenhadirsebagaialternatifplatformlaindariAndroiddaniOSyangdiusungolehSamsung.TizendibangundariKernel-linuxmemilikiflesibilitasyangtinggisepertiAndroid.

PadababinikitaakanmengeksplorasiapadanbagaimanaTizenitusendiri.

Marikitalanjutkan.

PanduanDasarPemrogramanTizen

7MengenalTizendanPenerapannya

Page 8: Panduan Dasar Pemrograman Tizen

ArsitekturUmumTizenSepertidiketahuibahwaTizendibangundiatasKernelLinux.SelanjutnyadiatasnyadibangunbeberapalibraryAPIgunamendukungaplikasiyangberjalandiatasplatformTizen.

LibraryAPIinidipergunakanuntukoperasionaldankontroldariTizenitusendiri.Komponeninimeliputi:

BaseContentLocationMessagingMultimediaSocialSystemTelephonyUIWebApplicationFrameworkNetworkSecurity

Secaraumum,pembacadapatmelihatpadagambardibawahini.

Masing-masingAPIiniakandibahaspadabukuselanjutnya.

PanduanDasarPemrogramanTizen

8ArsitekturUmumTizen

Page 9: Panduan Dasar Pemrograman Tizen

PenerapandanPenggunaanTizenSepertidijelaskandiawalbahwaTizentidakhanyadiperuntukanuntukplatformsmartphonetetapiperalatanlainnya.

SalahsatuprodukTizenyangdiluncurkanuntukplatformsmartphoneadalahSamsungZ1.Andadapatmembacaspesifikasinyapadaalamatwebsitedibawahini.

http://www.samsung.com/in/consumer/mobile-devices/smartphones/others/SM-Z130HZKDINS

PanduanDasarPemrogramanTizen

9PenerapandanPenggunaanTizen

Page 10: Panduan Dasar Pemrograman Tizen

SelainSamsungZ1,SamsungjugameluncurkanSamsungZ3dimanapembacadapatmelakukanreviewspesifikasinyapadaalamatini.http://www.samsung.com/in/consumer/mobile-devices/smartphones/others/SM-Z300HZKDINS

SemuaSamsungSmartTVjugamenggunakanTizenOSsebagaibagianoperationalnya.

SelainSamsungSmartTV,SamsungWearablejugamenggunakanTizenOSsebagaisistemyangditanampadaperalatantersebut.

Kalaukitabolehmenarikbenangmerahnya,denganinvestasidalammengembangkanaplikasiTizen,kitadapatmelakukaninstalasikebeberapaperalatanplatform.

PanduanDasarPemrogramanTizen

10PenerapandanPenggunaanTizen

Page 11: Panduan Dasar Pemrograman Tizen

PengembanganAplikasiTizenTizendevelopmentmenawarkanbeberapatargetplatformperalatanyangcukupbanyak.Untukpengembangan,Tizenmenawarkanduaopsidalamdevelopmentyaitu:

NativeApplicationWebApplication

PadaNativeapplicationkitaakanmengembangkanaplikasiTizendalambahasaC.Keuntunganyangdidapatkanpadaopsiiniadalahkecepatandankeandalan.HalinidisebabkankitasecaralangsungmengaksesTizenAPI.

SedangkanWebapplicationdiperuntukanbagiparadeveloperyangmemilikidasarHTML5.SepertidiketahuiHTML5inijugadidukungolehplatformlainsepertiAndroid,iOS,WindowsPhone,FireOS.Keuntunganopsiini,kitadapatmempergunakantemplateHTML5yangsudahadasehinggainidapatdipakaiolehplatformlainyangberbasisHTML5.

PanduanDasarPemrogramanTizen

11PengembanganaplikasiTizen

Page 12: Panduan Dasar Pemrograman Tizen

PendahuluanSDKTizenterdiridaribeberapaperangkatutamayangdibutuhkanuntukmembuatdanmenjalankanaplikasiTizen.

PadasesiinikitaakanmelakukaninstalasidankonfigurasigunamembuatdanmenjalankanaplikasiTizendiatasplatformWindows.DisinipenulisakanmenggunakansistemoperasiWindows10sebagaitestingnya.

PanduanDasarPemrogramanTizen

12PemrogramanTizenuntukPlatformWindows

Page 13: Panduan Dasar Pemrograman Tizen

PersiapanuntukInstalasiSebelummemulaimelakukaninstalasiTizenpadakomputer,berikutbeberapahalyangperludisiapkanuntukmembuatdanmenjalankanaplikasiTizenpadaplatformwindows.

PerangkatKerasUntukmembuataplikasiTizenpadaplatformWindows,berikutperangkatkerasyangdibutuhkanuntukmempersiapkanenvironmentpembuatanaplikasiTizen.

Komponen Minimum Rekomendasi

KecepatanProsesor 2GHz 3GHz

TipeProsesor IntelDual-Core IntelCorei5

Memori(RAM) 3GB 4GB

KapasitasDiskkosong 6GB 10GB

SistemOperasiProsespembuatanaplikasiTizendapatberjalandenganbaikpadasistemoperasiWindows7/8/10dengantipesistemoperasi32bitmaupun64bit.

MicrosoftWindows® Minimum Rekomendasi

Windows®7 32bit 64bit

Windows®8 32bit 64bit

Windows®10 32bit 64bit

JavaDevelopmentKit(JDK)UntukmembuatdanmenjalankanaplikasiTizen,dibutuhkanJavaDevelopmentKit(JDK)versi7atausetelahnya.JDKdapatdiunduhdihalamanresmiOraclepadatautanhttp://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html.PilihdanunduhJDKyangsesuaidengantipesistemoperasiwindowsyangdigunakan.Padasaatbukuiniditulis,versiterakhirJDKadalahversi80.

PanduanDasarPemrogramanTizen

13PersiapanInstalasi

Page 14: Panduan Dasar Pemrograman Tizen

BerikutmerupakantautanuntukmengunduhJDKuntukplatformWindows.

MicrosoftWindows® NamaFile Link

32Bitjdk-7u80-windows-i586.exe

http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-windows-i586.exe

64Bitjdk-7u80-windows-x64.exe

http://download.oracle.com/otn-pub/java/jdk/7u80-b15/jdk-7u80-windows-x64.exe

SetelahberhasilmengunduhfileJDKyangsesuai,jalankanfile.exedanikutiperintahyangditampilkan.

TizenEmulatorBerikutmerupakankomponenyangdibutuhkanagarbisamenjalankanTizenEmulatorpadaplatformWindows.

PanduanDasarPemrogramanTizen

14PersiapanInstalasi

Page 15: Panduan Dasar Pemrograman Tizen

Komponen Rekomendasi

CPUCPUyangmendukungteknologiIntel®VT-x,suatuteknologivirtualisasiuntukmengemulasikanataumenjalankanTizenEmulator.Jikateknologiinitidakada,makaTizenEmulatorakanberjalandengansangatlambat.

ResolusiLayar 1280x1024

KartuGrafis

BerikutbeberapakartugrafisyangtelahdicobadandibuktikanberhasilmenjalankanTizenEmulator:

NVIDIA:GeForce8300GS,GeForce8500GT,GeForceGT220,GeForceGT430,GeForceGT530,GeForceGT330M,GeForceGTX550Ti,QuadroNVS290.

ATI:RADEONHD4850,RADEONHD5450.

Intel:HDGraphics2000,HDGraphics2500,HDGraphics4000.

Catatan:

JikakomputeryangdigunakanuntukmembuataplikasiTizenmenggunakanteknologiNvidiaOptimus,makaEmulatorakanbekerjadenganmenggunakankartugrafison-board.

KartugrafisintegratedyangterletakpadamotherboardIntelQ33/Q35/Q43/Q45tidakmendukunguntukmenjalankanemulatorTizen.

GenerasipertamakartugrafisIntelHDjugatidakmendukunguntukmenjalankanemulator.

Driver

Untukmemastikansetiapperangkatkerasyangdibutuhkandapatberjalandenganbaik,periksadaninstalldriver-driveruntuktiap-tiapperangkatkerasyangdibutuhkan.UntukWindows7/8/10,instalasidanupdatedriverbisadilakukanmelaluiControlPanel>SystemandSecurity>WindowsUpdate.

Intel®VT-x

TerdapatduacarauntukmemeriksaapakahprosesoryangdigunakanmendukungIntelVT-x.

1. PeriksaapakahprosesoryangdigunakanmendukungIntelVT-xmelaluihalamanhttp://ark.intel.com/.

2. UnduhdaninstallperangkatlunakbernamaIntelProcessorIdentificationUtilitypadatautanhttps://downloadcenter.intel.com/download/7838/Intel-Processor-Identification-Utility-Windows-VersiondanpastikanprosesormendukungIntelVT-x.

PanduanDasarPemrogramanTizen

15PersiapanInstalasi

Page 16: Panduan Dasar Pemrograman Tizen

3.

BIOS(BasicInputOutputSystem)

PastikanpengaturanpadaBIOSmemungkinkansistemoperasiuntukmenggunanakanIntelVT-x.PastikanduapengaturandibawahinienabledpadaBIOS.

IntelVirtualisationTechnologyVT-xIntelExecuteDisableBit

KebanyakanpengaturanBIOSpadakomputerterkinitelahmembuatduapengaturandiatasmenjadienabled.NamuntidakadasalahnyamemastikanbahwaBIOSsudahdiatiragartizenemulatordapatberjalandenganbaik.

Microsoft®Hyper-V

TizenemulatortidakdapatberjalanbersamaandenganMicrosoftHyper-VyangdigunakanuntukmenjalankanWindowsPhoneEmulator.UntukmenjalankanTizenEmulator,pastikanMicrosoftHyper-Vdalamkondisioff/disable.UntukmematikanMicrosoftHyper-V,bukaControlPanel>Programs>TurnWindowsfeaturesonoroff>Disable(uncheck)Hyper-V>OK.

PanduanDasarPemrogramanTizen

16PersiapanInstalasi

Page 17: Panduan Dasar Pemrograman Tizen

Tunggubeberapasaathinggawindowsmemintauntukrestartkomputer.KliktomblokRestartnowuntukmenghidupkanulangkomputer.

Intel®HardwareAcceleratedExecutionManager(HAXM)

PanduanDasarPemrogramanTizen

17PersiapanInstalasi

Page 18: Panduan Dasar Pemrograman Tizen

IntelHardwareAcceleratedExecutionManager(Intel®HAXM)adalahmesinvirtualisasiyangmenggunakanIntelVirtualizationTechnology(VT)untukoptimisasiprosesemulasiTizenpadakomputerdengansistemoperasiWindows®atauMacOS®.DengankombinasiTizenEmulatordanTizenSDK,Intel®HAXMmempercepatkinerjaTizenEmulator,dengankatalainTizenEmulatormenjadilebihlancar/smooth.

Intel®HAXMversi1.1.1secaradefaulttelahdiinstallbersamaandenganTizenSDK.NamunjikaTizenEmulatortidakberhasildijalankan,kitaharusinstalasiulangkembaliIntel®HAXM.

UntukinstalasiIntel®HAXM,

1. UnduhfileinstallerIntel®HAXMversi1.1.9padatautanhttp://download.tizen.org/sdk/haxm/1.1.9/win/intelhaxm-tizen.exe.

2. JalankanfileinstallerdanklikYespadadialogUserAccountControl(UAC)yang

muncul.

3. KarenaIntel®HAXMversi1.1.1secaradefaulttelahterinstalbersamaandenganTizenSDK,makaakanmunculdialogkonfirmasisepertidibawahini.KlikYesuntuk

melanjutkan.

PanduanDasarPemrogramanTizen

18PersiapanInstalasi

Page 19: Panduan Dasar Pemrograman Tizen

4. KliktombolNextuntukmemulaiprosesinstalasi

KitadapatmengaksesdokumentasidenganmenekantombolIntel®HAXMDocumentation.

5. Sesuaikanjumlahmemory(RAM)yangdialokasikanuntukIntel®HAXM.

FileinstallerjugaberfungsisebagaialatkonfigurasiuntukIntel®HAXM.Jikainginmengubahpengaturanalokasimemory(RAM)yangingindigunakan,jalankankembalifileinstaller.

PanduanDasarPemrogramanTizen

19PersiapanInstalasi

Page 20: Panduan Dasar Pemrograman Tizen

6. Konfirmasimemori(RAM)yangtelahdialokasikanuntukIntel®HAXMdankliktombol

Install.

7. TunggubeberapasaathinggaIntel®HAXMterinstaldengansmepurna.

PanduanDasarPemrogramanTizen

20PersiapanInstalasi

Page 21: Panduan Dasar Pemrograman Tizen

8. SaatprosesinstalasiIntel®HAXMselesai,kliktombolFinishuntukmenyelesaikandankeluardariprosesinstalasi.Intel®HAXMtelahberhasildiinstaldansiapuntuk

digunakan.

UntukmemastikanIntel®HAXMberjalandenganbaik,bukaCommandPromptpadawindowsdanmasukkanperintah:scqueryintelhaxm

JikaIntel®HAXMberjalandenganbaik,CommandPromptakanmenampilkanpesanstatusyangmengindikasikanstateadalah“4RUNNING”.

KebutuhanTambahan(Opsional)

PanduanDasarPemrogramanTizen

21PersiapanInstalasi

Page 22: Panduan Dasar Pemrograman Tizen

UntukmembantumengoptimisasiperformansidariaplikasiTizenyangdibuat,kitadapatmenggunakansuatuprofilingtoolbernamaT-trace.DenganT-tracepeningkatanperformansiaplikasitizendapatdilakukandenganlebihmudah.

UntukmenggunakanT-tracedisistemoperasiWindows®7/8/10,dibutuhkansuatuperangkatlunakbernamaPythondenganversi2.7.X.Padasaatbukuiniditulis,versiterkahirPythonadalahversi2.7.11.

UnduhPython2.7.11,kemudianjalankanfiledanikutiinstruksiyangditampilkan.

Catatan:AgarbisamenggunakanPythonsecaranyamandanmudahpadacommandprompt,kitaharusmembuatvariabel%PATH%padaenvironmentvariable.TambahkanvariabelbarutersebutmelaluiMyComputer>Properties>Advanced>EnvironmentVariables.

PanduanDasarPemrogramanTizen

22PersiapanInstalasi

Page 23: Panduan Dasar Pemrograman Tizen

InstalasiTizenSDKPadatopikini,kitaakanmembahasprosesinstalasiTizenSDK(SoftwareDevelopmentKit)padasistemoperasiWindows.TerdapatduacarauntukmenginstalasiTizenSDK,yaituGUIInstallerdanCLIInstaller.PadatopikiniakandibahasprosesinstalasidenganGUIInstalleryangmerupakanprosesinstalasipalingmudah.

UnduhSDKTizenSDKadalahseperangkatalatyangdigunakanuntukmembuatAplikasiTizenWebdnaTizenNative.TizenSDKterdiridariIDE(IntegratedDevelopmentEnvironment),Emulator,toolchain,contohkodeprogram,anddokumentasi.AplikasiTizendapatdibuattanpaharusbergantungpadaTizenIDE,selamaaplikasiTizenmengikutiaturanpadapackagingaplikasiTizen(TizenPackagingRules).Padasaatbukuinidibuat,versiterakhirTizenSDKadalah2.4Rev3.

UntukmengunduhTizenSDK,pilihfileGUIInstallerberdasarkantipesistemoperasi.

MicrosoftWindows

®NamaFile Link

32Bittizen-web-ide_TizenSDK_2.4.0_Rev3_windows-32.exe

http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev3/tizen-web-ide_TizenSDK_2.4.0_Rev3_windows-32.exe

64Bittizen-web-ide_TizenSDK_2.4.0_Rev3_windows-64.exe

http://download.tizen.org/sdk/Installer/tizen-sdk-2.4-rev3/tizen-web-ide_TizenSDK_2.4.0_Rev3_windows-64.exe

GUIInstallerSetelahberhasilmengunduhfileinstallerTizenSDK,instalasiTizenSDKdengancaradouble-clickpadaiconfileinstaller.

PanduanDasarPemrogramanTizen

23InstalasiTizen

Page 24: Panduan Dasar Pemrograman Tizen

InstalasiSetelahberhasilmengunduhTizenSDK,jalankanfileinstallerdengancaradouble-clickpadaicon/fileinstaller.

Setelahmenjalankanfileinstaller,makaakanmunculsecuritywarning.PilihYesuntukmelanjutkanprosesinstalasi.Setelahitufileinstallerakanmengekstraksibeberapakomponenfileuntukprosesinstalasi.

PanduanDasarPemrogramanTizen

24InstalasiTizen

Page 25: Panduan Dasar Pemrograman Tizen

Setelahfileinstallerselesaimengekstraksisemuakomponenyangdiperlukan,makakitaakanmendapatkanwindowpengaturaninstalasisepertidibawahini.

Padawindowpengaturaninstalasi,kitadapatmengaturlokasidirektoridimanaTizenSDKakanterinstalasi.Secaradefault,lokasiinstalasiTizenSDKuntuksistemoperasiwindowsadalahdiC:\tizen-sdk.

Pastikanlokasidirektoriyangdipilihadalahlokasidirektoriyangvalig.Jikadirektoritersebuttidakadaatautidakvalid,makafileinstallerakanmenampilkanbahwalokasidirektoritidakvalidsepertigambardibawahini.

Jikatelahselesaimengaturlokasiinstalasi,klikcheckboxAcceptuntukmenyetujuisyaratdanketentuan.Untukmemulaiinstalasi,kliktombolUnduh,tombolyangmemilikigambarpanahkebawahdikelilingiolehlingkaranberwarnabiru.

PanduanDasarPemrogramanTizen

25InstalasiTizen

Page 26: Panduan Dasar Pemrograman Tizen

Setelahmenekantombolunduh,tungguprosesinstalasisampaiselesai.Jikaprosesinstalasisudahselesaimakakitaakanmelihatadabeberapaprogrambaru,yaitu

No. Nama Fungsi

1 UpdateManager

PerangkatlunakuntukmengaturdanmengunduhSDKyangdiperlukan.

2 TizenWebSimulator

Tizensimulator,mensimulasikanperangkatTizenpadawebbrowseruntukmenjalankanTizenWebApps.

3 TizenIDE PerangkatlunakuntukmembuataplikasiTizen.

DenganmenekantombolQuit,TizenSDKtelahberhasildiinstaldansiapuntukdigunakan.

PanduanDasarPemrogramanTizen

26InstalasiTizen

Page 27: Panduan Dasar Pemrograman Tizen

KonfigurasiSetelahInstalasiTizenUntukmelengkapiprosesinstalasi,kitaharusmenjalankanUpdateManageruntukmengunduhSDKyangdiperlukan,terutamaTizenNativeSDK.KarenafileinstallerhanyamemberikankitaSDKTizenWeb.CaridanjalankanUpdateManager.SetelahUpdateManagerdijalankan,makakitaakanmendpaatkankotadialogsepertipadagambardibawahini.

UpdatemanagermemberikaninformasibeberapaTizenSDKyangbisadiunduhsebelummemulaiprosespembuatanaplikasi.Secaraumum,UpdateManagermemberikanTizenSDKuntukbeberapaperangkat,yaituSmartphone,SmartTVdanWearableDevice(SmartWatch).UnduhSDKyangdiinginkan,namunpastikankitamengunduhSDKterbaruuntuktiap-tiapperangkat.Pastikankomputerterhubungkeinternetsebelummemulaiinstalasi/unduhTizenSDK.

PanduanDasarPemrogramanTizen

27KonfigurasiSetelahInstalasiTizen

Page 28: Panduan Dasar Pemrograman Tizen

JikakitatidakmemilikikoneksiinternetyangbaikmengunduhTizenSDK,kitadapatmelakukaninstalasiSDKmelalumenusettingdipojokkananatas.

Setelahdiklik,kitaakanmendapatkotakdialogdibawahini.KlikbagianInstallOption,danpilihSDKImage.KemudianisidenganfileSDKImageyangtelahdiunduhsebelumnya.

PanduanDasarPemrogramanTizen

28KonfigurasiSetelahInstalasiTizen

Page 29: Panduan Dasar Pemrograman Tizen

PanduanDasarPemrogramanTizen

29KonfigurasiSetelahInstalasiTizen

Page 30: Panduan Dasar Pemrograman Tizen

MengenalTizenDevelopmentIDEUntukmembukaTizenIDE,cariaplikasipadaApplicationListataudenganmenekantombolstartpadakeyboarddanmasukankatakunciTizenIDE.SetelahmembukaTizenIDE,makakitaakanmendapatkansplashscreensepertipadagambardibawahini.

Padasaatawalkitaakanditanyakanlokasidirektoriuntukbekerja(workspace).Secaradefault,TizenIDEakanmemberikanlokasiawaluntukworkspace.Pilihlokasiworkspaceyangdiinginkan,danklikcheckbox'Usethisasthedefaultanddonotaskagain'agarTizenIDEtidakmenanyakankembaliworkspacesetiapkitamembukaTizenIDE.

KliktombolOKuntukmembukaTizenIDE.DanakhirnyakitamendapatkanTizenIDEsepertiyangterlihatpadagambardibawahini.

PanduanDasarPemrogramanTizen

30MengenalTizenDevelopmentIDE

Page 31: Panduan Dasar Pemrograman Tizen

Secaraumum,TizenIDEmiripdenganEclipse.Ya!karenaTizenIDEdikembangkandariEclipseIDE.PadasetiapawalmemulaiTizenIDE,kitaakandiberikanbeberapatipssepertigambardibawahini.

PanduanDasarPemrogramanTizen

31MengenalTizenDevelopmentIDE

Page 32: Panduan Dasar Pemrograman Tizen

PanduanDasarPemrogramanTizen

32MengenalTizenDevelopmentIDE

Page 33: Panduan Dasar Pemrograman Tizen

TizenEmulatorTidakperlumemilikiperangkatberbasisTizenuntukmengujiaplikasiTizenyangkitabuat.TizenEmulatormemungkingkankitamembuataplikasiTizendanmencobanyadengancepat.

EmulatoryangdisediakanolehTizenSDKmeniruenvironmentyangadapadaTizenDevice.DenganmenggunakanreplikasienvironmentpadaTizenEmulator,kitadapatmengujicobaaplikasiyangkitabuatsebelummendeployketargetdeviceTizenyangsesungguhnyasepertiSmartphone,Wearable(SmartWatch)danSmartTV.

UntukmembuatdanmenjalankanTizenEmulator,caridanbukaEmulatorManagerdariApplicationList.SetelahmembukaEmulatorManager,makakitaakanmendapatkanwindowsepertipadagambardibawahini.

MembuatSmartphoneTizenEmulatorUntukmembuatTizenEmulatoruntuksmartphone,pilihtabmobile,kemudiantekantombolCreateNewVM.

PanduanDasarPemrogramanTizen

33MengenalTizenEmulator

Page 34: Panduan Dasar Pemrograman Tizen

Lakukanpengaturanuntuktizenemulatoryangingindibuat.Berikutbeberapapengaturanyangperludilakukan.

Pengaturan NamaAtribut Rekomendasi

NamaEmulator Name

TizenEmulator24

Kitabebasmemberikannamauntukemulatoryangakandibuat.

VersiEmulator BaseImage 2.4-mobile

Resolusi Display>Resolution HD(720x1280)

JumlahProsesor Processor 4

UkuranMemory RAMSize 1024MB

PastikanpengaturanHWSupportuntukCPUVTdanGPUadalahON/Enable.

PanduanDasarPemrogramanTizen

34MengenalTizenEmulator

Page 35: Panduan Dasar Pemrograman Tizen

KliktombolConfirmuntukmenyimpankonfigurasidanmembuatemulatorbaru.Berikutgambarjikaberhasilmembuatemulatorbaru.

JikakitainginmengubahkonfogurasidariTizenEmulator,kliktomboleditpadapojokkananatas.

PanduanDasarPemrogramanTizen

35MengenalTizenEmulator

Page 36: Panduan Dasar Pemrograman Tizen

MenjalankanSmartphoneTizenEmulatorUntukmenjalankanTizenEmulator,kliktombolrunpadaemulatoryangtelahdibuat.

SecurityalertakanmunculsaatmencobamenjalankanTizenEmulatoruntukpertamakali.KliktombolAllowaccessuntukmenjalankanemulator.

PanduanDasarPemrogramanTizen

36MengenalTizenEmulator

Page 37: Panduan Dasar Pemrograman Tizen

Tunggubeberapasaat.TizenemulatorakanmenampilkansplashscreensaatsebagaipertandabahwaemulatorsedangmemuatresourceyangdibutuhkanuntukmenjalankanTizenOSpadaemulator.

BerikuttampilanlockscreenTizenOSyangberjalandiatasTizenEmulator.

PanduanDasarPemrogramanTizen

37MengenalTizenEmulator

Page 38: Panduan Dasar Pemrograman Tizen

GeserpadalayarTizenEmulatordenganmenggunakanMouseuntukmelihatisidariTizenOS.BerikutbeberapatampilandariTizenOS.

PanduanDasarPemrogramanTizen

38MengenalTizenEmulator

Page 39: Panduan Dasar Pemrograman Tizen

Layaknyasebuahsmartphone,TizenEmulatorinidilengkapidengantombolmenu,home,back,powerdanjugavolume.

PanduanDasarPemrogramanTizen

39MengenalTizenEmulator

Page 40: Panduan Dasar Pemrograman Tizen

HelloTizenSesiinimenjelaskanbagaimanacaramembuataplikasiTizensederhanayaituHelloWorld.TutorialinimembantukitamengenaliprosespembuatanaplikasiTizensecaraNative(TizenNativeApplication),menggunakanTizenSDKdaninstalasiaplikasiyangtelahdibuatpadaemulatorataupadaTizenDevice.

Saatkitamembuataplikasiyangrumit,kitadapatmenggunakantoolsyangtelahdisertakanpadaTizenSDKuntukmemudahkanprosespembuatanfitursertadesainantarmukaaplikasi(UserInterface).

Berikutlangkah-langkahyangdiperlukanuntukmembuataplikasiTizensederhana"HelloWorld".

MembuatProyekBaruUntukmembuatproyekbaru,jalankanaplikasiTizenIDE.

PadaTizenIDE,pilihmenuFile>New>Project...

PanduanDasarPemrogramanTizen

40HelloWorldTizen

Page 41: Panduan Dasar Pemrograman Tizen

PilihTizenNativeProjectsebagaitipeproyek.KemudiankliktombolNext.

PilihBasicUIsebagaitemplateproject.BerikannamauntukProjectnamedanPackagename.PilihmobilesebagaiProfile.Gunakanversi2.4sebagaiVersiondariaplikasiTizenyangakandibuat.KliktombolFinishuntukmengkonfirmasipembuatanproyekTizenbaru.

PanduanDasarPemrogramanTizen

41HelloWorldTizen

Page 42: Panduan Dasar Pemrograman Tizen

Apabilaprosespembuatanprojectbarusudahselesai,kitaakanmendapatkankodeprogramsesuaidengantemplateyangdipakai.

ProyekbaruHelloWorldtelahterlihatdiProjectExplorerpadaTizenIDE.Padaprojectexplorer,terdapatfilekonfigurasiprojectbernamatizen-manifest.xmldanbeberapafilekodeprogramlainnyaseperti:

PanduanDasarPemrogramanTizen

42HelloWorldTizen

Page 43: Panduan Dasar Pemrograman Tizen

folderinc:direktoriheaderfileuntukaplikasifoldersrc:direktoriCfileuntukimplementasikodeprogram

KonfigurasiAplikasiUntukkonfigurasiaplikasi,adaduahalyangbisadilakukan:

Mengubahprojectpropertiesdenganmemodifikasifiletizen-manifest.xml.Berikutmerupakanisidaritizen-manifest.xml.

Implementasikodeuntukaplikasipadahelloworld.c

SaatmembuatkodeprogramuntukaplikasiTizen,harapdiingatbahwaTizenAPImengikutibeberapaprinsipdasarberikutini:

Ownershipofreturnedstrings

Semuavariabeldengantipedatastringyangdi-returnsebagaipointerharusdihapusolehcallerkecualidibutuhkanolehbagianprogramlain.

Tidakmenghapusstringpadamemoridapatmenyebabkanmemoryleaks.Sistemmemoriyangtidakcukupdapatmemicunotifikasi'systemlowmemory',sebuahnotifikasiyangmemberikaninformasibahwamemoripadasistemtidakcukupuntuk

PanduanDasarPemrogramanTizen

43HelloWorldTizen

Page 44: Panduan Dasar Pemrograman Tizen

menjalankanoperasipadaaplikasi.SistemoperasiTizenmenggunakanalgoritmaheuristicuntukmemilihdanmenghentikanaplikasiyangmenggunakanbanyakmemorikarenapenggunaanmemoriyangbesardapatmenyebabkansistemoperasimenjaditidakstabil.

char*app_id_string=NULL;

if(!app_get_id(&app_id_string))

{

//Useapp_id_string

if(app_id_string!=NULL)

free(app_id_string);

}

Handle

Sebuahhandlemenyediakansaranauntukmengelolasebuahinstanceyangterasosiasidenganhandle.HandledigunakansangatbanyakpadaTizenNativeAPIuntukalasankompatibilitas.Pembuatan(creation)danpenghancuran(destruction)fungsidisediakanuntuksetiaptipehandle.Fungsitidakmembuatdanmenghancurkanhandledengansendirinya,tetapimengasosiasikanpadainstanceyangterasosiasidenganhandleyangdiberikan.Iniberarti,handletidakvalidsampaifungsiyangdibuattelahdipanggil.Accessorfungsi(getters/setters)jugadisediakanuntukmengaksesmembersvalriabledaristrukturtersembunyiyangdiidentifikasiolehhandleyangdiberikan.

//Textmessagedirepresentasikanolehhandle

messages_message_hsms_msg;

//Buatmessagedanasosiasikandenganhandle

messages_create_message(MESSAGES_TYPE_SMS,&sms_msg);

//hapusmessage

messages_destroy_message(sms_msg);

//Mengubahpropertidaritextmessage

messages_set_text(sms_msg,"Hello,howareyou?");

messages_add_address(sms_msg,"01020157919",MESSAGE_RECIPIENT_TO);

PemanggilanfungsiAsynchronous

BeberapafungsipadaTizenNativeAPIadalahasynchronous.Sebuahfungsiasynchronousmulaimengeksekusiprosesdanreturn/kembalisebelumprosesselesaidijalankan.Padakasusini,perludibuatsuatunotifikasikepadacallersaatfungsiasynchronoustelahmenyelesaikansemuaprosesnya.

PanduanDasarPemrogramanTizen

44HelloWorldTizen

Page 45: Panduan Dasar Pemrograman Tizen

Codeassist

TizenIDEmenyediakanfiturAPIassistdanAPIhoverfeaturesuntukmembuatkodeprogrampadaeditorsemakincepatdanefisien.

Saatmengubahkodeprogram,tekantombolCTRL+SPACEuntukmelihatketersediaanAPIyangdapatdigunakan.

MembuatUserInterfacedenganEFLEFLadalahsingkatandariEnlightenmentFoundationLibrary,kumpulantoolkitgrafisyangdigunakanuntukmembuataplikasiTizen.Berikutlangkah-langkahyangdilakukanuntukmembuatuserinterfaceuntukaplikasitizendenganmenggunakanEFL.

1. MenambahkanUserInterface

Untukmenambahkanuserinterfacekedalamaplikasi,perludiketahuicontainerdancomponentyangdiperlukan.Padatutorialiniadabeberapacontainerdancomponentyangdigunakan.

Sebuahwindowuntukmenyimpansemuacontainerdancomponentdiatasnya

PanduanDasarPemrogramanTizen

45HelloWorldTizen

Page 46: Panduan Dasar Pemrograman Tizen

Sebuahconformant,yangmenampilkankeyboardvirtualSebuahnaviframeuntukmenampilkanbeberapascreen/tampilandiatasnyabesertatransisiantarscreen/tampilan.Sebuahboxhorizontalyangberisisebuahlabeldenganbeberapabaristeksdansebuahbutton.

2. MenambahkanApplicationSkeletondenganAppcore

Sebuahpointeruntukobjekyangpenting,baikobjekcontrol(containerataucomponent)ataupunobjekdatadalamaplikasidisimpanpadastrukturdataberikut.

typedefstructappdata

{

Evas_Object*win;

Evas_Object*conform;

Evas_Object*naviframe;

}appdata_s;

Strukturdatadiatasdidesainsebagaipointeruntukmenyimpanalamatmemoriuntukobjek-objekyangakandigunakanpadaaplikasi.DaristrukturdatadiatasdapatdiketahuibahwasemuacontainerdancomponentpadaaplikasiTizenbertipeEvas_Object.

*win

Digunakanuntukmenyimpanalamatmemoridariobjekwindowyangdibuat

*conform

Digunakanuntukmenyimpanalamatmemoridariobjekconformantyangdibuat

*naviframe

Digunakanuntukmenyimpanalamatmemoridariobjeknaviframeyangdibuat

Pointeruntukstrukturdatadiatasdibuatdandiinisialisasihanyadengannilai0(nol)padafungsimain().Carayangsamajugadigunakanuntukmembuatdanmenginisialisasistrukturdatadengantipeapp_event_callback_s,yangmenyimpanfungsi-fungsicallbacksdaricoreaplikasi(app-core).

PanduanDasarPemrogramanTizen

46HelloWorldTizen

Page 47: Panduan Dasar Pemrograman Tizen

staticbool

app_create(void*data)

{

appdata_s*ad=data;

create_base_gui(ad);

returntrue;

}

int

main(intargc,char*argv[])

{

appdata_sad={0,};

intret=0;

ui_app_lifecycle_callback_sevent_callback={0,};

app_event_handler_hhandlers[5]={NULL,};

event_callback.create=app_create;

event_callback.terminate=app_terminate;

event_callback.pause=app_pause;

event_callback.resume=app_resume;

event_callback.app_control=app_control;

ui_app_add_event_handler(&handlers[APP_EVENT_LOW_BATTERY],APP_EVENT_LOW_BATTERY,ui_app_low_battery,&ad);

ui_app_add_event_handler(&handlers[APP_EVENT_LOW_MEMORY],APP_EVENT_LOW_MEMORY,ui_app_low_memory,&ad);

ui_app_add_event_handler(&handlers[APP_EVENT_DEVICE_ORIENTATION_CHANGED],APP_EVENT_DEVICE_ORIENTATION_CHANGED,ui_app_orient_changed,&ad);

ui_app_add_event_handler(&handlers[APP_EVENT_LANGUAGE_CHANGED],APP_EVENT_LANGUAGE_CHANGED,ui_app_lang_changed,&ad);

ui_app_add_event_handler(&handlers[APP_EVENT_REGION_FORMAT_CHANGED],APP_EVENT_REGION_FORMAT_CHANGED,ui_app_region_changed,&ad);

ret=ui_app_main(argc,argv,&event_callback,&ad);

if(ret!=APP_ERROR_NONE)

{

dlog_print(DLOG_ERROR,LOG_TAG,"app_main()isfailed.err=%d",ret);

}

returnret;

}

Catatan:

UntukinformasilainnyatentangAppcore,bukaHandlingtheApplicationFundamentalspadalinkhttps://developer.tizen.org/development/tutorials/native-application/application-framework/application#fundamentals.

3. MembuatobjekGUI

PanduanDasarPemrogramanTizen

47HelloWorldTizen

Page 48: Panduan Dasar Pemrograman Tizen

GUI(GraphicalUserInterface)dibuatpadafungsicreate_base_gui().Fungsitersebutmenerimasebuahpointerdengannamaaduntukdiisidenganobjek-objekdengantipeyangsesuaidengantipe-tipeyangtelahdideklarasikanpadastrukturdataappdata_s.

Buatfungsicreate_base_gui()sebagaifungsistatickarenafungsiinihanyadapatdicapaidariunitkompilasisaatini(yangmemungkinkancompileruntukmenghasilkanlebihcepatdanukurankodeprogramlebihkecil).

Didalamfungsicreate_base_gui(),buatobjekwindowdanbuat"HelloWorld"sebagainamadantitledariwindow.Tambahkansebuahcallbackpadaevent"delete,request".Callbackuntukevent"delete,request"iniakandieksekusisaatobjekwindowakanditutupolehsistem.

staticvoid

create_base_gui(appdata_s*ad)

{

//buatobjekwindow

//simpanobjekwindowyangdibuatkedalampointerad->win

ad->win=elm_win_util_standard_add(PACKAGE,PACKAGE);

elm_win_autodel_set(ad->win,EINA_TRUE);

//tambahkanjenisrotasiyangakandidukungpadaaplikasi

if(elm_win_wm_rotation_supported_get(ad->win))

{

introts[4]={0,90,180,270};

elm_win_wm_rotation_available_rotations_set(ad->win,(constint*)(&rots),4

}

//tambahkancallbackuntukevent"delete,request".

//callbackiniakandieksekusisaatsistemakanmenutupobjekwindow

evas_object_smart_callback_add(ad->win,"delete,request",win_delete_request_cb,

//tambahkancallbackuntukevent"backkey"

//callbackiniakandieksekusisaatusermenekantombol'back'

eext_object_event_callback_add(ad->win,EEXT_CALLBACK_BACK,win_back_cb,ad);

Selanjutnyakitaakanmembuatobjekconformantdanmeletakkannyadidalamobjekwindow.Mulaisaatini,baikcontainerdancomponentakandiletakkandidalamconformant.

PanduanDasarPemrogramanTizen

48HelloWorldTizen

Page 49: Panduan Dasar Pemrograman Tizen

//buatobjekconformant

//danjadikanwindowsebagaiparentdariconformant

//simpanobjectconformantyangdibuatkedalampointerad->conform

ad->conform=elm_conformant_add(ad->win);

//buatconformantagarbisamenampilkanphoneindicator

elm_win_indicator_mode_set(ad->win,ELM_WIN_INDICATOR_SHOW);

elm_win_indicator_opacity_set(ad->win,ELM_WIN_INDICATOR_OPAQUE);

//buatagarobjekconformantmenempatisemuaspaceyangadasecaraverticaldanhorizontal

evas_object_size_hint_weight_set(ad->conform,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

//buatconformantsebagairesizeobjectdariwindow

//ukuranconformantakanberubahbersamaandenganukuranwindow

elm_win_resize_object_add(ad->win,ad->conform);

//tampilkanobjekconformant

//karenasemuaUIcontainerdancomponentsecaradefaultadalahhidden/collapsed(tersembunyi)

evas_object_show(ad->conform);

Selanjutkankitaakanmenambahkanobjectnaviframekedalamconformant.Naviframeadalahcontainersangatbergunauntukaplikasiagardapatmenampilkanbeberapascreen/tampilansecarabergantian.Naviframememungkinkanuntukmenampilkansatuscreen,mengantikescreenlainnya,kembalimenampilakanlagiscreenpertama,danbisamelakukantransisidenganbeberapascreenlainnya.

Padatutorialini,hanyaakanadasatuscreenyangdibuat.Naviframeakandibuatdandiletakkandidalamconformant.

//buatobjeknaviframe,danjadikanconformantsebagaiparentdarinaviframe

ad->naviframe=elm_naviframe_add(ad->conform);

//jadikannaviframesebagaicontentdariconformant

elm_object_content_set(ad->conform,ad->naviframe);

//tampilkannaviframe

evas_object_show(ad->conform);

Selanjutnyakitaakanmenambahkancontainerbox,yangdapatmenampungcomponentataucontainerlainnyasecaraverticalmaupunhorizontal.BoxadalahcontaineryangserupadenganLinearLayoutpadaAndroiddanStackPanelpadaWindowsPhone.Padatutorialini,satucontainerboxakandiletakkandidalamnaviframe.

PanduanDasarPemrogramanTizen

49HelloWorldTizen

Page 50: Panduan Dasar Pemrograman Tizen

//buatobjekboxdanjadikannaviframesebagaiparentnya

Evas_Object*box=elm_box_add(ad->naviframe);

//setobjekboxagarmenampilanelementdidalamnyasecaravertical

elm_box_horizontal_set(box,EINA_FALSE);

//buatagarboxmerentangsaatcontentnyamembutuhkanlebihbanyakspace

evas_object_size_hint_weight_set(box,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

//buatboxagarmengisispaceyangadapadaparent

evas_object_size_hint_align_set(box,EVAS_HINT_FILL,EVAS_HINT_FILL);

//tambahkanboxsebagaicontainerpadanaviframe

elm_naviframe_item_push(ad->naviframe,"HelloWorld",NULL,NULL,box,NULL);

//tampilkanobjekbox

evas_object_show(box);

SelanjutnyakitaakanmenambahkansatuobjeklabelyangdapatmenampilkanteksdalambeberapabarisdenganformatmenggunakantagHTML.

//buatobjeklabeldanjadikanboxsebagaiparentdarilabel

Evas_Object*label=elm_label_add(box);

//SetteksuntuklabeldansetformatyangdigunakandengantagHTML:

//-teks"HelloWorld!"diletakkanditengahpadabarispertama

//-tambahkansatubariskosong(tag<br>)

//-Tambahkanteksyanglebihpanjangyangtidakcukupuntuksatubaris,

//teksakandiwrapkebarisberikutnya

elm_object_text_set(label,

"<align=center>HelloWorld!</align><br>"

"<br>"

"<wrap=word>Clickingonthebuttonbelowclosestheapplication.</wrap>"

//setagarlabeldapatmerentangsaat

//contentnyamembutuhkanlebihbanyakspace

evas_object_size_hint_weight_set(label,EVAS_HINT_EXPAND,

EVAS_HINT_EXPAND);

//setagarboxmengisispaceyangtersediapadahorizontalaxisdan

//terletakditengahsecaravertical(diletakkandi0.5secaravertical,

//ataudiletakkanditengahsecaravertical

evas_object_size_hint_align_set(label,EVAS_HINT_FILL,0.5);

//tambahkanlabelsebagaielementdaribox

elm_box_pack_end(box,label);

//tampilkanobjeklabel

evas_object_show(label);

PanduanDasarPemrogramanTizen

50HelloWorldTizen

Page 51: Panduan Dasar Pemrograman Tizen

UIcomponentterakhiryangakanditambahkanadalahButton.Buttoniniakanmembuatkeluardariaplikasisaatditekan.

//buatobjekbuttondanjadikanboxsebagaiparent

Evas_Object*button=elm_button_add(box);

//buttonakanmerentangsaatcontentnyamembutuhkanlebihbanyakspace

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,

EVAS_HINT_EXPAND);

//setagarbuttonmengisispaceyangtersediapadahorizontalaxisdan

//terletakdiakhirsecaravertical(1berartibuttondiletakkan

//diakhirboxsecaravertical,

//koordinatmulaipada(0,0)dipojokkiriatas

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,1);

//setteks'Close!'sebagaicontentdaributton

elm_object_text_set(button,"Close!");

//Tambahkansebuahcallbackpadabuttonuntukevent"clicked";

//fungsicallbackbernamaclicked_cb

evas_object_smart_callback_add(button,"clicked",clicked_cb,NULL);

//tambahkanbuttonsebagaielementdaribox;karenakoordinatdimulaidaripojokkiriatas,

//danboxadalahvertical,buttonakanberadadibawahlabel

elm_box_pack_end(box,button);

//tampilkanobjekbutton

evas_object_show(button);

Selanjutnyakitaakanmembuatwindowmenampilkansemuacontainerdancomponentdiatasnyapadascreen.

/*Tampilkanwindowsetelahsemuabaseguidibuat*/

evas_object_show(ad->win);

}

4. KeluardariAplikasi(GUI)

Fungsicallbackclicked_cb()harusdibuatagarkitabisamenghentikan/keluardariaplikasisaatbuttonditekan.Fungsicallbackuntukbuttondiberikanmelauiperintahevas_object_smart_callback_add().Letakkanfungsiclicked_cb()diatasfungsicreate_base_gui()karenabahasapemrogramanCtidakdapatmemanggilfungsiyangdideklarasikansetelah/dibawahfungsipemanggilnya.

PanduanDasarPemrogramanTizen

51HelloWorldTizen

Page 52: Panduan Dasar Pemrograman Tizen

PenjelasanlebihdetailtentangcallbacksdapatmelihathalamanEvasSmartObjectEventsguidepadalinkhttps://developer.tizen.org/development/ui-practices/native-application/efl/event-handling/event-types#evas_smart_object.

Berikutmerupakanimplementasidarifungsicallbackclicked_cb().

staticvoidclicked_cb(void*user_data,Evas_Object*obj,void*event_info)

{

//menghentikan/keluardariaplikasi

elm_exit();

}

BuildingandPackagingtheApplicationSetelahsemuakodeprogramuntukaplikasiselesaidiimplementasidansebelummenjalankanaplikasi,kitaharusmelakukankompilasipadakodeprojectkitadengancaraklikkananpadafolderprojectdiProjectExplorer,kemudianbuildproject.Tunggubeberapasaatdanpastikantidakadaerrorpadakodeprogramyangkitabuat.

MenjalankanAplikasiKitadapatmenjalankanaplikasiyangtelahkitabuatpadaemulatorataupunpadaTizenDevicesepertiSmartphone,Wearable(SmartWatch),ataupunSmartTV.

SigningApplication

PanduanDasarPemrogramanTizen

52HelloWorldTizen

Page 53: Panduan Dasar Pemrograman Tizen

Sebelumkitamenjalankanaplikasi,kitaharusmelakukansignpadaaplikasiyangkitabuatdenganmeng-generateauthorcertificatedanmendaftarkannyapadaTizenIDE.

JikakitatelahmemilikisertifikatyangteregistrasididalamTizenIDE,prosessignaplikasiakandilakukansecaraotomatissaatmenjalankanaplikasi.

BerikuttahapanmembuatsertifikatuntukaplikasiTizen.

1. BukapengaturanSecurityProfilesmelaluimenuWindow->Preferences>TizenSDK>SecurityProfiles.

PanduanDasarPemrogramanTizen

53HelloWorldTizen

Page 54: Panduan Dasar Pemrograman Tizen

2. KemudiankliktombolAdduntukmenambahkanprofile

3. MasukkanProfileName,kemudiankliktombolOK.

4. Setelahprofileselesaidibuat,klikGenerateuntukmembuatAuhtorCertificate.KemudianisisemuafieldyangdibutuhkanpadadialogCertificateGenerator.KemudiankliktombolOKuntukmembuatcertificate.

PanduanDasarPemrogramanTizen

54HelloWorldTizen

Page 55: Panduan Dasar Pemrograman Tizen

5. KlikYespadakotakdialogyangmuncul.

PanduanDasarPemrogramanTizen

55HelloWorldTizen

Page 56: Panduan Dasar Pemrograman Tizen

6. Prosespembuatanprofiledanauthorcertificatetelahselesai.KemudiankliktombolApplyuntukmenggunakannya.

7. KliktombolOKuntukmengaktifkansecurityprofiledanauthorcertificateyangtelahdibuat.Kemudianlakukancleanprojectdengancaraklikkananpadafolderutama

project.

PanduanDasarPemrogramanTizen

56HelloWorldTizen

Page 57: Panduan Dasar Pemrograman Tizen

8. Setelahcleanproject,makaprosespembuatandanpengaktifansecurityprofilesdanauthorcertificatetelahselesai.

MenjalankanAplikasipadaTizenEmulator

UntukmenjalankanaplikasipadaTizenEmulator,klikkananpadafolderutamaproject,kemudianpilihRunAs>TizenNativeApplication.

KemudiankotakdialoguntukTizenemulatorakanmuncul.Jikasudahpernahmembuattizenemulator,makapilihtizenemulatoryangpernahdibuat,laluklikLaunch.

PanduanDasarPemrogramanTizen

57HelloWorldTizen

Page 58: Panduan Dasar Pemrograman Tizen

KlikAllowaccessjikamunculFirewallException.

TunggubeberapasaathinggaTizenOSdimuatdalamemulatordanemulatorsiapuntukdigunakan.Berikuttampilandarikodeprogramyangtelahkitabuat.

PanduanDasarPemrogramanTizen

58HelloWorldTizen

Page 59: Panduan Dasar Pemrograman Tizen

JalankanProgramkeTizenDevice

Berikutmerupakanlangkah-langkahuntukmenjalankanAplikasiTizenpadaTizenDevice.

1. HubungkanSmartphoneTizenkekomputerdengankabelUSB.

PanduanDasarPemrogramanTizen

59HelloWorldTizen

Page 60: Panduan Dasar Pemrograman Tizen

2. SmartphoneTizenyangdihubungkankekomputerakanterdeteksipadaConnection

ExplorerdiTizenIDE. Padagambardiatas,SamsungZ1telahterdeteksiterhubungdengankomputer.

3. PilihSmartphoneTizenyangterhubungkekomputerpadaConnectionExplorer.

4. PadaProjectExplorer,klikkananpadafolderproject,danpilihRunAs>TizenNativeApplication.Sebagaialternatif,untukmenjalankanaplikasipadaSmartphoneTizen,tekantombolPlaypadatoolbaratautekanCtrl+F11padakeyboard.Tunggubeberapasaat,makaaplikasiakanberjalanpadaSmartphoneTizen.

PanduanDasarPemrogramanTizen

60HelloWorldTizen

Page 61: Panduan Dasar Pemrograman Tizen

DebuggingAplikasiBagipembacayangsudahpernahmemilikipengalamanmenggunakanIDEEclipsemakaprosesdebuggingpadaTizenIDEakanmemilikipengalamanyangsama.

PanduanDasarPemrogramanTizen

61HelloWorldTizen

Page 62: Panduan Dasar Pemrograman Tizen

Cukupklikkananpadakodeprogramyangakandianalisadannantiakankeluarmenu,pilihAddBreakPoint.

Kemudianakanadabulatanwarnabirudisampingkodeprogramyangakankitalakukandebugging.

PanduanDasarPemrogramanTizen

62HelloWorldTizen

Page 63: Panduan Dasar Pemrograman Tizen

SekarangkitamelakukandebuggingdengancaraklikkananpadafolderutamaprojectdanpilihmenuDebugAs>TizenNativeApplication-Attach.

CheckataucentangpadacheckboxRemembermydecision,kemudiankliktombolYes.

PanduanDasarPemrogramanTizen

63HelloWorldTizen

Page 64: Panduan Dasar Pemrograman Tizen

KemudianTizenDebuggerakanberjalan.

Prosesdebuggingakanberhentipadasetiapbreakpointyangtelahkitatentukan/buat.

PanduanDasarPemrogramanTizen

64HelloWorldTizen

Page 65: Panduan Dasar Pemrograman Tizen

Kliktombolikonmerah(stop)untukmengakhiriprosesdebugging.

KlikTizenNativepadabagiankananatasuntukkembalikemodecodeeditor.

Ok,cukupmudahbukanprosesdebuggingnya?

PanduanDasarPemrogramanTizen

65HelloWorldTizen

Page 66: Panduan Dasar Pemrograman Tizen

ProjectTizenPertamaku:KalkulatorSederhanaPadasesiinikitaakanmembuataplikasiTizensederhanayaitukalkulatordenganmenggunakanTizenNativeApplication.

TujuanTujuandaripembuatanprojectkalkulatorsederhanainiadalahuntukbelajarbagaimanamemanfaatkankomponen-kompunenUIstandardyangdisediakanolehTizenSDKsepertilabel,grid,buttondancomponentlainnya.

MembuatProyekBaruUntukmemulaimembuatkalkulator,buatprojectbarumelaluimenuFile->New->TizenNativeProject.PilihtemplateBasicUIpadakategoriMOBILE.Berinamaprojectdanpackagename,misalkanMyCalculator.

KliktombolFinishuntukmenyelesaikanpembuatanprojectbaru.

Setelahprosespemnbuatanprojectbaruselesai,akanadaduafileyaituheaderfiledenganekstensi.hdancfiledenganekstensi.c.DengannamaprojectMyCalculatormakaakandihasilkanfilemycalculator.hdanmycalculator.c.

PanduanDasarPemrogramanTizen

66ProyekTizenPertamaku

Page 67: Panduan Dasar Pemrograman Tizen

MembuatTampilan(UI)TizenPadapembuatanUIuntukaplikasikalkulator,kitaakanmenggunakanEFL(EnlightenmentFoundationLibrary)sebagaiNativeUIyangdisediakanolehTizenSDK.SemuakomponenuntukUIakandibuatpadafilemycalculator.c.

Berikutmerupakanhasilakhirdariaplikasikalkulatoryangakankitabuat.

BerikutmerupakanprosespembuatanaplikasiKalkulator.

MembuatProgramTizenBukafilemycalculator.c.Ubahstructappdatayangsemula.

PanduanDasarPemrogramanTizen

67ProyekTizenPertamaku

Page 68: Panduan Dasar Pemrograman Tizen

typedefstructappdata

{

Evas_Object*win;

Evas_Object*conform;

Evas_Object*label;

}appdata_s;

Menjadi.

typedefstructappdata

{

constchar*name;

Evas_Object*win;

Evas_Object*bg;

Evas_Object*conform;

Evas_Object*entry;

Evas_Object*basic_content;

Evas_Object*advanced_content;

}appdata_s;

SelanjutnyakitamembuatfungsiuntukmembuatbeberapakomponenUIsepertibeberapatombolpadakalkulatorsepertitombol0,1,2...9dantombol+,-,/sejenisnya.

staticEvas_Object*

create_bg(Evas_Object*parent)

{

Evas_Object*bg;

if(parent==NULL)returnNULL;

bg=elm_bg_add(parent);

evas_object_size_hint_weight_set(bg,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

elm_win_resize_object_add(parent,bg);

evas_object_show(bg);

returnbg;

}

staticEvas_Object*

create_conform(Evas_Object*parent)

{

Evas_Object*conform,*bg;

if(parent==NULL)returnNULL;

conform=elm_conformant_add(parent);

evas_object_size_hint_weight_set(conform,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

elm_win_resize_object_add(parent,conform);

PanduanDasarPemrogramanTizen

68ProyekTizenPertamaku

Page 69: Panduan Dasar Pemrograman Tizen

bg=elm_bg_add(conform);

elm_object_style_set(bg,"indicator/headerbg");

elm_object_part_content_set(conform,"elm.swallow.indicator_bg",bg);

evas_object_show(bg);

evas_object_show(conform);

returnconform;

}

staticvoid

rotation_cb(void*data,Evas_Object*obj,void*event_info)

{

appdata_s*ad=data;

intcurrent_degree=elm_win_rotation_get(obj);

if(current_degree!=0&&current_degree!=180){

elm_grid_pack_set(ad->basic_content,45,3,52,94);

elm_grid_pack_set(ad->advanced_content,3,3,36,94);

}else{

elm_grid_pack_set(ad->basic_content,3,3,94,94);

elm_grid_pack_set(ad->advanced_content,-100,-100,94,94);

}

}

staticvoid

clicked_0_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>0</font_size>");

}

staticvoid

clicked_1_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>1</font_size>");

}

staticvoid

clicked_2_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>2</font_size>");

}

staticvoid

clicked_3_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>3</font_size>");

}

staticvoid

PanduanDasarPemrogramanTizen

69ProyekTizenPertamaku

Page 70: Panduan Dasar Pemrograman Tizen

clicked_4_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>4</font_size>");

}

staticvoid

clicked_5_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>5</font_size>");

}

staticvoid

clicked_6_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>6</font_size>");

}

staticvoid

clicked_7_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>7</font_size>");

}

staticvoid

clicked_8_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>8</font_size>");

}

staticvoid

clicked_9_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>9</font_size>");

}

staticvoid

clicked_c_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_set(entry,"<align=right>");

}

staticvoid

clicked_divide_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>/</font_size>");

PanduanDasarPemrogramanTizen

70ProyekTizenPertamaku

Page 71: Panduan Dasar Pemrograman Tizen

}

staticvoid

clicked_multi_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>X</font_size>");

}

staticvoid

clicked_plus_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>+</font_size>");

}

staticvoid

clicked_minus_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>-</font_size>");

}

staticvoid

clicked_dot_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>.</font_size>");

}

staticEvas_Object*

create_panel_basic_content(Evas_Object*parent,appdata_s*ad)

{

Evas_Object*table,*button;

table=elm_table_add(parent);

elm_table_padding_set(table,10,10);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>C</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_c_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>/</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_divide_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,0,1,1);

PanduanDasarPemrogramanTizen

71ProyekTizenPertamaku

Page 72: Panduan Dasar Pemrograman Tizen

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>X</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_multi_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>Back</font_size>");

evas_object_show(button);

elm_table_pack(table,button,3,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>7</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_7_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>8</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_8_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>9</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_9_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>-</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_minus_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,3,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>4</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_4_cb,ad->entry);

PanduanDasarPemrogramanTizen

72ProyekTizenPertamaku

Page 73: Panduan Dasar Pemrograman Tizen

evas_object_show(button);

elm_table_pack(table,button,0,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>5</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_5_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>6</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_6_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>+</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_plus_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,3,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>1</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_1_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>2</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_2_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>3</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_3_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

PanduanDasarPemrogramanTizen

73ProyekTizenPertamaku

Page 74: Panduan Dasar Pemrograman Tizen

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>()</font_size>");

evas_object_show(button);

elm_table_pack(table,button,3,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>0</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_0_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>.</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_dot_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>+/-</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>=</font_size>");

evas_object_show(button);

elm_table_pack(table,button,3,4,1,1);

evas_object_show(table);

returntable;

}

staticEvas_Object*

create_panel_advanced_content(Evas_Object*parent,appdata_s*ad)

{

Evas_Object*table,*button;

table=elm_table_add(parent);

elm_table_padding_set(table,10,10);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>x!</font_size>");

evas_object_show(button);

PanduanDasarPemrogramanTizen

74ProyekTizenPertamaku

Page 75: Panduan Dasar Pemrograman Tizen

elm_table_pack(table,button,0,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>sqrt</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>%</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>sin</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>cos</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>tan</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>ln</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>log</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

PanduanDasarPemrogramanTizen

75ProyekTizenPertamaku

Page 76: Panduan Dasar Pemrograman Tizen

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>1/x</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>e^x</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>X^2</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>Y^x</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>|X|</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>PI</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>e</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,4,1,1);

evas_object_show(table);

returntable;

}

staticEvas_Object*

PanduanDasarPemrogramanTizen

76ProyekTizenPertamaku

Page 77: Panduan Dasar Pemrograman Tizen

create_panel(Evas_Object*parent,appdata_s*ad)

{

Evas_Object*panel,*grid;

/*Panel*/

panel=elm_panel_add(parent);

elm_panel_orient_set(panel,ELM_PANEL_ORIENT_BOTTOM);

evas_object_show(panel);

/*Grid*/

grid=elm_grid_add(panel);

evas_object_size_hint_weight_set(grid,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(grid,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_content_set(panel,grid);

/*Panelbasiccontent*/

ad->basic_content=create_panel_basic_content(grid,ad);

evas_object_size_hint_weight_set(ad->basic_content,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(ad->basic_content,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_grid_pack(grid,ad->basic_content,3,3,94,94);

/*Paneladvancedcontent*/

ad->advanced_content=create_panel_advanced_content(grid,ad);

evas_object_size_hint_weight_set(ad->advanced_content,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(ad->advanced_content,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_grid_pack(grid,ad->advanced_content,-100,-100,94,94);

returnpanel;

}

staticEvas_Object*

create_entry(Evas_Object*parent)

{

Evas_Object*entry;

entry=elm_entry_add(parent);

elm_entry_editable_set(entry,EINA_FALSE);

elm_entry_entry_set(entry,"<font_size=50><align=right></font_size>");

evas_object_show(entry);

returnentry;

}

Kemudianmodifikasicreate_base_gui()dantuliskodeprogramdibawahini.

PanduanDasarPemrogramanTizen

77ProyekTizenPertamaku

Page 78: Panduan Dasar Pemrograman Tizen

staticvoid

create_base_gui(appdata_s*ad)

{

Evas_Object*grid,*panel;

ad->win=elm_win_util_standard_add(PACKAGE,PACKAGE);

elm_win_autodel_set(ad->win,EINA_TRUE);

if(elm_win_wm_rotation_supported_get(ad->win)){

introts[4]={0,90,180,270};

elm_win_wm_rotation_available_rotations_set(ad->win,(constint*)(&rots),4);

}

evas_object_smart_callback_add(ad->win,"wm,rotation,changed",rotation_cb,ad);

evas_object_smart_callback_add(ad->win,"delete,request",win_delete_request_cb,NULL

eext_object_event_callback_add(ad->win,EEXT_CALLBACK_BACK,win_back_cb,ad);

ad->bg=create_bg(ad->win);

ad->conform=create_conform(ad->win);

elm_win_conformant_set(ad->win,EINA_TRUE);

elm_win_indicator_mode_set(ad->win,ELM_WIN_INDICATOR_SHOW);

elm_win_indicator_opacity_set(ad->win,ELM_WIN_INDICATOR_OPAQUE);

/*Grid*/

grid=elm_grid_add(ad->conform);

evas_object_size_hint_weight_set(grid,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(grid,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_content_set(ad->conform,grid);

/*Entry*/

ad->entry=create_entry(grid);

elm_grid_pack(grid,ad->entry,5,5,90,25);

/*Panel*/

panel=create_panel(grid,ad);

elm_grid_pack(grid,panel,0,35,100,65);

/*Showwindowafterbaseguiissetup*/

evas_object_show(ad->win);

}

Simpan(save)semuakodeprogramyangtelahditulisdenganmenekanCtrl+spadakeyboard.

MenjalankanProgramTizenkeEmulator

PanduanDasarPemrogramanTizen

78ProyekTizenPertamaku

Page 79: Panduan Dasar Pemrograman Tizen

Untukmemastikankodeprogramyangditulissudahbenardantidakadakesalahanlakukankompilasipadaprojectyangdibuat.Untukmelakukankompilasi,klikkananpadarootfolderproject,kemudianpilihBuildProject.

HasilkompilasinyaakanterlihatpadaConsolediTizenIDE.

Jikatidakadaerror,klikRununtukmenjalankanaplikasi.Padakotakdialogyangmuncul,pilihemulatoryangakandigunakanuntukmenjalankanaplikasi,kemudiankliktombolLaunchuntukmenjalankanaplikasipadaemulatoryangdipilih.

PanduanDasarPemrogramanTizen

79ProyekTizenPertamaku

Page 80: Panduan Dasar Pemrograman Tizen

Tunggubeberapasaatuntukmenjalankanaplikasipadaemulator.BerikuttampilanaplikasiKalkulatoryangberjalanpadaemulator.

PanduanDasarPemrogramanTizen

80ProyekTizenPertamaku

Page 81: Panduan Dasar Pemrograman Tizen

Lakukanpengujiandenganmenekantombolyangadapadakalkulator.

PanduanDasarPemrogramanTizen

81ProyekTizenPertamaku

Page 82: Panduan Dasar Pemrograman Tizen

MenjalankanProgramTizenkeSmartphoneTizenBerikutmerupakanlangkah-langkahuntukmenjalankanAplikasiTizenpadaSmartphoneTizen.

1. HubungkanSmartphoneTizenkekomputerdengankabelUSB.

PanduanDasarPemrogramanTizen

82ProyekTizenPertamaku

Page 83: Panduan Dasar Pemrograman Tizen

2. SmartphoneTizenyangdihubungkankekomputerakanterdeteksipadaConnection

ExplorerdiTizenIDE. Padagambardiatas,SamsungZ1telahterdeteksiterhubungdengankomputer.

3. PilihSmartphoneTizenyangterhubungkekomputerpadaConnectionExplorer.

4. PadaProjectExplorer,klikkananpadafolderproject,danpilihRunAs>TizenNativeApplication.Sebagaialternatif,untukmenjalankanaplikasipadaSmartphoneTizen,tekantombolPlaypadatoolbaratautekanCtrl+F11padakeyboard.Tunggubeberapasaat,makaaplikasiakanberjalanpadaSmartphoneTizen.

PanduanDasarPemrogramanTizen

83ProyekTizenPertamaku

Page 84: Panduan Dasar Pemrograman Tizen

PanduanDasarPemrogramanTizen

84ProyekTizenPertamaku

Page 85: Panduan Dasar Pemrograman Tizen

PendahuluanPadasesiinikitaakanmelakukaninstalasidankonfigurasigunamembuataplikasiTizendiatasplatformUbuntu.DisinipenulisakanmenggunakanUbuntu14.04.4LTS64bitsebagaitestingnya.

PanduanDasarPemrogramanTizen

85PemrogramanTizenuntukPlatformLinux

Page 86: Panduan Dasar Pemrograman Tizen

PersiapanuntukInstalasiBerikutbeberapahalyangperludisiapkanuntukmembuatdanmenjalankanaplikasiTizenpadaplatformUbuntu.

PerangkatKerasBerikutmerupakanperngkatkerasyangdibutuhkanuntukmempersiapkanenvironmentpembuatanaplikasiTizen.

Komponen Minimum Rekomendasi

KecepatanProsesor 2GHz 3GHz

TipeProsesor IntelDual-Core IntelCorei5

Memori(RAM) 3GB 4GB

KapasitasDiskkosong 6GB 10GB

PerangkatLunak

SistemOperasi

UntukpenggunaOperatingSystemUbuntu,instalasiTizenSDK(SoftwareDevelopmentKit)dapatdilakukanmelaluiwebsiteresmiTizenDeveloperpadahttps://developer.tizen.org/development/tools/download.SDKinitelahmencakupIDE,Emulator,toolchain,samplecodedanjugadokumentasi.

Padahalamantersebut,pilihlahversiUbuntuyangsesuaidenganPCataulaptopanda.DisinitelahdisediakaninstalleruntukUbuntu32bitsdanjuga64bits.JikaAndatidakmengetahuiversibitUbuntuanda,andabisamengikutilangkah-langkahberikut:

BukaterminalandaKetikkanperintahUname-a,diikutidengankarakterenterJikamenggunakanUbuntu32bit,makaoutputdariinstruksiini=i686GNU/LinuxJikamenggunakanUbuntu64bit,makaoutputdariinstruksiini=x8664GNU/Linux

AdapunTizenSDKyangdibahaspadabukuinimerupakanTizen2.4Rev3SDKyangmerupakanSDKversiterbaruuntukbulanFebruari2016.PadatampilanwebsiteTizentersebut,fileutamayangperludi-downloadadalahinstallerIDE(IntegratedDevelopment

PanduanDasarPemrogramanTizen

86PersiapanInstalasi

Page 87: Panduan Dasar Pemrograman Tizen

Environment).Agarprosesdownloadbisaberjalanlebihcepat,AndabisamemilihmirroruntuknegaraChina.

JavaRuntimeEnvironment(JRE)padaUbuntu

SebelummelakukaninstalasiSDK,perluandaketahuibahwaTizenSDKinimembutuhkanJavaRuntimeEnvironment(JRE)agarbisadijalankanpadaPC/laptopanda.Olehkarenaitu,andaharusmemastikanperangkatandatelahdilengkapiolehJRE.Inidapatdilakukandenganmudahdenganmengetikkanperintahjavapadaterminalanda.LaptopyangtelahterinstallJREakanmenampilkanoutputsepertigambardibawah.Sebaliknya,jikaperintahinitidakdikenal,terminalakanmenuliskan“Nocommand‘java’found”.

InstalasiJREbisadilakukandenganmengikutilangkah-langkahberikut:

PanduanDasarPemrogramanTizen

87PersiapanInstalasi

Page 88: Panduan Dasar Pemrograman Tizen

1. DownloadinstallerJREpadawebsiteOracleJRE7denganlinksebagaiberikut:http://www.oracle.com/technetwork/java/javase/downloads/jre7-downloads-1880261.html

2. PilihinstalleryangsesuaidenganversiUbuntuanda.i. Linuxx86untukUbuntu32bitii. Linuxx64untukUbuntu64bit

3. Andabisamemilihsalahsatudariduatipefileyangdisediakan(rpmatautar.gz).Padabukuinikamimenggunakanfiletar.gzuntukLinuxx64(jre-7u79-linux-x64.tar.gz)

4. Setelahselesaimelakukandownload,bukakembaliterminalandadanketikkanperintah-perintahberikutpadalokasifileyangsamadenganinstalleranda

Untukmengekstrakfileinstallertar-xvfjre-7u79-linux-x64.tar.gz

BuatlahsebuahdirektorikhususuntukJavadanpindahkanfileJREkedalamnyasudomkdir-p/usr/lib/jvm/jre1.7.0

sudomvjre1.70_79/*/usr/lib/jvm/jre1.7.0/

Install/updatejavasudoupdate-alternatives--install/usr/bin/javajava

/usr/lib/jvm/jre1.7.0/bin/java0

Installdependenciessudoapt-getinstallexpect

sudoapt-getinstallgtk2-engines-pixbuf

sudoapt-getinstalllibgnome2-0

sudoapt-getinstallqemu-user-static

sudoapt-getinstalllibwebkitgtk-1.0-0

sudoapt-getinstallgettext

sudoapt-getinstallgksudo

sudoapt-getinstallmodule-init-tools

sudoapt-getinstalllibudev-dev

PanduanDasarPemrogramanTizen

88PersiapanInstalasi

Page 89: Panduan Dasar Pemrograman Tizen

InstalasiTizenPadatahapini,andatelahsiapuntukmenginstallTizenSDK.Padaterminalanda,ketikanperintahberikut

chmod+xtizen-web-ide_TizenSDK_2.4.0_Rev3_singapore_ubuntu-64.bin

./tizen-web-ide_TizenSDK_2.4.0_Rev3_singapore_ubuntu-64.bin

PastikanandaberadapadadirektoridimanaandamenyimpaninstallerTizenSDK.Outputdaricommandlinetersebutakanmemberikantampilansebagaiberikut:

Untuklangkahpertama,pilihAcceptsebagaitandapersetujuanandaterhadapSoftwareLicense.Kemudianpilihbuttonlingkaranbiru,untukmemulaiprosesinstalasi.Tahapanpenginstalanakanberlangsungdengancepat.Jikaprosesinitelahselesai,pilihlahbuttonDone,danuntukselanjutnyaakanmuncultampilansebagaiberikut:

PanduanDasarPemrogramanTizen

89InstalasiTizen

Page 90: Panduan Dasar Pemrograman Tizen

WindowyangmunculmerupakanpertanyaanseputarUpdateManager.PilihYes,karenapadatahapinikitaakanmelakukankonfigurasiinstalasilibrary-libraryyangdibutuhkan

PanduanDasarPemrogramanTizen

90InstalasiTizen

Page 91: Panduan Dasar Pemrograman Tizen

KonfigurasiSetelahInstalasiTizen

Padabagianini,kitaakanmelakukaninstalldanupdateterhadapTizen-SDKkitamenggunakanTizenUpdateManager.Pilihcontinueuntukmelanjutkanprosesinstalasi,sehinggakomputerandamemberikantampilansebagaiberikut:

Jikaandatidakmemilikisdk-image,andabisamelakukaninstalasidenganmemilihpackageinstalasiyangandabutuhkansesuaidengangambardiatas.DisarankanandamemilihbuttoninstalluntukpackageSDKterbaru,seperti2.4Mobiledan2.31.Wearable.

BagiandayangmemilikiSDKimage,prosesinstalasibisadilakukandengancaramembukamenukonfigurasipadawindowTizenUpdateManagerpadapojokkananatas.

PanduanDasarPemrogramanTizen

91KonfigurasiSetelahInstalasiTizen

Page 92: Panduan Dasar Pemrograman Tizen

Kemudian,gantiInstalloptiondengan“SDKImage”danpilihlahfileisoyangandamilikiuntukmelanjutkanprosesinstalasi.Pilihbuttonconfirmuntukmemulaiinstalasi.

PanduanDasarPemrogramanTizen

92KonfigurasiSetelahInstalasiTizen

Page 93: Panduan Dasar Pemrograman Tizen

MengenalTizenDevelopmentIDEPadatahapiniandatelahberhasilmelakukaninstalasiTizenSDK.

Programyangtelahterinstaldapatdilihatpadafolderhome/tizen-sdk/ide.AndabisamenjalankanTizenIDEdenganmemilihiconeclipsepadafiletersebut.Opsikedua,andajugabisamenjalankanaplikasidenganmencarinyapadamenusearchUbuntu,denganmengetikkankata“tizen”.Semuaaplikasitizenyangtelahterinstallakandimunculkan,seperti,IDE,WebSimulator,Emulator,UpdateManagerdanDynamicAnalyzer.

PanduanDasarPemrogramanTizen

93MengenalTizenDevelopmentIDE

Page 94: Panduan Dasar Pemrograman Tizen

Untuktahappertamaandadimintauntukmelakukankonfigurasialamatworkspace.Jikaandaberkenanuntukmenyimpanprojectpadadirektoridefaultsepertiyangditampilkan,pilihOK.Namun,jikatidak,pilihBrowsedanatursedemikianlokasiworkspaceyangandainginkan.

Makaakanmuncultampilanwindowsebagaiberikut:

PanduanDasarPemrogramanTizen

94MengenalTizenDevelopmentIDE

Page 95: Panduan Dasar Pemrograman Tizen

PanduanDasarPemrogramanTizen

95MengenalTizenDevelopmentIDE

Page 96: Panduan Dasar Pemrograman Tizen

TizenEmulatorTizenSDKtelahdilengkapidenganemulatorsehinggamemungkinkankitauntukbisamelakukansimulasiprogramtanpaharusmemilikideviceSamsungdenganOSTizen.KonfigurasiemulatorTizenDevicebisadilakukandengancaramenjalankanEmulatorManageryangtelahter-instalseiringdenganinstalasiTizenSDK.

Untukmempermudahpencarian,padamenusearchaplikasiyangadapadaUbuntuanda,ketik“Emulatormanager”,sepertigambarberikut:

PilihiconEmulatorManagertersebut,yangselanjutnyaakanmemberikantampilansebagaiberikut:

PanduanDasarPemrogramanTizen

96MengenalTizenEmulator

Page 97: Panduan Dasar Pemrograman Tizen

UntukmembuatEmulator/VirtualMachine(VM)baru,pilihbutton“CreateNew”yangadapadawindowdiatas,sehinggamemberikantampilansebagaiberikut:

AndabisamelakukankonfigurasisepertiName,Display,Processor,danRAMsesuaidengankebutuhandevelopment.Jikatelahsesuaidengankonfigurasiyangdiinginkanpilihconfirm

PanduanDasarPemrogramanTizen

97MengenalTizenEmulator

Page 98: Panduan Dasar Pemrograman Tizen

Untukmenjalankanemulator,klikbuttonpanahyangberadapadaicontizen-01diatas.SecaraotomatisemulatormanagerakanmenampilkanVMdarideviceyangtelahandasettingsebelumnyasepertigambardibawahini:

Layaknyasebuahsmartphone,emulatorTizeninidilengkapidenganbuttonmenu,home,back,powerdanjugavolume.

PanduanDasarPemrogramanTizen

98MengenalTizenEmulator

Page 99: Panduan Dasar Pemrograman Tizen

HelloTizenPadabagianiniakandijelaskanprosedursederhanauntukmembuatsebuahprogram“Helloworld”padaTizenSDK.

MembuatProyekBaruUntuklangkahpertama,bukaTizenIDEanda,danbuatlahprojectbarudengannama“HelloWorld”.InidilakukandenganmemilihmenuFile->New->Project.Kemudianpadawindow“NewProject”,pilihlahTizenNativeProject.

Padawindowberikutnya,andabisamenemukanbeberapatemplateyangtelahdipersiapkanolehTizenIDE.Untuktahapini,marikitagunakantemplateprojectyangpalingsederhana,yaituBasicUIApplication.Untukprojectawalkaliini,gantinamaprojectmenjadi“HelloWorld”,kemudianklikbuttonFinish.

PanduanDasarPemrogramanTizen

99HelloWorldTizen

Page 100: Panduan Dasar Pemrograman Tizen

TizenIDEandaakanmemberikantampilansebagaiberikut:

PanduanDasarPemrogramanTizen

100HelloWorldTizen

Page 101: Panduan Dasar Pemrograman Tizen

Projectbaruyangbarusajaandabentuk,dapatdilihatpadatabProjectExplorerdenganbeberapafolderdefault,diantaranya:

inc,merupakanfolderuntukdefaultincludepathlib,merupakanfolderuntukexternallibraryfilesres,merupakanfolderuntukresourcesfilesshared,merupakanfolderresourcefilesyangbisadi-sharedenganaplikasilainnya.src,merupakanfolderutamayangberisikankodeaplikasitizen-manifest.xml,merupakanmanifestfiledariaplikasianda.

MembuatProgramJikaandainginmelakukankonfigurasiterhadapinformasiumumaplikasianda,andabisamelakukannyadenganmemilihtizen-manifest.xmlyangadapadaProjectExplorer.TizenIDEakanmemberikantampilansebagaiberikut:

PanduanDasarPemrogramanTizen

101HelloWorldTizen

Page 102: Panduan Dasar Pemrograman Tizen

Andabisamelakukankonfigurasiterhadappropertiaplikasidenganmemanfaatkantabyangberadadibawahmanifesteditor

Overview:Digunakanuntukmendefinisikaninformasiumum,seperti,applicationpackage,version,author,dandeskripsiFeatures:Digunakanuntukmendefinisikanfitursoftwaredanhardwareyangharusdimilikiagaraplikasibisadijalankandenganbaik.Privileges:DigunakanuntukmengaturprivilegesLocalization:Digunakanuntukmengatursupportedlocales,sepertilabel,deskripsi,danicon.Advanced:Digunakanuntukmendefinisikanadvancedfeaturedariaplikasi,sepertimetadata,datacontrol,applicationcontrolfunctionalities,account,danmiscellaneousoption.tizen-manifest.xml:Digunakanuntukmelakukankonfigurasimanualpadafiexml.

MenjalankanProgramSebelumkitamempelajaripotongankodedariaplikasikita,marikitajalankanaplikasikitadenganmemilihbuttonRun.

PanduanDasarPemrogramanTizen

102HelloWorldTizen

Page 103: Panduan Dasar Pemrograman Tizen

BagiandayangbarupertamakalimenjalankanaplikasidiTizenIDE,andaakanmendapatipesanwarninguntukmelakukanprosesSigningsepertidibawahini:

Olehkarenaitu,aturlahkonfigurasiSigningandaterlebihdahuludenganpertama-tamamengklikPreferences>TizenSDK>SecurityPoliciesyangtertulispadawindowdiatas.Sehinggamemberikantampilanberikut:

Pertama,pilihbuttonAdd,sehinggamemunculkanwindow“ProfileName”.IsikannamaprofileyangandainginkandankemudianpilihOK.Langkahselanjutnya,pilihbuttonGenerateuntukmendapatkanAuthorCertificate.Setelahmengisikandatayangdiminta,pilihOK.DanterakhirpilihApplydanOK.

JalankanProgramkeTizenEmulator

Jalankanprogramandasekalilagi,makaakanmunculpilihanemulatorsebagaiberikut:

PanduanDasarPemrogramanTizen

103HelloWorldTizen

Page 104: Panduan Dasar Pemrograman Tizen

Jikasebelumnyaandabelumpernahmembuatemulator,andabisamemilihbuttonEmulatorManagerdanmelakukankonfigurasiemulatorberdasarkanpenjelasansub-babsebelumini.Jikaandatelahmeilikiemulator,makajalankanaplikasidenganmemilihbuttonLaunch.TizenSDKsecaraotomatisakanmenjalankanaplikasiandapadaemulatoryangtelahandapilih.

JalankanProgramkePeralatanTizen

UntukmenjalankanaplikasihubungkandeviceTizenandaterlebihdahuludengankomputermenggunakankabelUSB.KemudianjalankanprogramsepertibiasadenganmenekantombolrunningpadaIDE.Padapilihantargetrunning,deviceandaakanmunculsebagai

PanduanDasarPemrogramanTizen

104HelloWorldTizen

Page 105: Panduan Dasar Pemrograman Tizen

salahsatuopsi.Pilihdeviceanda,danpilihbuttonLaunch.

Penjelasantentangkodeprogram

KarenaTizenSDKdibangundenganbahasaCyangtidakmendukungkonsepOOPlayaknyajava,makakonsepstructdanpointerdiimplementasikanagarmempermudahketerbacaanprogram.

appdata_s

appdata_smerupakanobjectberupastructyangmenampungsemuakebutuhanakanEvas_Objectdariaplikasikita.AdatigaEvas_Objectyangdibutuhkanuntukmenampilkan“HelloTizen”padadeviceTizenkita,yaitu:win,conformdanlabel.

ui_app_lifecycle_callback_s

Sepertiyangdilihatpadapotongankodediatas,event_callbackmerupakanvariabledaritipedatastructbernamaui_app_lifecycle_callback_s.Structinimemilikibeberapaatributcallbackfunctionyangharusdiinisialiasiseperti:

create,fungsiyangakandipanggilketikaaplikasipertamakalidijalankanterminate,fungsiyangdijalankansekali,saataplikasiberhentidigunakanpause,fungsiyangdijalankansaataplikasitidakdigunakandalamwaktutertentudanmenjadiinvisibleterhadapuser

PanduanDasarPemrogramanTizen

105HelloWorldTizen

Page 106: Panduan Dasar Pemrograman Tizen

resume,fungsiyangdipanggilsetelahfasepauseyaitusaataplikasikembalidigunakan.app_control,fungsiyangdipanggilsaataplikasilainmengirimkanrequestuntukmenjalankanaplikasiini.

Padapotongankodediatas,setiapatributinidiinisialisasidenganfungsi-fungsiyangdidefinisikanpadahelloworld.c.Sebagaicontoh,atributecreatediinisialisasidenganfungsiapp_create.

Fungsiapp_createyangadapadagambardiatasbertujuanuntukmelakukaninisialisasiUIketikaaplikasibarusajadijalankan.Padagambardiatasterlihatbahwafungsiapp_creatememanggilfungsicreate_base_gui()yangberfungsisebagaikonfigurasiUIberupawindow,conformant,danlabel“HelloTizen”yangdimunculkanpadaaplikasiHelloWorldini.

PanduanDasarPemrogramanTizen

106HelloWorldTizen

Page 107: Panduan Dasar Pemrograman Tizen

Padafungsidiatas,parameterfungsiyangberupapointeryangmenunjukstructappdata_sdigunakanuntukmenginisialisasiwindowdanconformantdariaplikasiTizenkita.WindowmerupakanlayerpalingbawahdariaplikasiTizen.Untukmengisiwindowdenganelemen-elemenberupabutton,text,radiobuttondsb,diperlukansuatubaselayerbernamaconformant.

Sesuaidengankebutuhanaplikasipertamakitaini,elemenyangcukupditambahkandiatasbaselayeradalahlabel.Labelinibertuliskan<align=center>HelloTizen</align>yangkemudianditampilkansebagaicontentdiatasconformant.

app_event_handler_h

Variabelinidigunakansebagaieventhandleryangdigunakanuntukmenampungalamatfungsi-fungsihandleryangkitainginkan.Secaradefault,terdapat5eventyangdidefinisikanpadafungsimain,yaitu:

eventuntukmeng-handlekondisilowbatteryeventuntukmeng-handlekondisilowmemoryeventuntukmeng-handleperubahanorientasideviceeventuntukmeng-handleperubahanbahasa

PanduanDasarPemrogramanTizen

107HelloWorldTizen

Page 108: Panduan Dasar Pemrograman Tizen

eventuntukmeng-handleperubahanformatregionatauzonawilayah

PanduanDasarPemrogramanTizen

108HelloWorldTizen

Page 109: Panduan Dasar Pemrograman Tizen

ProjectTizenPertamaku:KalkulatorSederhanaMenggunakanUIBuilderPadasub-babkaliini,kitaakanmembuatsebuahprogramkalkulatorsederhanadenganmemanfaatkanfiturWYSIWYG(WhatYouSeeisWhatYouGet)dariTizenSDK.MetodeWYSIWYGinimemungkinkankitauntukmembangunUItizensecaradrag-and-drop.

MembuatProyekBaruUntuklangkahpertama,marikitabuatprojectbarubernamakalkulator.Pertama,pilihMenu>New>Project>TizenNativeProjectdankemudianpilihbuttonNext.KemudianpilihtemplateUIBuilder-SingleViewyangdiperuntukkanuntukdeveloperyanginginmembangunaplikasidengansatutampilanview.GantinamaProjectandadengan“Kalkulator”dankemudianpilihFinish.

MembuatTampilan(UI)Tizen

PanduanDasarPemrogramanTizen

109ProyekTizenPertamaku

Page 110: Panduan Dasar Pemrograman Tizen

TampilanpertamadariIDEandaadalahwindowWYSIWYGdengansebuahfilebernamalayout.tuml.PadabagiankiriterdapatPaletteyangberisikanButton,DisplayUIComponent,InputUI,ItemContainer,UIComponentContainer,ViewContainer,danSnippets.

Tahap1-MendesainUserInterface

Perluandaketahui,bahwasebelummeletakkanberbagaiitemberupabutton,label,textviewdsb,diperlukansebuahobjectcontaineryangdigunakanuntukmenampungsemuaitem-itemini.PenjelasanterkaitcontaineryangdisediakanolehTizenSDK,bisaditemukanpadawebsitetizendevelopment,ataubukupanduankitapadaseriesberikutnya.

Untukmenyederhanakanprogramyangakankitabuat,marikitagunakanUIComponentComponentberupaGrid.ContainerGridinimemungkinkankitauntukmeletakkanberbagaiitempadasetiapzonascreenlayardevice.Langkah-langkahnya,PilihUIComponentContaineryangadapadatabPalette,kemudiandragdandropiconGridkelayardesign.Sebagaihasilnya,secaraotomatis,seluruhscreenlayarmenjadicontainerGrid.Memangtidakadaperubahanyangterlihat,tapipadatabOutlinedibagianbawah,bisadilihatbahwaViewlayoutkitamemilikianakberupacontainerGrid.

Untukmembuatkalkulatorsederhana,kitaakanmenggunakantigaitemutama,yaituButton,Label,danEntry

PanduanDasarPemrogramanTizen

110ProyekTizenPertamaku

Page 111: Panduan Dasar Pemrograman Tizen

KetikaandamelakukandragdandropuntuksetiapitemdariPalette,perhatikantabpropertiesyangadapadapojokkananIDE.UntuksetiapitemandabisamemodifikasiIDdariitem,textyangtertulis,style,dsbpadatabAttributesdariProperties.

Padatampilandiatas,adapunbutton,label,danEntryyangdigunakanmenggunakanIDdantextsebagaiberikut:

ID Text ID Text ID Text

Button1 1 Button7 7 ButtonKurang -

Button2 2 Button8 8 ButtonKali x

Button3 3 Button9 9 ButtonBagi /

Button4 4 Button0 0 ButtonSamaDengan =

Button5 5 EntryLayar 0 ButtonReset C

Button6 6 ButtonTambah + label1 KALKULATORSAYA

Tahap2-MengimplementasikanEventListener

Padatahapini,UserInterfaceyangandainginkantelahselesaidibangun.PadatahapkeduakitaakanmengimplementasikankodeprogramterkaitEventhandlerketikabuttondi-click.PadamekanismeWYSIWYGiniandabisamelakukannyadengancaramemanfaatkanTabEventyangadapadaTabProperties,sepertigambarberikut:

Untuksetiapbuttonyangdi-klik(clicked),kitaimplementasikaneventhandlernyadenganmemilihtanda+padatabProperties/Eventsesuaidengangambardiatasdandilanjutkandenganmemilihtanda→sehinggaIDEakanmenampilkanpotonganfungsiyangdapatdiisi

PanduanDasarPemrogramanTizen

111ProyekTizenPertamaku

Page 112: Panduan Dasar Pemrograman Tizen

sesuaidengankebutuhan.

Untuksetiapbuttonangkadari1,2,3,4,5,6,7,8,9,dan0bisadiimplementasikandenganpotongankodeberikut:

EntryLayarmerupakanIDdarilayarkalkulatorkita.Padafungsidiatas,ketikabuttonangka1diklikmakakitaakanmelakukanupdatekepadalayar.Lakukanhalserupauntukangka-angkalainnya.UntukButtonReset,aturlayarmenjadi0sepertipotongankodeberikut:

Andabisamenyesuaikanimplementasifungsisesuaidengankebutuhananda.Untukprogramkalkulatorsederhanaini,kitamenggunakanbeberapaglobalvariabelyangbisadiaksesdariberbagaifolderprogram.

PanduanDasarPemrogramanTizen

112ProyekTizenPertamaku

Page 113: Panduan Dasar Pemrograman Tizen

Globalvariabelinidideklarasikanpadasebuahheaderfile(disinikitameletakkannyadiapp_main.h).Adabeberapaglobalvariabelyangdigunakansepertiangka,numberIsClicked,operatorIsClicked,danlength.Variabelinidigunakanuntukmembantuprosesperhitungandanvalidasibuttonketikadiklikolehuser.

Nahmudahbukan?Lakukanpulahalyangserupauntukmengimplementasikanbuttonoperatortambah,kurang,bagi,kalidanjugasamadengan.Selamatberlatih:)

PanduanDasarPemrogramanTizen

113ProyekTizenPertamaku

Page 114: Panduan Dasar Pemrograman Tizen

PendahuluanPadasesiinikitaakanmelakukaninstalasidankonfigurasigunamembuataplikasiTizendiatasplatformMac.DisinipenulisakanmenggunakanMacOSXElCapitan(10.11.x)sebagaitestingnya.

PanduanDasarPemrogramanTizen

114PemrogramanTizenuntukPlatformMac

Page 115: Panduan Dasar Pemrograman Tizen

PersiapanuntukInstalasiSecaraumum,halyangperludisiapkandalammembangunlingkunganpengembanganTizensebagaiberikut:

Perangkatkeras:MesinMac,sebisamungkindenganspesifikasiyangmemangdirancanguntukdevelopmentKapasitasmemorysebaiknyaminimal4GBataulebihKetersediahardiskkuranglebih5GB

Perangkatlunak:JavaLegacyuntukMac.InidapatdiunduhdiwebsiteApple.Sebagaicontohinihttps://support.apple.com/kb/dl1572TizenSDK.Inidapatdiunduhdihttps://developer.tizen.org/development/tools/download.DirekomendasikanunduhSDKyangterbaruuntukMac

SebelummelakukaninstalasiSDKTizen,pastikanMacandasudahterinstallXcodeuntukmemastikansemuaprasyaratdevelopmentpadaMacterpenuhi.

Langkahselanjutnya,kitaakanmelakukaninstalasiSDKTizen.

PanduanDasarPemrogramanTizen

115PersiapanInstalasi

Page 116: Panduan Dasar Pemrograman Tizen

InstalasiTizenSetelahunduhfileSDKTizenuntukMacdihttps://developer.tizen.org/development/tools/download,andadapatmenjalankanfilesetup(*.dmg)sehinggaakanmendapatkankotakdialogsepertidibawahini

ProsesinstalasiinimemerlukankoneksiInternetuntukprosesupdatenya.Opsilain,andadapatunduhfileSDKImageterlebihdulu.

Padagambardiatas,klikfileinstallersehinggaandamendapatkankotakdialogsepertipadagambardibawahini.

Pilihlokasiinstalasinya.Jikasudah,klikcheckboxAccept.

PanduanDasarPemrogramanTizen

116InstalasiTizen

Page 117: Panduan Dasar Pemrograman Tizen

Untukmemulaiinstalasi,kliktombollingkanyangdidalamnyaadapanahkebawah.

ProsesinstalasicukuplamauntukandayangmemilikikoneksiInternetyangpelan.

Jikasudahselesaiprosesinstalasinya,andadapatmelihatmenuUpdateManager-x.ydimanax.yadalahversidariTizenUpdateManager.

Langkahselanjutnya,kitaharusmelakukankonfigurasiTizenSDKdanEmulatornya.

PanduanDasarPemrogramanTizen

117InstalasiTizen

Page 118: Panduan Dasar Pemrograman Tizen

KonfigurasiSetelahInstalasiTizenUntukmelengkapidevelopment,kitaharusmenjalankanUpdateManagersebagaibagianpostinstallation.TujuannyauntukinstalasiSDKTizenyangdidalamnyaadaDevelopmenttooldanEmulator.

KetikaUpdateManagerinidijalankan,kitaakanmendapatkankotakdialogsepertidibawahini.

PanduanDasarPemrogramanTizen

118KonfigurasiSetelahInstalasiTizen

Page 119: Panduan Dasar Pemrograman Tizen

PadatabAllPackages,installbagianyangingindiinstall.SebaiknyacentangbagianyangterbarumisalkanuntukMobileatauWearableataukeduanyajikakitainginmembuataplikasidengantargetMobiledanWearable.

ProsesiniakanmemerlukanwaktusesuaidengankecepatanInternetyangdimiliki.

JikapembacamelakukanunduhduluSDKimagesupayamemangkasprosesunduhdariinstalasimakakitabisakonfigurasibagiansettingnya.

Klikikonsettingsepertiyangditunjukkanpanahdigambardibawahini.

PanduanDasarPemrogramanTizen

119KonfigurasiSetelahInstalasiTizen

Page 120: Panduan Dasar Pemrograman Tizen

Setelahdiklik,kitaakanmendapatkotakdialogdibawahini.KlikbagianInstallOption,danpilihSDKImage.KemudianisidenganfileSDKImageyangtelahdiunduhsebelumnya.

PanduanDasarPemrogramanTizen

120KonfigurasiSetelahInstalasiTizen

Page 121: Panduan Dasar Pemrograman Tizen

Jikasudahprosesinstalasinya,andasudahsiapmembangunaaplikasiTizen.

PanduanDasarPemrogramanTizen

121KonfigurasiSetelahInstalasiTizen

Page 122: Panduan Dasar Pemrograman Tizen

MengenalTizenDevelopmentIDESetelahdiinstallsemuaSDKTizentermasukIDEnya,kitaakanmelihatmenuTizenIDEsepertiyangterlihatpadagambardibawahini.

KlikmenuTizenIDE-x.ypadamenuanda.

PanduanDasarPemrogramanTizen

122MengenalTizenDevelopmentIDE

Page 123: Panduan Dasar Pemrograman Tizen

Pertamakalikitaakanditanyakanfolderuntukworking.Pilihfolderkerjaanda.

Jikasudah,kliktombolOK.DanakhirnyakitamendapatkanTizenIDEsepertiyangterlihatpadagambardibawahini.

Secaraumum,TizenIDEmiripdenganEclipse.Ya!!,karenaTizenIDEdikembangkandariEclipseIDE.

PanduanDasarPemrogramanTizen

123MengenalTizenDevelopmentIDE

Page 124: Panduan Dasar Pemrograman Tizen

TizenEmulatorTidakperlumemilikiperangkatberbasisTizenuntukmengujiaplikasiTizenkitaberhasilatautidak.

TizenEmulatormemungkingkankitamembuataplikasiTizendengancepat.

DenganmengklikmenuEmulatorManager-x.ydimanax.yadalahversiaplikasi,kitaakanmendapatkanaplikasiTizenEmulatorManagersepertiyangterlihatpadagambardibawahini.

PanduanDasarPemrogramanTizen

124MengenalTizenEmulator

Page 125: Panduan Dasar Pemrograman Tizen

MembuatTizenEmulatorBaruKitadapatmembuatEmulatorbarumelaluiEmulatorManager.CukupklikCreateNewpadaformmenudepandibagiantabmobile.

Jikasudahdiklik,kitaakanmelihatpropertidariTizenEmulatorini.Contohtampilansepertiyangterlihatpadagambardibawahini.

PanduanDasarPemrogramanTizen

125MengenalTizenEmulator

Page 126: Panduan Dasar Pemrograman Tizen

IsinamaEmulatordanbeberapafiturlainnyasepertiresolusidanMemory.SesuaikandengankapasitasMacyangdimiliki.

Jikasudah,kliktombolConfirmuntukmenyimpannya.Contohhasilnyadapatdilihatpadagambardibawahini.

PanduanDasarPemrogramanTizen

126MengenalTizenEmulator

Page 127: Panduan Dasar Pemrograman Tizen

PanduanDasarPemrogramanTizen

127MengenalTizenEmulator

Page 128: Panduan Dasar Pemrograman Tizen

ApabilakitainginmengeditTizenEmulator,kitacukupklikikonEmulatordanklikikoneditsebelahkanansepertiyangterlihatpanahwarnamerahdigambardibawahini.

MenjalankanTizenEmulatorUntukmenjalankanTizenEmulator,kitadapatlangsungmengklikpanahdariEmulatoryangtelahdibuatsepertiyangterlihatpadagambardibawahini.

PanduanDasarPemrogramanTizen

128MengenalTizenEmulator

Page 129: Panduan Dasar Pemrograman Tizen

SelanjutnyakitaakanmelihatkotakdialogTizenEmulator.ButuhwaktuuntukmenampilkanisidariTizenOSini.

PanduanDasarPemrogramanTizen

129MengenalTizenEmulator

Page 130: Panduan Dasar Pemrograman Tizen

Contohhasilnyadapatdilihatpadagambardibawahini.

GeserpadalayarTizenEmulatordenganmenggunakanMouseuntukmelihatisidariTizenEmulatorini.ContohTizenSmartphoneEmulatoryangmenampilkanisibeberapaaplikasiTizen.

PanduanDasarPemrogramanTizen

130MengenalTizenEmulator

Page 131: Panduan Dasar Pemrograman Tizen

PanduanDasarPemrogramanTizen

131MengenalTizenEmulator

Page 132: Panduan Dasar Pemrograman Tizen

HelloTizenPadasesiinikitaakanmembuatapliaksisederhanayaitu"helloworld"yangmenampilkantulisanpadaaplikasiTizenMobile.

MembuatProyekBaruPadasesiinikitamenggunakanTizenIDEuntukmembuataplikasiTizendengantargetplatformMobile.

PadaTizenIDEklikmenuFile->New->Project.

Setelahdiklikmenunya,kitaakanmelihatkotakdialogpembuatanprojectbaru.PilihTizenNativeProjectpadakategoriTizen.Contohtampilannyasepertipadagambardibawahini.

PanduanDasarPemrogramanTizen

132HelloWorldTizen

Page 133: Panduan Dasar Pemrograman Tizen

KemudianakanmelihatbeberapatemplateprojectyangdisediakanolehTizen.Padakasusini,kitamemilihBasicUIyangberadapadakategoriMobile-x.ydimanax.yversidariSDKnya.

Berinamaprojectsesuaikeinginan,misalkanHelloTizen.Jikasudah,kliktombolFinish.

PanduanDasarPemrogramanTizen

133HelloWorldTizen

Page 134: Panduan Dasar Pemrograman Tizen

Apabilaprojectpembuatanprojectbarusudahselesai,kitaakanmendapatkankodeprogramsesuaidengantemplateyangdipakai.

PanduanDasarPemrogramanTizen

134HelloWorldTizen

Page 135: Panduan Dasar Pemrograman Tizen

MembuatProgramKalaukitaperhatikan,dengantemplateBasicUI,kitaakanmelihatduafile,misalkannamaprojectHelloTizen,yaituhellotizen.hdanhellotizen.c.

PanduanDasarPemrogramanTizen

135HelloWorldTizen

Page 136: Panduan Dasar Pemrograman Tizen

Kalaukitabukafilehellotizen.cdankitaperhatikanfunctioncreate_base_gui(),kitaakanmelihataplikasiiniakanmembuatGUIdanmemasukkansebuahobjeklabeldimanainidibuatdengancaramemanggilelm_label_add().

Kemudianpemberiannilaitextpadaobjeklabel,kitamenggunakanfungsielm_object_text_set().

PanduanDasarPemrogramanTizen

136HelloWorldTizen

Page 137: Panduan Dasar Pemrograman Tizen

Berikutinipotongankodeprogramnya.

PanduanDasarPemrogramanTizen

137HelloWorldTizen

Page 138: Panduan Dasar Pemrograman Tizen

staticvoid

create_base_gui(appdata_s*ad)

{

/*Window*/

/*Createandinitializeelm_win.

elm_winismandatorytomanipulatewindow.*/

ad->win=elm_win_util_standard_add(PACKAGE,PACKAGE);

elm_win_autodel_set(ad->win,EINA_TRUE);

if(elm_win_wm_rotation_supported_get(ad->win)){

introts[4]={0,90,180,270};

elm_win_wm_rotation_available_rotations_set(ad->win,(constint*)(&rots),4);

}

evas_object_smart_callback_add(ad->win,"delete,request",win_delete_request_cb,NULL

eext_object_event_callback_add(ad->win,EEXT_CALLBACK_BACK,win_back_cb,ad);

/*Conformant*/

/*Createandinitializeelm_conformant.

elm_conformantismandatoryforbaseguitohavepropersize

whenindicatororvirtualkeypadisvisible.*/

ad->conform=elm_conformant_add(ad->win);

elm_win_indicator_mode_set(ad->win,ELM_WIN_INDICATOR_SHOW);

elm_win_indicator_opacity_set(ad->win,ELM_WIN_INDICATOR_OPAQUE);

evas_object_size_hint_weight_set(ad->conform,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

elm_win_resize_object_add(ad->win,ad->conform);

evas_object_show(ad->conform);

/*Label*/

/*Createanactualviewofthebasegui.

Modifythisparttochangetheview.*/

ad->label=elm_label_add(ad->conform);

elm_object_text_set(ad->label,"<align=center>HelloTizen</align>");

evas_object_size_hint_weight_set(ad->label,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

elm_object_content_set(ad->conform,ad->label);

/*Showwindowafterbaseguiissetup*/

evas_object_show(ad->win);

}

Simpansemuakodeprogramnya.

MenjalankanProgramUntukmenjalankanaplikasi,kitamelakukankompilasiprojectkitadengancaramengklikkananprojectnyasehinggakitaakanmendapatkanmenu.PilihBuildProject.

PanduanDasarPemrogramanTizen

138HelloWorldTizen

Page 139: Panduan Dasar Pemrograman Tizen

JalankanProgramkeTizenEmulator

ApabilakitasudahmembuatTizenEmulator,kitadapatmenjalankandenganmengklikkananprojectdanpilihmenuRunAs.

PanduanDasarPemrogramanTizen

139HelloWorldTizen

Page 140: Panduan Dasar Pemrograman Tizen

KemudiankitakanmendapatkankotakdialogTizenEmulator.PilihEmulatornya.JikasudahkliktombolLaunch.

PanduanDasarPemrogramanTizen

140HelloWorldTizen

Page 141: Panduan Dasar Pemrograman Tizen

AplikasiTizenEmulatorakanrunning.

PanduanDasarPemrogramanTizen

141HelloWorldTizen

Page 142: Panduan Dasar Pemrograman Tizen

Jikatidakmunculaplikasinya,lakukanRunAslagisehinggakitaakanmendapatkanaplikasimunculsepertipadagambardibawahini.

PanduanDasarPemrogramanTizen

142HelloWorldTizen

Page 143: Panduan Dasar Pemrograman Tizen

JalankanProgramkePeralatanTizen

UntukmenjalankanaplikasikeTizen,kitahubungkanSmartphoneTizenkekomputerdankonfigurasikedevice.

Kemudianprosesrunningsepertibiasa.

DebuggingBagipembacayangsudahpernahmemilikipengalamanmenggunakanEclipsemakaprosesdebuggingpadaTizenIDEmemilikipengalamanyangsama.

Cukupklikkananpadakodeprogramyangakandianalisadannantiakankeluarmenu,pilihAddBreakPoint.

PanduanDasarPemrogramanTizen

143HelloWorldTizen

Page 144: Panduan Dasar Pemrograman Tizen

Jikasudah,kitaakanmelihatbulatanwarnabirudisampingkodeprogram.

PanduanDasarPemrogramanTizen

144HelloWorldTizen

Page 145: Panduan Dasar Pemrograman Tizen

SekarangkitamelakukandebuggingdengancaramengklikkananprojectnyadanpilihmenuDebugAs.

PanduanDasarPemrogramanTizen

145HelloWorldTizen

Page 146: Panduan Dasar Pemrograman Tizen

Prosessebuggingberjalan.UntuktracebisamenggunakanF5atauF6.

Nantiprosesiniakanmasukkebreakpointyangtelahkitatentukan.

PanduanDasarPemrogramanTizen

146HelloWorldTizen

Page 147: Panduan Dasar Pemrograman Tizen

Kliktombolikonmerahuntukmengakhiriprosesdebugging.

KlikTizenNativebagiankananatasuntukkembalikemodecodeeditorawalnya.

PanduanDasarPemrogramanTizen

147HelloWorldTizen

Page 148: Panduan Dasar Pemrograman Tizen

Ok,cukupmudahbukanprosesdebuggingnya?

PanduanDasarPemrogramanTizen

148HelloWorldTizen

Page 149: Panduan Dasar Pemrograman Tizen

ProjectTizenPertamaku:KalkulatorSederhanaPadasesiinikitaakanmembuataplikasisederhanayaitukalkulatordenganmenggunakanNativeApplication.

TujuanHalyangingindicapaidisiniadalahbagaimanakitamemanfaatkankomponenUIstandardyangdisediakanolehTizenSDKsepertilabel,grid,buttondansebagaimanya.

MembuatProyekBaruPertamakalikitamembuatprojectbarumelaluimenuFile->News->TizenNativeProject.PilihtemplateBasicUIpadakategoriMOBILE.isinamaproject,misalkanMyCalculator.

Jikasudah,kliktombolFinish.

Nantihasildariprojectinikitaakanddapatkanduafile.hdan.c.MisalkannamaprojectnyaadalahMyCalculatormakaakandihasilkanfilemycalculator.hdanmycalculator.c.

PanduanDasarPemrogramanTizen

149ProyekTizenPertamaku

Page 150: Panduan Dasar Pemrograman Tizen

MembuatTampilan(UI)TizenPadapembuatanUIuntukaplikasikitaakanmenggunakanNativeUIbawaandariTizenAPI.Tampilanaplikasiakandibuatpadafilemycalculator.c.

Tampilanyangakandibuatsepertiyangdilihatpadagambardibawahini.

Prosesnyaakandijelaskanpadasesiselanjutnya.

MembuatProgramTizenPertamakalikitamodifikasimycalculator.c.Padastructappdatakitamodifikasi.Asalkodeprogramsebagaiberikut.

typedefstructappdata{

Evas_Object*win;

Evas_Object*conform;

Evas_Object*label;

}appdata_s;

Diubahmenjadisebagaiberikut.

PanduanDasarPemrogramanTizen

150ProyekTizenPertamaku

Page 151: Panduan Dasar Pemrograman Tizen

typedefstructappdata{

constchar*name;

Evas_Object*win;

Evas_Object*bg;

Evas_Object*conform;

Evas_Object*entry;

Evas_Object*basic_content;

Evas_Object*advanced_content;

}appdata_s;

SelanjutnyakitamembuatfungsigunamenampilkanUIbeberapatombolkalkulatorsepertitombol0,1,2...9dantombol+,-,/sejenisnya.

staticEvas_Object*

create_bg(Evas_Object*parent)

{

Evas_Object*bg;

if(parent==NULL)returnNULL;

bg=elm_bg_add(parent);

evas_object_size_hint_weight_set(bg,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

elm_win_resize_object_add(parent,bg);

evas_object_show(bg);

returnbg;

}

staticEvas_Object*

create_conform(Evas_Object*parent)

{

Evas_Object*conform,*bg;

if(parent==NULL)returnNULL;

conform=elm_conformant_add(parent);

evas_object_size_hint_weight_set(conform,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

elm_win_resize_object_add(parent,conform);

bg=elm_bg_add(conform);

elm_object_style_set(bg,"indicator/headerbg");

elm_object_part_content_set(conform,"elm.swallow.indicator_bg",bg);

evas_object_show(bg);

evas_object_show(conform);

returnconform;

}

staticvoid

rotation_cb(void*data,Evas_Object*obj,void*event_info)

PanduanDasarPemrogramanTizen

151ProyekTizenPertamaku

Page 152: Panduan Dasar Pemrograman Tizen

{

appdata_s*ad=data;

intcurrent_degree=elm_win_rotation_get(obj);

if(current_degree!=0&&current_degree!=180){

elm_grid_pack_set(ad->basic_content,45,3,52,94);

elm_grid_pack_set(ad->advanced_content,3,3,36,94);

}else{

elm_grid_pack_set(ad->basic_content,3,3,94,94);

elm_grid_pack_set(ad->advanced_content,-100,-100,94,94);

}

}

staticvoid

clicked_0_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>0</font_size>");

}

staticvoid

clicked_1_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>1</font_size>");

}

staticvoid

clicked_2_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>2</font_size>");

}

staticvoid

clicked_3_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>3</font_size>");

}

staticvoid

clicked_4_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>4</font_size>");

}

staticvoid

clicked_5_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>5</font_size>");

PanduanDasarPemrogramanTizen

152ProyekTizenPertamaku

Page 153: Panduan Dasar Pemrograman Tizen

}

staticvoid

clicked_6_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>6</font_size>");

}

staticvoid

clicked_7_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>7</font_size>");

}

staticvoid

clicked_8_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>8</font_size>");

}

staticvoid

clicked_9_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>9</font_size>");

}

staticvoid

clicked_c_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_set(entry,"<align=right>");

}

staticvoid

clicked_divide_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>/</font_size>");

}

staticvoid

clicked_multi_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>X</font_size>");

}

staticvoid

clicked_plus_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

PanduanDasarPemrogramanTizen

153ProyekTizenPertamaku

Page 154: Panduan Dasar Pemrograman Tizen

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>+</font_size>");

}

staticvoid

clicked_minus_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>-</font_size>");

}

staticvoid

clicked_dot_cb(void*data,Evas_Object*objEINA_UNUSED,void*event_infoEINA_UNUSED)

{

Evas_Object*entry=data;

elm_entry_entry_append(entry,"<font_size=50>.</font_size>");

}

staticEvas_Object*

create_panel_basic_content(Evas_Object*parent,appdata_s*ad)

{

Evas_Object*table,*button;

table=elm_table_add(parent);

elm_table_padding_set(table,10,10);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>C</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_c_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>/</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_divide_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>X</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_multi_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

PanduanDasarPemrogramanTizen

154ProyekTizenPertamaku

Page 155: Panduan Dasar Pemrograman Tizen

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>Back</font_size>");

evas_object_show(button);

elm_table_pack(table,button,3,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>7</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_7_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>8</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_8_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>9</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_9_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>-</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_minus_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,3,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>4</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_4_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>5</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_5_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,2,1,1);

PanduanDasarPemrogramanTizen

155ProyekTizenPertamaku

Page 156: Panduan Dasar Pemrograman Tizen

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>6</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_6_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>+</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_plus_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,3,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>1</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_1_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,0,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>2</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_2_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>3</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_3_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,2,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>()</font_size>");

evas_object_show(button);

elm_table_pack(table,button,3,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>0</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_0_cb,ad->entry);

evas_object_show(button);

PanduanDasarPemrogramanTizen

156ProyekTizenPertamaku

Page 157: Panduan Dasar Pemrograman Tizen

elm_table_pack(table,button,0,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>.</font_size>");

evas_object_smart_callback_add(button,"clicked",clicked_dot_cb,ad->entry);

evas_object_show(button);

elm_table_pack(table,button,1,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>+/-</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>=</font_size>");

evas_object_show(button);

elm_table_pack(table,button,3,4,1,1);

evas_object_show(table);

returntable;

}

staticEvas_Object*

create_panel_advanced_content(Evas_Object*parent,appdata_s*ad)

{

Evas_Object*table,*button;

table=elm_table_add(parent);

elm_table_padding_set(table,10,10);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>x!</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>sqrt</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

PanduanDasarPemrogramanTizen

157ProyekTizenPertamaku

Page 158: Panduan Dasar Pemrograman Tizen

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>%</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,0,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>sin</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>cos</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>tan</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,1,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>ln</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>log</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>1/x</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,2,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>e^x</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,3,1,1);

PanduanDasarPemrogramanTizen

158ProyekTizenPertamaku

Page 159: Panduan Dasar Pemrograman Tizen

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>X^2</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>Y^x</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,3,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>|X|</font_size>");

evas_object_show(button);

elm_table_pack(table,button,0,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>PI</font_size>");

evas_object_show(button);

elm_table_pack(table,button,1,4,1,1);

button=elm_button_add(table);

evas_object_size_hint_weight_set(button,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(button,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_text_set(button,"<font_size=50>e</font_size>");

evas_object_show(button);

elm_table_pack(table,button,2,4,1,1);

evas_object_show(table);

returntable;

}

staticEvas_Object*

create_panel(Evas_Object*parent,appdata_s*ad)

{

Evas_Object*panel,*grid;

/*Panel*/

panel=elm_panel_add(parent);

elm_panel_orient_set(panel,ELM_PANEL_ORIENT_BOTTOM);

evas_object_show(panel);

/*Grid*/

grid=elm_grid_add(panel);

PanduanDasarPemrogramanTizen

159ProyekTizenPertamaku

Page 160: Panduan Dasar Pemrograman Tizen

evas_object_size_hint_weight_set(grid,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(grid,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_content_set(panel,grid);

/*Panelbasiccontent*/

ad->basic_content=create_panel_basic_content(grid,ad);

evas_object_size_hint_weight_set(ad->basic_content,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(ad->basic_content,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_grid_pack(grid,ad->basic_content,3,3,94,94);

/*Paneladvancedcontent*/

ad->advanced_content=create_panel_advanced_content(grid,ad);

evas_object_size_hint_weight_set(ad->advanced_content,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(ad->advanced_content,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_grid_pack(grid,ad->advanced_content,-100,-100,94,94);

returnpanel;

}

staticEvas_Object*

create_entry(Evas_Object*parent)

{

Evas_Object*entry;

entry=elm_entry_add(parent);

elm_entry_editable_set(entry,EINA_FALSE);

elm_entry_entry_set(entry,"<font_size=50><align=right></font_size>");

evas_object_show(entry);

returnentry;

}

Kemudiankitamodifikasifungsicreate_base_gui()dantuliskodeprogramdibawahini.

PanduanDasarPemrogramanTizen

160ProyekTizenPertamaku

Page 161: Panduan Dasar Pemrograman Tizen

staticvoid

create_base_gui(appdata_s*ad)

{

Evas_Object*grid,*panel;

ad->win=elm_win_util_standard_add(PACKAGE,PACKAGE);

elm_win_autodel_set(ad->win,EINA_TRUE);

if(elm_win_wm_rotation_supported_get(ad->win)){

introts[4]={0,90,180,270};

elm_win_wm_rotation_available_rotations_set(ad->win,(constint*)(&rots),4);

}

evas_object_smart_callback_add(ad->win,"wm,rotation,changed",rotation_cb,ad);

evas_object_smart_callback_add(ad->win,"delete,request",win_delete_request_cb,NULL

eext_object_event_callback_add(ad->win,EEXT_CALLBACK_BACK,win_back_cb,ad);

ad->bg=create_bg(ad->win);

ad->conform=create_conform(ad->win);

elm_win_conformant_set(ad->win,EINA_TRUE);

elm_win_indicator_mode_set(ad->win,ELM_WIN_INDICATOR_SHOW);

elm_win_indicator_opacity_set(ad->win,ELM_WIN_INDICATOR_OPAQUE);

/*Grid*/

grid=elm_grid_add(ad->conform);

evas_object_size_hint_weight_set(grid,EVAS_HINT_EXPAND,EVAS_HINT_EXPAND);

evas_object_size_hint_align_set(grid,EVAS_HINT_FILL,EVAS_HINT_FILL);

elm_object_content_set(ad->conform,grid);

/*Entry*/

ad->entry=create_entry(grid);

elm_grid_pack(grid,ad->entry,5,5,90,25);

/*Panel*/

panel=create_panel(grid,ad);

elm_grid_pack(grid,panel,0,35,100,65);

/*Showwindowafterbaseguiissetup*/

evas_object_show(ad->win);

}

Simpanprogramsemuanya.

MenjalankanProgramTizenkeEmulatorPertamakalidilakukanadalahmelakukankompilasiuntukmemastikantidakadaerrorpadaprogramkita.

PanduanDasarPemrogramanTizen

161ProyekTizenPertamaku

Page 162: Panduan Dasar Pemrograman Tizen

CukupklikkananpadaprojectkitadanpilihBuildProject.

Hasilkompilasinyabisadilihatdibagianbawahnya.

PanduanDasarPemrogramanTizen

162ProyekTizenPertamaku

Page 163: Panduan Dasar Pemrograman Tizen

KlikRununtukmenjalankanemulatorTizen.Danpilihemulatornya.

Jikasudah,kliktombolLaunchuntukmenjalankanemulatornya.

Tekantombolpadakalkulatorsehinggahasilnyaakanmunculdilayar.

PanduanDasarPemrogramanTizen

163ProyekTizenPertamaku

Page 164: Panduan Dasar Pemrograman Tizen

MenjalankanProgramTizenkeSmartphoneTizenUntukmenjalankankeTizensmartphone,kitacukuparahkanketargetperalatanyangsudahterhubung.

Jikasukses,kitaakanmelihataplikasinyamunculpadaTizensmartphonetersebut.

PanduanDasarPemrogramanTizen

164ProyekTizenPertamaku

Page 165: Panduan Dasar Pemrograman Tizen

ResourcesBerikutinibeberapasumberinformasiyangdapatdigunakandalampengembanganaplikasiTizen.

ForumTizen(English),https://developer.tizen.org/forumsKumpulanCodeSnippet,https://developer.tizen.org/community/code-snippetKumpulancontohprogram,https://developer.tizen.org/community/tizen-projectsArtikel(English),https://developer.tizen.org/community/tip-tech

PanduanDasarPemrogramanTizen

165Resouces

Page 166: Panduan Dasar Pemrograman Tizen

PenulisBerikutprofilepenulisdaribukuini.

Fajri

Fajri,S.Kom.M.Kom.lahirdiBukittinggipadatanggal3Oktober1991.IamenyelesaikanstudiSarjanadanMagisterpadaBidangIlmuKomputerdiUniversitasIndonesiadalamwaktu4,5tahundengankeduanyameraihpredikatCumlaude.SampaisaatiniFajrimerupakanseorangpeneliti,developerdanjugadatascientistdiSamsungResearchIndonesiayangaktifbergerakdibidangPerolehanInformasi,PengolahanBahasaManusia,PembelajaranMesindanjugaTizenOperatingSystem.Karya-karyailmiahnyabisadilihatpadajournalIEEE,SpringerdanjugaACM.

PanduanDasarPemrogramanTizen

166ProfilPenulis

Page 167: Panduan Dasar Pemrograman Tizen

Diselawaktunya,Fajrisenangbermainmusikdanbernyanyi(https://soundcloud.com/fajri91),berenang,membacanoveldanjugatraveling.Fajribisadihubungimelaluiakuntwitternya@FajriPhDatauwebpribadinyahttp://fajrikoto.com

GilangKusumaJati

GilangKusumaJati,S.T,M.Kom.LulussebagaiSarjanaTeknikInformatikadariInstitutTeknologiTelkomdanMagisterIlmuKomputerdariUniversitasIndonesia.GilangmemulaikarirnyasebagaiDosendiFakultasIlmuKomputerUniversitasIndonesiadenganmengajarbeberapamatakuliahPemrogramandanStrukturData.BidangketertarikannyaadalahEvolutionaryComputationdanMobileTechnology.Sejakkuliah,GilangaktifikutsertadanmemenangkanbeberapakompetisiITbaiknasionalmaupuninternasional.SaatiniGilangbekerjasebagaiLeadEngineerdiSamsungR&DInstituteIndonesia.Publikasiinternasional

PanduanDasarPemrogramanTizen

167ProfilPenulis

Page 168: Panduan Dasar Pemrograman Tizen

GilangdapatdilihatpadaIEEE,SpringerdanElsevier.AplikasimobilenyajugadapatdiunduhdiGooglePlayStoredanWindowsPhoneStore.Gilangdapatdihubungimelaluiwebsitepribadinyadihttp://gilangkusumajati.com

AgusKurniawan

AgusadalahpengajardanpenelitidiFakultasIlmuKomputer-UniversitasIndonesiadanSamsungR&DInstituteIndonesia.Diajugaseorangpenulisuntuktopikteknologikomputerdaninternet.BidangketertarikannyamengenaiSekuriti,JaringanKomputer,SoftwareEngineeringdanMachineLearning.

Diselawaktunya,diamengajakkeduaanaknyabermaindanmemilikihobbyuntuktravelling,kuliner,danfoto-fotoasalmemotret.

SaatiniAgussedangmenyelesaikankuliahS3,Doktoral,padajurusanComputerScience,FreieUniversitätBerlin,Germany.Diadapatdihubungimelaluiblogpribadinyadihttp://blog.aguskurniawan.net

PanduanDasarPemrogramanTizen

168ProfilPenulis