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
6.7
7
8
ProyekTizenPertamaku
Resouces
ProfilPenulis
PanduanDasarPemrogramanTizen
3
TizenmerupakanopensourceprojectuntuksistemoperasiyangberbasismodifikasiLinuxKerneldanWebKitruntime.DenganTizen,kitadapatmenjalankanaplikasidiatasSmartphone,WearableataupuncomplaisancedevicesyangmengusungOSTizen.
BukuPanduanDasarPemrogramanTizendibuatdenganmaksuddantujuanuntukmembantuparadeveloperpemulaataudeveloperyangsudahmemilikiketrampilanmemprogramaplikasimobilebaikituWindowsPhone,AndroidataupuniOSdalammembuataplikasimobilediatasplatformTizen.
PanduanDasarPemrogramanTizen
4Introduction
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
PendahuluanTizenmerupakanopensourceprojectuntuksistemoperasiyangberbasismodifikasiLinuxKerneldanWebKitruntime.DenganTizen,kitadapatmenjalankanaplikasidiatasSmartphone,WearableataupuncomplaisancedevicesyangmengusungOSTizen.
BukuPanduanDasarPemrogramanTizendibuatdenganmaksuddantujuanuntukmembantuparadeveloperpemulaataudeveloperyangsudahmemilikiketrampilanmemprogramaplikasimobilebaikituWindowsPhone,AndroidataupuniOSdalammembuataplikasimobilediatasplatformTizen.
Adaempatbabyangakandibahaspadabukuini,antaralain:
MengenalTizendanpenerapannyaPemrogramanTizenuntukPlatformWindowsPemrogramanTizenuntukPlatformLinuxPemrogramanTizenuntukPlatformMac
PanduanDasarPemrogramanTizen
6Pendahuluan
PendahuluanTizenadalahperangkatlunak(software)platformberbasisopensourceyangdiperuntukanuntukberbagaiplatformsepertismartphone,wearable,tablet,netbook,smartTVdanlain-lainnya.
TizenhadirsebagaialternatifplatformlaindariAndroiddaniOSyangdiusungolehSamsung.TizendibangundariKernel-linuxmemilikiflesibilitasyangtinggisepertiAndroid.
PadababinikitaakanmengeksplorasiapadanbagaimanaTizenitusendiri.
Marikitalanjutkan.
PanduanDasarPemrogramanTizen
7MengenalTizendanPenerapannya
ArsitekturUmumTizenSepertidiketahuibahwaTizendibangundiatasKernelLinux.SelanjutnyadiatasnyadibangunbeberapalibraryAPIgunamendukungaplikasiyangberjalandiatasplatformTizen.
LibraryAPIinidipergunakanuntukoperasionaldankontroldariTizenitusendiri.Komponeninimeliputi:
BaseContentLocationMessagingMultimediaSocialSystemTelephonyUIWebApplicationFrameworkNetworkSecurity
Secaraumum,pembacadapatmelihatpadagambardibawahini.
Masing-masingAPIiniakandibahaspadabukuselanjutnya.
PanduanDasarPemrogramanTizen
8ArsitekturUmumTizen
PenerapandanPenggunaanTizenSepertidijelaskandiawalbahwaTizentidakhanyadiperuntukanuntukplatformsmartphonetetapiperalatanlainnya.
SalahsatuprodukTizenyangdiluncurkanuntukplatformsmartphoneadalahSamsungZ1.Andadapatmembacaspesifikasinyapadaalamatwebsitedibawahini.
http://www.samsung.com/in/consumer/mobile-devices/smartphones/others/SM-Z130HZKDINS
PanduanDasarPemrogramanTizen
9PenerapandanPenggunaanTizen
SelainSamsungZ1,SamsungjugameluncurkanSamsungZ3dimanapembacadapatmelakukanreviewspesifikasinyapadaalamatini.http://www.samsung.com/in/consumer/mobile-devices/smartphones/others/SM-Z300HZKDINS
SemuaSamsungSmartTVjugamenggunakanTizenOSsebagaibagianoperationalnya.
SelainSamsungSmartTV,SamsungWearablejugamenggunakanTizenOSsebagaisistemyangditanampadaperalatantersebut.
Kalaukitabolehmenarikbenangmerahnya,denganinvestasidalammengembangkanaplikasiTizen,kitadapatmelakukaninstalasikebeberapaperalatanplatform.
PanduanDasarPemrogramanTizen
10PenerapandanPenggunaanTizen
PengembanganAplikasiTizenTizendevelopmentmenawarkanbeberapatargetplatformperalatanyangcukupbanyak.Untukpengembangan,Tizenmenawarkanduaopsidalamdevelopmentyaitu:
NativeApplicationWebApplication
PadaNativeapplicationkitaakanmengembangkanaplikasiTizendalambahasaC.Keuntunganyangdidapatkanpadaopsiiniadalahkecepatandankeandalan.HalinidisebabkankitasecaralangsungmengaksesTizenAPI.
SedangkanWebapplicationdiperuntukanbagiparadeveloperyangmemilikidasarHTML5.SepertidiketahuiHTML5inijugadidukungolehplatformlainsepertiAndroid,iOS,WindowsPhone,FireOS.Keuntunganopsiini,kitadapatmempergunakantemplateHTML5yangsudahadasehinggainidapatdipakaiolehplatformlainyangberbasisHTML5.
PanduanDasarPemrogramanTizen
11PengembanganaplikasiTizen
PendahuluanSDKTizenterdiridaribeberapaperangkatutamayangdibutuhkanuntukmembuatdanmenjalankanaplikasiTizen.
PadasesiinikitaakanmelakukaninstalasidankonfigurasigunamembuatdanmenjalankanaplikasiTizendiatasplatformWindows.DisinipenulisakanmenggunakansistemoperasiWindows10sebagaitestingnya.
PanduanDasarPemrogramanTizen
12PemrogramanTizenuntukPlatformWindows
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
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
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
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
Tunggubeberapasaathinggawindowsmemintauntukrestartkomputer.KliktomblokRestartnowuntukmenghidupkanulangkomputer.
Intel®HardwareAcceleratedExecutionManager(HAXM)
PanduanDasarPemrogramanTizen
17PersiapanInstalasi
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
4. KliktombolNextuntukmemulaiprosesinstalasi
KitadapatmengaksesdokumentasidenganmenekantombolIntel®HAXMDocumentation.
5. Sesuaikanjumlahmemory(RAM)yangdialokasikanuntukIntel®HAXM.
FileinstallerjugaberfungsisebagaialatkonfigurasiuntukIntel®HAXM.Jikainginmengubahpengaturanalokasimemory(RAM)yangingindigunakan,jalankankembalifileinstaller.
PanduanDasarPemrogramanTizen
19PersiapanInstalasi
6. Konfirmasimemori(RAM)yangtelahdialokasikanuntukIntel®HAXMdankliktombol
Install.
7. TunggubeberapasaathinggaIntel®HAXMterinstaldengansmepurna.
PanduanDasarPemrogramanTizen
20PersiapanInstalasi
8. SaatprosesinstalasiIntel®HAXMselesai,kliktombolFinishuntukmenyelesaikandankeluardariprosesinstalasi.Intel®HAXMtelahberhasildiinstaldansiapuntuk
digunakan.
UntukmemastikanIntel®HAXMberjalandenganbaik,bukaCommandPromptpadawindowsdanmasukkanperintah:scqueryintelhaxm
JikaIntel®HAXMberjalandenganbaik,CommandPromptakanmenampilkanpesanstatusyangmengindikasikanstateadalah“4RUNNING”.
KebutuhanTambahan(Opsional)
PanduanDasarPemrogramanTizen
21PersiapanInstalasi
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
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
InstalasiSetelahberhasilmengunduhTizenSDK,jalankanfileinstallerdengancaradouble-clickpadaicon/fileinstaller.
Setelahmenjalankanfileinstaller,makaakanmunculsecuritywarning.PilihYesuntukmelanjutkanprosesinstalasi.Setelahitufileinstallerakanmengekstraksibeberapakomponenfileuntukprosesinstalasi.
PanduanDasarPemrogramanTizen
24InstalasiTizen
Setelahfileinstallerselesaimengekstraksisemuakomponenyangdiperlukan,makakitaakanmendapatkanwindowpengaturaninstalasisepertidibawahini.
Padawindowpengaturaninstalasi,kitadapatmengaturlokasidirektoridimanaTizenSDKakanterinstalasi.Secaradefault,lokasiinstalasiTizenSDKuntuksistemoperasiwindowsadalahdiC:\tizen-sdk.
Pastikanlokasidirektoriyangdipilihadalahlokasidirektoriyangvalig.Jikadirektoritersebuttidakadaatautidakvalid,makafileinstallerakanmenampilkanbahwalokasidirektoritidakvalidsepertigambardibawahini.
Jikatelahselesaimengaturlokasiinstalasi,klikcheckboxAcceptuntukmenyetujuisyaratdanketentuan.Untukmemulaiinstalasi,kliktombolUnduh,tombolyangmemilikigambarpanahkebawahdikelilingiolehlingkaranberwarnabiru.
PanduanDasarPemrogramanTizen
25InstalasiTizen
Setelahmenekantombolunduh,tungguprosesinstalasisampaiselesai.Jikaprosesinstalasisudahselesaimakakitaakanmelihatadabeberapaprogrambaru,yaitu
No. Nama Fungsi
1 UpdateManager
PerangkatlunakuntukmengaturdanmengunduhSDKyangdiperlukan.
2 TizenWebSimulator
Tizensimulator,mensimulasikanperangkatTizenpadawebbrowseruntukmenjalankanTizenWebApps.
3 TizenIDE PerangkatlunakuntukmembuataplikasiTizen.
DenganmenekantombolQuit,TizenSDKtelahberhasildiinstaldansiapuntukdigunakan.
PanduanDasarPemrogramanTizen
26InstalasiTizen
KonfigurasiSetelahInstalasiTizenUntukmelengkapiprosesinstalasi,kitaharusmenjalankanUpdateManageruntukmengunduhSDKyangdiperlukan,terutamaTizenNativeSDK.KarenafileinstallerhanyamemberikankitaSDKTizenWeb.CaridanjalankanUpdateManager.SetelahUpdateManagerdijalankan,makakitaakanmendpaatkankotadialogsepertipadagambardibawahini.
UpdatemanagermemberikaninformasibeberapaTizenSDKyangbisadiunduhsebelummemulaiprosespembuatanaplikasi.Secaraumum,UpdateManagermemberikanTizenSDKuntukbeberapaperangkat,yaituSmartphone,SmartTVdanWearableDevice(SmartWatch).UnduhSDKyangdiinginkan,namunpastikankitamengunduhSDKterbaruuntuktiap-tiapperangkat.Pastikankomputerterhubungkeinternetsebelummemulaiinstalasi/unduhTizenSDK.
PanduanDasarPemrogramanTizen
27KonfigurasiSetelahInstalasiTizen
JikakitatidakmemilikikoneksiinternetyangbaikmengunduhTizenSDK,kitadapatmelakukaninstalasiSDKmelalumenusettingdipojokkananatas.
Setelahdiklik,kitaakanmendapatkotakdialogdibawahini.KlikbagianInstallOption,danpilihSDKImage.KemudianisidenganfileSDKImageyangtelahdiunduhsebelumnya.
PanduanDasarPemrogramanTizen
28KonfigurasiSetelahInstalasiTizen
PanduanDasarPemrogramanTizen
29KonfigurasiSetelahInstalasiTizen
MengenalTizenDevelopmentIDEUntukmembukaTizenIDE,cariaplikasipadaApplicationListataudenganmenekantombolstartpadakeyboarddanmasukankatakunciTizenIDE.SetelahmembukaTizenIDE,makakitaakanmendapatkansplashscreensepertipadagambardibawahini.
Padasaatawalkitaakanditanyakanlokasidirektoriuntukbekerja(workspace).Secaradefault,TizenIDEakanmemberikanlokasiawaluntukworkspace.Pilihlokasiworkspaceyangdiinginkan,danklikcheckbox'Usethisasthedefaultanddonotaskagain'agarTizenIDEtidakmenanyakankembaliworkspacesetiapkitamembukaTizenIDE.
KliktombolOKuntukmembukaTizenIDE.DanakhirnyakitamendapatkanTizenIDEsepertiyangterlihatpadagambardibawahini.
PanduanDasarPemrogramanTizen
30MengenalTizenDevelopmentIDE
Secaraumum,TizenIDEmiripdenganEclipse.Ya!karenaTizenIDEdikembangkandariEclipseIDE.PadasetiapawalmemulaiTizenIDE,kitaakandiberikanbeberapatipssepertigambardibawahini.
PanduanDasarPemrogramanTizen
31MengenalTizenDevelopmentIDE
PanduanDasarPemrogramanTizen
32MengenalTizenDevelopmentIDE
TizenEmulatorTidakperlumemilikiperangkatberbasisTizenuntukmengujiaplikasiTizenyangkitabuat.TizenEmulatormemungkingkankitamembuataplikasiTizendanmencobanyadengancepat.
EmulatoryangdisediakanolehTizenSDKmeniruenvironmentyangadapadaTizenDevice.DenganmenggunakanreplikasienvironmentpadaTizenEmulator,kitadapatmengujicobaaplikasiyangkitabuatsebelummendeployketargetdeviceTizenyangsesungguhnyasepertiSmartphone,Wearable(SmartWatch)danSmartTV.
UntukmembuatdanmenjalankanTizenEmulator,caridanbukaEmulatorManagerdariApplicationList.SetelahmembukaEmulatorManager,makakitaakanmendapatkanwindowsepertipadagambardibawahini.
MembuatSmartphoneTizenEmulatorUntukmembuatTizenEmulatoruntuksmartphone,pilihtabmobile,kemudiantekantombolCreateNewVM.
PanduanDasarPemrogramanTizen
33MengenalTizenEmulator
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
KliktombolConfirmuntukmenyimpankonfigurasidanmembuatemulatorbaru.Berikutgambarjikaberhasilmembuatemulatorbaru.
JikakitainginmengubahkonfogurasidariTizenEmulator,kliktomboleditpadapojokkananatas.
PanduanDasarPemrogramanTizen
35MengenalTizenEmulator
MenjalankanSmartphoneTizenEmulatorUntukmenjalankanTizenEmulator,kliktombolrunpadaemulatoryangtelahdibuat.
SecurityalertakanmunculsaatmencobamenjalankanTizenEmulatoruntukpertamakali.KliktombolAllowaccessuntukmenjalankanemulator.
PanduanDasarPemrogramanTizen
36MengenalTizenEmulator
Tunggubeberapasaat.TizenemulatorakanmenampilkansplashscreensaatsebagaipertandabahwaemulatorsedangmemuatresourceyangdibutuhkanuntukmenjalankanTizenOSpadaemulator.
BerikuttampilanlockscreenTizenOSyangberjalandiatasTizenEmulator.
PanduanDasarPemrogramanTizen
37MengenalTizenEmulator
GeserpadalayarTizenEmulatordenganmenggunakanMouseuntukmelihatisidariTizenOS.BerikutbeberapatampilandariTizenOS.
PanduanDasarPemrogramanTizen
38MengenalTizenEmulator
Layaknyasebuahsmartphone,TizenEmulatorinidilengkapidengantombolmenu,home,back,powerdanjugavolume.
PanduanDasarPemrogramanTizen
39MengenalTizenEmulator
HelloTizenSesiinimenjelaskanbagaimanacaramembuataplikasiTizensederhanayaituHelloWorld.TutorialinimembantukitamengenaliprosespembuatanaplikasiTizensecaraNative(TizenNativeApplication),menggunakanTizenSDKdaninstalasiaplikasiyangtelahdibuatpadaemulatorataupadaTizenDevice.
Saatkitamembuataplikasiyangrumit,kitadapatmenggunakantoolsyangtelahdisertakanpadaTizenSDKuntukmemudahkanprosespembuatanfitursertadesainantarmukaaplikasi(UserInterface).
Berikutlangkah-langkahyangdiperlukanuntukmembuataplikasiTizensederhana"HelloWorld".
MembuatProyekBaruUntukmembuatproyekbaru,jalankanaplikasiTizenIDE.
PadaTizenIDE,pilihmenuFile>New>Project...
PanduanDasarPemrogramanTizen
40HelloWorldTizen
PilihTizenNativeProjectsebagaitipeproyek.KemudiankliktombolNext.
PilihBasicUIsebagaitemplateproject.BerikannamauntukProjectnamedanPackagename.PilihmobilesebagaiProfile.Gunakanversi2.4sebagaiVersiondariaplikasiTizenyangakandibuat.KliktombolFinishuntukmengkonfirmasipembuatanproyekTizenbaru.
PanduanDasarPemrogramanTizen
41HelloWorldTizen
Apabilaprosespembuatanprojectbarusudahselesai,kitaakanmendapatkankodeprogramsesuaidengantemplateyangdipakai.
ProyekbaruHelloWorldtelahterlihatdiProjectExplorerpadaTizenIDE.Padaprojectexplorer,terdapatfilekonfigurasiprojectbernamatizen-manifest.xmldanbeberapafilekodeprogramlainnyaseperti:
PanduanDasarPemrogramanTizen
42HelloWorldTizen
folderinc:direktoriheaderfileuntukaplikasifoldersrc:direktoriCfileuntukimplementasikodeprogram
KonfigurasiAplikasiUntukkonfigurasiaplikasi,adaduahalyangbisadilakukan:
Mengubahprojectpropertiesdenganmemodifikasifiletizen-manifest.xml.Berikutmerupakanisidaritizen-manifest.xml.
Implementasikodeuntukaplikasipadahelloworld.c
SaatmembuatkodeprogramuntukaplikasiTizen,harapdiingatbahwaTizenAPImengikutibeberapaprinsipdasarberikutini:
Ownershipofreturnedstrings
Semuavariabeldengantipedatastringyangdi-returnsebagaipointerharusdihapusolehcallerkecualidibutuhkanolehbagianprogramlain.
Tidakmenghapusstringpadamemoridapatmenyebabkanmemoryleaks.Sistemmemoriyangtidakcukupdapatmemicunotifikasi'systemlowmemory',sebuahnotifikasiyangmemberikaninformasibahwamemoripadasistemtidakcukupuntuk
PanduanDasarPemrogramanTizen
43HelloWorldTizen
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
Codeassist
TizenIDEmenyediakanfiturAPIassistdanAPIhoverfeaturesuntukmembuatkodeprogrampadaeditorsemakincepatdanefisien.
Saatmengubahkodeprogram,tekantombolCTRL+SPACEuntukmelihatketersediaanAPIyangdapatdigunakan.
MembuatUserInterfacedenganEFLEFLadalahsingkatandariEnlightenmentFoundationLibrary,kumpulantoolkitgrafisyangdigunakanuntukmembuataplikasiTizen.Berikutlangkah-langkahyangdilakukanuntukmembuatuserinterfaceuntukaplikasitizendenganmenggunakanEFL.
1. MenambahkanUserInterface
Untukmenambahkanuserinterfacekedalamaplikasi,perludiketahuicontainerdancomponentyangdiperlukan.Padatutorialiniadabeberapacontainerdancomponentyangdigunakan.
Sebuahwindowuntukmenyimpansemuacontainerdancomponentdiatasnya
PanduanDasarPemrogramanTizen
45HelloWorldTizen
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
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
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
//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
//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
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
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
Sebelumkitamenjalankanaplikasi,kitaharusmelakukansignpadaaplikasiyangkitabuatdenganmeng-generateauthorcertificatedanmendaftarkannyapadaTizenIDE.
JikakitatelahmemilikisertifikatyangteregistrasididalamTizenIDE,prosessignaplikasiakandilakukansecaraotomatissaatmenjalankanaplikasi.
BerikuttahapanmembuatsertifikatuntukaplikasiTizen.
1. BukapengaturanSecurityProfilesmelaluimenuWindow->Preferences>TizenSDK>SecurityProfiles.
PanduanDasarPemrogramanTizen
53HelloWorldTizen
2. KemudiankliktombolAdduntukmenambahkanprofile
3. MasukkanProfileName,kemudiankliktombolOK.
4. Setelahprofileselesaidibuat,klikGenerateuntukmembuatAuhtorCertificate.KemudianisisemuafieldyangdibutuhkanpadadialogCertificateGenerator.KemudiankliktombolOKuntukmembuatcertificate.
PanduanDasarPemrogramanTizen
54HelloWorldTizen
5. KlikYespadakotakdialogyangmuncul.
PanduanDasarPemrogramanTizen
55HelloWorldTizen
6. Prosespembuatanprofiledanauthorcertificatetelahselesai.KemudiankliktombolApplyuntukmenggunakannya.
7. KliktombolOKuntukmengaktifkansecurityprofiledanauthorcertificateyangtelahdibuat.Kemudianlakukancleanprojectdengancaraklikkananpadafolderutama
project.
PanduanDasarPemrogramanTizen
56HelloWorldTizen
8. Setelahcleanproject,makaprosespembuatandanpengaktifansecurityprofilesdanauthorcertificatetelahselesai.
MenjalankanAplikasipadaTizenEmulator
UntukmenjalankanaplikasipadaTizenEmulator,klikkananpadafolderutamaproject,kemudianpilihRunAs>TizenNativeApplication.
KemudiankotakdialoguntukTizenemulatorakanmuncul.Jikasudahpernahmembuattizenemulator,makapilihtizenemulatoryangpernahdibuat,laluklikLaunch.
PanduanDasarPemrogramanTizen
57HelloWorldTizen
KlikAllowaccessjikamunculFirewallException.
TunggubeberapasaathinggaTizenOSdimuatdalamemulatordanemulatorsiapuntukdigunakan.Berikuttampilandarikodeprogramyangtelahkitabuat.
PanduanDasarPemrogramanTizen
58HelloWorldTizen
JalankanProgramkeTizenDevice
Berikutmerupakanlangkah-langkahuntukmenjalankanAplikasiTizenpadaTizenDevice.
1. HubungkanSmartphoneTizenkekomputerdengankabelUSB.
PanduanDasarPemrogramanTizen
59HelloWorldTizen
2. SmartphoneTizenyangdihubungkankekomputerakanterdeteksipadaConnection
ExplorerdiTizenIDE. Padagambardiatas,SamsungZ1telahterdeteksiterhubungdengankomputer.
3. PilihSmartphoneTizenyangterhubungkekomputerpadaConnectionExplorer.
4. PadaProjectExplorer,klikkananpadafolderproject,danpilihRunAs>TizenNativeApplication.Sebagaialternatif,untukmenjalankanaplikasipadaSmartphoneTizen,tekantombolPlaypadatoolbaratautekanCtrl+F11padakeyboard.Tunggubeberapasaat,makaaplikasiakanberjalanpadaSmartphoneTizen.
PanduanDasarPemrogramanTizen
60HelloWorldTizen
DebuggingAplikasiBagipembacayangsudahpernahmemilikipengalamanmenggunakanIDEEclipsemakaprosesdebuggingpadaTizenIDEakanmemilikipengalamanyangsama.
PanduanDasarPemrogramanTizen
61HelloWorldTizen
Cukupklikkananpadakodeprogramyangakandianalisadannantiakankeluarmenu,pilihAddBreakPoint.
Kemudianakanadabulatanwarnabirudisampingkodeprogramyangakankitalakukandebugging.
PanduanDasarPemrogramanTizen
62HelloWorldTizen
SekarangkitamelakukandebuggingdengancaraklikkananpadafolderutamaprojectdanpilihmenuDebugAs>TizenNativeApplication-Attach.
CheckataucentangpadacheckboxRemembermydecision,kemudiankliktombolYes.
PanduanDasarPemrogramanTizen
63HelloWorldTizen
KemudianTizenDebuggerakanberjalan.
Prosesdebuggingakanberhentipadasetiapbreakpointyangtelahkitatentukan/buat.
PanduanDasarPemrogramanTizen
64HelloWorldTizen
Kliktombolikonmerah(stop)untukmengakhiriprosesdebugging.
KlikTizenNativepadabagiankananatasuntukkembalikemodecodeeditor.
Ok,cukupmudahbukanprosesdebuggingnya?
PanduanDasarPemrogramanTizen
65HelloWorldTizen
ProjectTizenPertamaku:KalkulatorSederhanaPadasesiinikitaakanmembuataplikasiTizensederhanayaitukalkulatordenganmenggunakanTizenNativeApplication.
TujuanTujuandaripembuatanprojectkalkulatorsederhanainiadalahuntukbelajarbagaimanamemanfaatkankomponen-kompunenUIstandardyangdisediakanolehTizenSDKsepertilabel,grid,buttondancomponentlainnya.
MembuatProyekBaruUntukmemulaimembuatkalkulator,buatprojectbarumelaluimenuFile->New->TizenNativeProject.PilihtemplateBasicUIpadakategoriMOBILE.Berinamaprojectdanpackagename,misalkanMyCalculator.
KliktombolFinishuntukmenyelesaikanpembuatanprojectbaru.
Setelahprosespemnbuatanprojectbaruselesai,akanadaduafileyaituheaderfiledenganekstensi.hdancfiledenganekstensi.c.DengannamaprojectMyCalculatormakaakandihasilkanfilemycalculator.hdanmycalculator.c.
PanduanDasarPemrogramanTizen
66ProyekTizenPertamaku
MembuatTampilan(UI)TizenPadapembuatanUIuntukaplikasikalkulator,kitaakanmenggunakanEFL(EnlightenmentFoundationLibrary)sebagaiNativeUIyangdisediakanolehTizenSDK.SemuakomponenuntukUIakandibuatpadafilemycalculator.c.
Berikutmerupakanhasilakhirdariaplikasikalkulatoryangakankitabuat.
BerikutmerupakanprosespembuatanaplikasiKalkulator.
MembuatProgramTizenBukafilemycalculator.c.Ubahstructappdatayangsemula.
PanduanDasarPemrogramanTizen
67ProyekTizenPertamaku
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
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&¤t_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
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
}
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
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
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
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
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
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
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
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
Untukmemastikankodeprogramyangditulissudahbenardantidakadakesalahanlakukankompilasipadaprojectyangdibuat.Untukmelakukankompilasi,klikkananpadarootfolderproject,kemudianpilihBuildProject.
HasilkompilasinyaakanterlihatpadaConsolediTizenIDE.
Jikatidakadaerror,klikRununtukmenjalankanaplikasi.Padakotakdialogyangmuncul,pilihemulatoryangakandigunakanuntukmenjalankanaplikasi,kemudiankliktombolLaunchuntukmenjalankanaplikasipadaemulatoryangdipilih.
PanduanDasarPemrogramanTizen
79ProyekTizenPertamaku
Tunggubeberapasaatuntukmenjalankanaplikasipadaemulator.BerikuttampilanaplikasiKalkulatoryangberjalanpadaemulator.
PanduanDasarPemrogramanTizen
80ProyekTizenPertamaku
Lakukanpengujiandenganmenekantombolyangadapadakalkulator.
PanduanDasarPemrogramanTizen
81ProyekTizenPertamaku
MenjalankanProgramTizenkeSmartphoneTizenBerikutmerupakanlangkah-langkahuntukmenjalankanAplikasiTizenpadaSmartphoneTizen.
1. HubungkanSmartphoneTizenkekomputerdengankabelUSB.
PanduanDasarPemrogramanTizen
82ProyekTizenPertamaku
2. SmartphoneTizenyangdihubungkankekomputerakanterdeteksipadaConnection
ExplorerdiTizenIDE. Padagambardiatas,SamsungZ1telahterdeteksiterhubungdengankomputer.
3. PilihSmartphoneTizenyangterhubungkekomputerpadaConnectionExplorer.
4. PadaProjectExplorer,klikkananpadafolderproject,danpilihRunAs>TizenNativeApplication.Sebagaialternatif,untukmenjalankanaplikasipadaSmartphoneTizen,tekantombolPlaypadatoolbaratautekanCtrl+F11padakeyboard.Tunggubeberapasaat,makaaplikasiakanberjalanpadaSmartphoneTizen.
PanduanDasarPemrogramanTizen
83ProyekTizenPertamaku
PanduanDasarPemrogramanTizen
84ProyekTizenPertamaku
PendahuluanPadasesiinikitaakanmelakukaninstalasidankonfigurasigunamembuataplikasiTizendiatasplatformUbuntu.DisinipenulisakanmenggunakanUbuntu14.04.4LTS64bitsebagaitestingnya.
PanduanDasarPemrogramanTizen
85PemrogramanTizenuntukPlatformLinux
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
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
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
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
WindowyangmunculmerupakanpertanyaanseputarUpdateManager.PilihYes,karenapadatahapinikitaakanmelakukankonfigurasiinstalasilibrary-libraryyangdibutuhkan
PanduanDasarPemrogramanTizen
90InstalasiTizen
KonfigurasiSetelahInstalasiTizen
Padabagianini,kitaakanmelakukaninstalldanupdateterhadapTizen-SDKkitamenggunakanTizenUpdateManager.Pilihcontinueuntukmelanjutkanprosesinstalasi,sehinggakomputerandamemberikantampilansebagaiberikut:
Jikaandatidakmemilikisdk-image,andabisamelakukaninstalasidenganmemilihpackageinstalasiyangandabutuhkansesuaidengangambardiatas.DisarankanandamemilihbuttoninstalluntukpackageSDKterbaru,seperti2.4Mobiledan2.31.Wearable.
BagiandayangmemilikiSDKimage,prosesinstalasibisadilakukandengancaramembukamenukonfigurasipadawindowTizenUpdateManagerpadapojokkananatas.
PanduanDasarPemrogramanTizen
91KonfigurasiSetelahInstalasiTizen
Kemudian,gantiInstalloptiondengan“SDKImage”danpilihlahfileisoyangandamilikiuntukmelanjutkanprosesinstalasi.Pilihbuttonconfirmuntukmemulaiinstalasi.
PanduanDasarPemrogramanTizen
92KonfigurasiSetelahInstalasiTizen
MengenalTizenDevelopmentIDEPadatahapiniandatelahberhasilmelakukaninstalasiTizenSDK.
Programyangtelahterinstaldapatdilihatpadafolderhome/tizen-sdk/ide.AndabisamenjalankanTizenIDEdenganmemilihiconeclipsepadafiletersebut.Opsikedua,andajugabisamenjalankanaplikasidenganmencarinyapadamenusearchUbuntu,denganmengetikkankata“tizen”.Semuaaplikasitizenyangtelahterinstallakandimunculkan,seperti,IDE,WebSimulator,Emulator,UpdateManagerdanDynamicAnalyzer.
PanduanDasarPemrogramanTizen
93MengenalTizenDevelopmentIDE
Untuktahappertamaandadimintauntukmelakukankonfigurasialamatworkspace.Jikaandaberkenanuntukmenyimpanprojectpadadirektoridefaultsepertiyangditampilkan,pilihOK.Namun,jikatidak,pilihBrowsedanatursedemikianlokasiworkspaceyangandainginkan.
Makaakanmuncultampilanwindowsebagaiberikut:
PanduanDasarPemrogramanTizen
94MengenalTizenDevelopmentIDE
PanduanDasarPemrogramanTizen
95MengenalTizenDevelopmentIDE
TizenEmulatorTizenSDKtelahdilengkapidenganemulatorsehinggamemungkinkankitauntukbisamelakukansimulasiprogramtanpaharusmemilikideviceSamsungdenganOSTizen.KonfigurasiemulatorTizenDevicebisadilakukandengancaramenjalankanEmulatorManageryangtelahter-instalseiringdenganinstalasiTizenSDK.
Untukmempermudahpencarian,padamenusearchaplikasiyangadapadaUbuntuanda,ketik“Emulatormanager”,sepertigambarberikut:
PilihiconEmulatorManagertersebut,yangselanjutnyaakanmemberikantampilansebagaiberikut:
PanduanDasarPemrogramanTizen
96MengenalTizenEmulator
UntukmembuatEmulator/VirtualMachine(VM)baru,pilihbutton“CreateNew”yangadapadawindowdiatas,sehinggamemberikantampilansebagaiberikut:
AndabisamelakukankonfigurasisepertiName,Display,Processor,danRAMsesuaidengankebutuhandevelopment.Jikatelahsesuaidengankonfigurasiyangdiinginkanpilihconfirm
PanduanDasarPemrogramanTizen
97MengenalTizenEmulator
Untukmenjalankanemulator,klikbuttonpanahyangberadapadaicontizen-01diatas.SecaraotomatisemulatormanagerakanmenampilkanVMdarideviceyangtelahandasettingsebelumnyasepertigambardibawahini:
Layaknyasebuahsmartphone,emulatorTizeninidilengkapidenganbuttonmenu,home,back,powerdanjugavolume.
PanduanDasarPemrogramanTizen
98MengenalTizenEmulator
HelloTizenPadabagianiniakandijelaskanprosedursederhanauntukmembuatsebuahprogram“Helloworld”padaTizenSDK.
MembuatProyekBaruUntuklangkahpertama,bukaTizenIDEanda,danbuatlahprojectbarudengannama“HelloWorld”.InidilakukandenganmemilihmenuFile->New->Project.Kemudianpadawindow“NewProject”,pilihlahTizenNativeProject.
Padawindowberikutnya,andabisamenemukanbeberapatemplateyangtelahdipersiapkanolehTizenIDE.Untuktahapini,marikitagunakantemplateprojectyangpalingsederhana,yaituBasicUIApplication.Untukprojectawalkaliini,gantinamaprojectmenjadi“HelloWorld”,kemudianklikbuttonFinish.
PanduanDasarPemrogramanTizen
99HelloWorldTizen
TizenIDEandaakanmemberikantampilansebagaiberikut:
PanduanDasarPemrogramanTizen
100HelloWorldTizen
Projectbaruyangbarusajaandabentuk,dapatdilihatpadatabProjectExplorerdenganbeberapafolderdefault,diantaranya:
inc,merupakanfolderuntukdefaultincludepathlib,merupakanfolderuntukexternallibraryfilesres,merupakanfolderuntukresourcesfilesshared,merupakanfolderresourcefilesyangbisadi-sharedenganaplikasilainnya.src,merupakanfolderutamayangberisikankodeaplikasitizen-manifest.xml,merupakanmanifestfiledariaplikasianda.
MembuatProgramJikaandainginmelakukankonfigurasiterhadapinformasiumumaplikasianda,andabisamelakukannyadenganmemilihtizen-manifest.xmlyangadapadaProjectExplorer.TizenIDEakanmemberikantampilansebagaiberikut:
PanduanDasarPemrogramanTizen
101HelloWorldTizen
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
BagiandayangbarupertamakalimenjalankanaplikasidiTizenIDE,andaakanmendapatipesanwarninguntukmelakukanprosesSigningsepertidibawahini:
Olehkarenaitu,aturlahkonfigurasiSigningandaterlebihdahuludenganpertama-tamamengklikPreferences>TizenSDK>SecurityPoliciesyangtertulispadawindowdiatas.Sehinggamemberikantampilanberikut:
Pertama,pilihbuttonAdd,sehinggamemunculkanwindow“ProfileName”.IsikannamaprofileyangandainginkandankemudianpilihOK.Langkahselanjutnya,pilihbuttonGenerateuntukmendapatkanAuthorCertificate.Setelahmengisikandatayangdiminta,pilihOK.DanterakhirpilihApplydanOK.
JalankanProgramkeTizenEmulator
Jalankanprogramandasekalilagi,makaakanmunculpilihanemulatorsebagaiberikut:
PanduanDasarPemrogramanTizen
103HelloWorldTizen
Jikasebelumnyaandabelumpernahmembuatemulator,andabisamemilihbuttonEmulatorManagerdanmelakukankonfigurasiemulatorberdasarkanpenjelasansub-babsebelumini.Jikaandatelahmeilikiemulator,makajalankanaplikasidenganmemilihbuttonLaunch.TizenSDKsecaraotomatisakanmenjalankanaplikasiandapadaemulatoryangtelahandapilih.
JalankanProgramkePeralatanTizen
UntukmenjalankanaplikasihubungkandeviceTizenandaterlebihdahuludengankomputermenggunakankabelUSB.KemudianjalankanprogramsepertibiasadenganmenekantombolrunningpadaIDE.Padapilihantargetrunning,deviceandaakanmunculsebagai
PanduanDasarPemrogramanTizen
104HelloWorldTizen
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
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
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
eventuntukmeng-handleperubahanformatregionatauzonawilayah
PanduanDasarPemrogramanTizen
108HelloWorldTizen
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
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
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
sesuaidengankebutuhan.
Untuksetiapbuttonangkadari1,2,3,4,5,6,7,8,9,dan0bisadiimplementasikandenganpotongankodeberikut:
EntryLayarmerupakanIDdarilayarkalkulatorkita.Padafungsidiatas,ketikabuttonangka1diklikmakakitaakanmelakukanupdatekepadalayar.Lakukanhalserupauntukangka-angkalainnya.UntukButtonReset,aturlayarmenjadi0sepertipotongankodeberikut:
Andabisamenyesuaikanimplementasifungsisesuaidengankebutuhananda.Untukprogramkalkulatorsederhanaini,kitamenggunakanbeberapaglobalvariabelyangbisadiaksesdariberbagaifolderprogram.
PanduanDasarPemrogramanTizen
112ProyekTizenPertamaku
Globalvariabelinidideklarasikanpadasebuahheaderfile(disinikitameletakkannyadiapp_main.h).Adabeberapaglobalvariabelyangdigunakansepertiangka,numberIsClicked,operatorIsClicked,danlength.Variabelinidigunakanuntukmembantuprosesperhitungandanvalidasibuttonketikadiklikolehuser.
Nahmudahbukan?Lakukanpulahalyangserupauntukmengimplementasikanbuttonoperatortambah,kurang,bagi,kalidanjugasamadengan.Selamatberlatih:)
PanduanDasarPemrogramanTizen
113ProyekTizenPertamaku
PendahuluanPadasesiinikitaakanmelakukaninstalasidankonfigurasigunamembuataplikasiTizendiatasplatformMac.DisinipenulisakanmenggunakanMacOSXElCapitan(10.11.x)sebagaitestingnya.
PanduanDasarPemrogramanTizen
114PemrogramanTizenuntukPlatformMac
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
InstalasiTizenSetelahunduhfileSDKTizenuntukMacdihttps://developer.tizen.org/development/tools/download,andadapatmenjalankanfilesetup(*.dmg)sehinggaakanmendapatkankotakdialogsepertidibawahini
ProsesinstalasiinimemerlukankoneksiInternetuntukprosesupdatenya.Opsilain,andadapatunduhfileSDKImageterlebihdulu.
Padagambardiatas,klikfileinstallersehinggaandamendapatkankotakdialogsepertipadagambardibawahini.
Pilihlokasiinstalasinya.Jikasudah,klikcheckboxAccept.
PanduanDasarPemrogramanTizen
116InstalasiTizen
Untukmemulaiinstalasi,kliktombollingkanyangdidalamnyaadapanahkebawah.
ProsesinstalasicukuplamauntukandayangmemilikikoneksiInternetyangpelan.
Jikasudahselesaiprosesinstalasinya,andadapatmelihatmenuUpdateManager-x.ydimanax.yadalahversidariTizenUpdateManager.
Langkahselanjutnya,kitaharusmelakukankonfigurasiTizenSDKdanEmulatornya.
PanduanDasarPemrogramanTizen
117InstalasiTizen
KonfigurasiSetelahInstalasiTizenUntukmelengkapidevelopment,kitaharusmenjalankanUpdateManagersebagaibagianpostinstallation.TujuannyauntukinstalasiSDKTizenyangdidalamnyaadaDevelopmenttooldanEmulator.
KetikaUpdateManagerinidijalankan,kitaakanmendapatkankotakdialogsepertidibawahini.
PanduanDasarPemrogramanTizen
118KonfigurasiSetelahInstalasiTizen
PadatabAllPackages,installbagianyangingindiinstall.SebaiknyacentangbagianyangterbarumisalkanuntukMobileatauWearableataukeduanyajikakitainginmembuataplikasidengantargetMobiledanWearable.
ProsesiniakanmemerlukanwaktusesuaidengankecepatanInternetyangdimiliki.
JikapembacamelakukanunduhduluSDKimagesupayamemangkasprosesunduhdariinstalasimakakitabisakonfigurasibagiansettingnya.
Klikikonsettingsepertiyangditunjukkanpanahdigambardibawahini.
PanduanDasarPemrogramanTizen
119KonfigurasiSetelahInstalasiTizen
Setelahdiklik,kitaakanmendapatkotakdialogdibawahini.KlikbagianInstallOption,danpilihSDKImage.KemudianisidenganfileSDKImageyangtelahdiunduhsebelumnya.
PanduanDasarPemrogramanTizen
120KonfigurasiSetelahInstalasiTizen
Jikasudahprosesinstalasinya,andasudahsiapmembangunaaplikasiTizen.
PanduanDasarPemrogramanTizen
121KonfigurasiSetelahInstalasiTizen
MengenalTizenDevelopmentIDESetelahdiinstallsemuaSDKTizentermasukIDEnya,kitaakanmelihatmenuTizenIDEsepertiyangterlihatpadagambardibawahini.
KlikmenuTizenIDE-x.ypadamenuanda.
PanduanDasarPemrogramanTizen
122MengenalTizenDevelopmentIDE
Pertamakalikitaakanditanyakanfolderuntukworking.Pilihfolderkerjaanda.
Jikasudah,kliktombolOK.DanakhirnyakitamendapatkanTizenIDEsepertiyangterlihatpadagambardibawahini.
Secaraumum,TizenIDEmiripdenganEclipse.Ya!!,karenaTizenIDEdikembangkandariEclipseIDE.
PanduanDasarPemrogramanTizen
123MengenalTizenDevelopmentIDE
TizenEmulatorTidakperlumemilikiperangkatberbasisTizenuntukmengujiaplikasiTizenkitaberhasilatautidak.
TizenEmulatormemungkingkankitamembuataplikasiTizendengancepat.
DenganmengklikmenuEmulatorManager-x.ydimanax.yadalahversiaplikasi,kitaakanmendapatkanaplikasiTizenEmulatorManagersepertiyangterlihatpadagambardibawahini.
PanduanDasarPemrogramanTizen
124MengenalTizenEmulator
MembuatTizenEmulatorBaruKitadapatmembuatEmulatorbarumelaluiEmulatorManager.CukupklikCreateNewpadaformmenudepandibagiantabmobile.
Jikasudahdiklik,kitaakanmelihatpropertidariTizenEmulatorini.Contohtampilansepertiyangterlihatpadagambardibawahini.
PanduanDasarPemrogramanTizen
125MengenalTizenEmulator
IsinamaEmulatordanbeberapafiturlainnyasepertiresolusidanMemory.SesuaikandengankapasitasMacyangdimiliki.
Jikasudah,kliktombolConfirmuntukmenyimpannya.Contohhasilnyadapatdilihatpadagambardibawahini.
PanduanDasarPemrogramanTizen
126MengenalTizenEmulator
PanduanDasarPemrogramanTizen
127MengenalTizenEmulator
ApabilakitainginmengeditTizenEmulator,kitacukupklikikonEmulatordanklikikoneditsebelahkanansepertiyangterlihatpanahwarnamerahdigambardibawahini.
MenjalankanTizenEmulatorUntukmenjalankanTizenEmulator,kitadapatlangsungmengklikpanahdariEmulatoryangtelahdibuatsepertiyangterlihatpadagambardibawahini.
PanduanDasarPemrogramanTizen
128MengenalTizenEmulator
SelanjutnyakitaakanmelihatkotakdialogTizenEmulator.ButuhwaktuuntukmenampilkanisidariTizenOSini.
PanduanDasarPemrogramanTizen
129MengenalTizenEmulator
Contohhasilnyadapatdilihatpadagambardibawahini.
GeserpadalayarTizenEmulatordenganmenggunakanMouseuntukmelihatisidariTizenEmulatorini.ContohTizenSmartphoneEmulatoryangmenampilkanisibeberapaaplikasiTizen.
PanduanDasarPemrogramanTizen
130MengenalTizenEmulator
PanduanDasarPemrogramanTizen
131MengenalTizenEmulator
HelloTizenPadasesiinikitaakanmembuatapliaksisederhanayaitu"helloworld"yangmenampilkantulisanpadaaplikasiTizenMobile.
MembuatProyekBaruPadasesiinikitamenggunakanTizenIDEuntukmembuataplikasiTizendengantargetplatformMobile.
PadaTizenIDEklikmenuFile->New->Project.
Setelahdiklikmenunya,kitaakanmelihatkotakdialogpembuatanprojectbaru.PilihTizenNativeProjectpadakategoriTizen.Contohtampilannyasepertipadagambardibawahini.
PanduanDasarPemrogramanTizen
132HelloWorldTizen
KemudianakanmelihatbeberapatemplateprojectyangdisediakanolehTizen.Padakasusini,kitamemilihBasicUIyangberadapadakategoriMobile-x.ydimanax.yversidariSDKnya.
Berinamaprojectsesuaikeinginan,misalkanHelloTizen.Jikasudah,kliktombolFinish.
PanduanDasarPemrogramanTizen
133HelloWorldTizen
Apabilaprojectpembuatanprojectbarusudahselesai,kitaakanmendapatkankodeprogramsesuaidengantemplateyangdipakai.
PanduanDasarPemrogramanTizen
134HelloWorldTizen
MembuatProgramKalaukitaperhatikan,dengantemplateBasicUI,kitaakanmelihatduafile,misalkannamaprojectHelloTizen,yaituhellotizen.hdanhellotizen.c.
PanduanDasarPemrogramanTizen
135HelloWorldTizen
Kalaukitabukafilehellotizen.cdankitaperhatikanfunctioncreate_base_gui(),kitaakanmelihataplikasiiniakanmembuatGUIdanmemasukkansebuahobjeklabeldimanainidibuatdengancaramemanggilelm_label_add().
Kemudianpemberiannilaitextpadaobjeklabel,kitamenggunakanfungsielm_object_text_set().
PanduanDasarPemrogramanTizen
136HelloWorldTizen
Berikutinipotongankodeprogramnya.
PanduanDasarPemrogramanTizen
137HelloWorldTizen
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
JalankanProgramkeTizenEmulator
ApabilakitasudahmembuatTizenEmulator,kitadapatmenjalankandenganmengklikkananprojectdanpilihmenuRunAs.
PanduanDasarPemrogramanTizen
139HelloWorldTizen
KemudiankitakanmendapatkankotakdialogTizenEmulator.PilihEmulatornya.JikasudahkliktombolLaunch.
PanduanDasarPemrogramanTizen
140HelloWorldTizen
AplikasiTizenEmulatorakanrunning.
PanduanDasarPemrogramanTizen
141HelloWorldTizen
Jikatidakmunculaplikasinya,lakukanRunAslagisehinggakitaakanmendapatkanaplikasimunculsepertipadagambardibawahini.
PanduanDasarPemrogramanTizen
142HelloWorldTizen
JalankanProgramkePeralatanTizen
UntukmenjalankanaplikasikeTizen,kitahubungkanSmartphoneTizenkekomputerdankonfigurasikedevice.
Kemudianprosesrunningsepertibiasa.
DebuggingBagipembacayangsudahpernahmemilikipengalamanmenggunakanEclipsemakaprosesdebuggingpadaTizenIDEmemilikipengalamanyangsama.
Cukupklikkananpadakodeprogramyangakandianalisadannantiakankeluarmenu,pilihAddBreakPoint.
PanduanDasarPemrogramanTizen
143HelloWorldTizen
Jikasudah,kitaakanmelihatbulatanwarnabirudisampingkodeprogram.
PanduanDasarPemrogramanTizen
144HelloWorldTizen
SekarangkitamelakukandebuggingdengancaramengklikkananprojectnyadanpilihmenuDebugAs.
PanduanDasarPemrogramanTizen
145HelloWorldTizen
Prosessebuggingberjalan.UntuktracebisamenggunakanF5atauF6.
Nantiprosesiniakanmasukkebreakpointyangtelahkitatentukan.
PanduanDasarPemrogramanTizen
146HelloWorldTizen
Kliktombolikonmerahuntukmengakhiriprosesdebugging.
KlikTizenNativebagiankananatasuntukkembalikemodecodeeditorawalnya.
PanduanDasarPemrogramanTizen
147HelloWorldTizen
Ok,cukupmudahbukanprosesdebuggingnya?
PanduanDasarPemrogramanTizen
148HelloWorldTizen
ProjectTizenPertamaku:KalkulatorSederhanaPadasesiinikitaakanmembuataplikasisederhanayaitukalkulatordenganmenggunakanNativeApplication.
TujuanHalyangingindicapaidisiniadalahbagaimanakitamemanfaatkankomponenUIstandardyangdisediakanolehTizenSDKsepertilabel,grid,buttondansebagaimanya.
MembuatProyekBaruPertamakalikitamembuatprojectbarumelaluimenuFile->News->TizenNativeProject.PilihtemplateBasicUIpadakategoriMOBILE.isinamaproject,misalkanMyCalculator.
Jikasudah,kliktombolFinish.
Nantihasildariprojectinikitaakanddapatkanduafile.hdan.c.MisalkannamaprojectnyaadalahMyCalculatormakaakandihasilkanfilemycalculator.hdanmycalculator.c.
PanduanDasarPemrogramanTizen
149ProyekTizenPertamaku
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
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
{
appdata_s*ad=data;
intcurrent_degree=elm_win_rotation_get(obj);
if(current_degree!=0&¤t_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
}
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
{
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
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
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
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
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
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
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
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
CukupklikkananpadaprojectkitadanpilihBuildProject.
Hasilkompilasinyabisadilihatdibagianbawahnya.
PanduanDasarPemrogramanTizen
162ProyekTizenPertamaku
KlikRununtukmenjalankanemulatorTizen.Danpilihemulatornya.
Jikasudah,kliktombolLaunchuntukmenjalankanemulatornya.
Tekantombolpadakalkulatorsehinggahasilnyaakanmunculdilayar.
PanduanDasarPemrogramanTizen
163ProyekTizenPertamaku
MenjalankanProgramTizenkeSmartphoneTizenUntukmenjalankankeTizensmartphone,kitacukuparahkanketargetperalatanyangsudahterhubung.
Jikasukses,kitaakanmelihataplikasinyamunculpadaTizensmartphonetersebut.
PanduanDasarPemrogramanTizen
164ProyekTizenPertamaku
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
PenulisBerikutprofilepenulisdaribukuini.
Fajri
Fajri,S.Kom.M.Kom.lahirdiBukittinggipadatanggal3Oktober1991.IamenyelesaikanstudiSarjanadanMagisterpadaBidangIlmuKomputerdiUniversitasIndonesiadalamwaktu4,5tahundengankeduanyameraihpredikatCumlaude.SampaisaatiniFajrimerupakanseorangpeneliti,developerdanjugadatascientistdiSamsungResearchIndonesiayangaktifbergerakdibidangPerolehanInformasi,PengolahanBahasaManusia,PembelajaranMesindanjugaTizenOperatingSystem.Karya-karyailmiahnyabisadilihatpadajournalIEEE,SpringerdanjugaACM.
PanduanDasarPemrogramanTizen
166ProfilPenulis
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
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
Top Related