APLIKASI PENERJEMAH
DENGAN MEDIA TEXT RECOGNIZER
TUGAS AKHIR
SARI MAWAR 152406109
PROGRAM STUDI D3 TEKNIK INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGEAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2018
APLIKASI PENERJEMAH
DENGAN MEDIA TEXT RECOGNIZER
TUGAS AKHIR
Diajukan untuk melengkapi tugas dan memenuhi syarat memperoleh Ahli Madya
SARI MAWAR 152406109
PROGRAM STUDI D3 TEKNIK INFORMATIKA
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM UNIVERSITAS SUMATERA UTARA
MEDAN 2018
APLIKASI PENERJEMAH
DENGAN MEDIA TEXT RECOGNIZER
ABSTRAK
Pada zaman sekarang, perkembangan ilmu pengetahuan dibidang teknik komputer sangat pesat terutama pada perkembangan teknologi mobile, yang salah satunya merupakan kemajuan teknologi ponsel. Di saat ini teknologi mobile banyak digunakan oleh masyarakat. Maka dari itu penulis membuat sebuah aplikasi mobile yang bisa digunakan dengan mudah untuk menerjemahkan kalimat kedalam bahasa asing . Karena bahasa merupakan sarana untuk berkomunikasi. Pengetahuan tentang bahasa sangatlah penting karena dalam sebuah percakapan atau pembicaraan memerlukan sebuah bahasa. Di dunia ini banyak sekali bahasa, antara lain bahasa Indonesia, Inggris, Jepang, Korea, Jerman dan masih banyak lagi. Sarana untuk mempelajari bahasa asing yaitu biasanya dengan menggunakan kamus. Namun karena menggunakan kamus akan memakan banyak waktu dan kurang praktis sehingga dengan penulis membuat aplikassi translator ini, penulis berharap agar masyarakat dapat lebih mudah belajar dan dapat dengan mudah menerrjemahkan suatu kalimat kedalam bahasa asing. Selain itu aplikasi ini translator yang penulis buat sangan praktis dan mudah digunakan.
Kata kunci : Android, Tugas Akhir, Aplikasi Penerjemah, Mobile.
TRANSLATION APPLICATION WITH TEXT RECOGNIZER MEDIA
ABSTRACT
Today, the development of science in the field of computer engineering is very rapid, especially in the development of mobile technology, one of which is the advancement of mobile technology. At present mobile technology is widely used by the public. Therefore the author makes a mobile application that can be used easily to translate sentences into foreign languages. Because language is a means to communicate. Knowledge of language is very important because in a conversation or conversation requires a language. In this world there are many languages, including Indonesian, English, Japanese, Korean, German and many more. Means for learning foreign languages are usually by using a dictionary. But because using a dictionary will take a lot of time and is less practical so that with the author making this translator application, the authors hope that the community can learn more easily and can easily translate a sentence into a foreign language. In addition, this application is a translator that the author makes it practical and easy to use.
Keywords: Android, Final Project, Translator Application, Mobile
PENGHARGAAN
Puji dan syukur penulis panjatkan kepada Allah SWT. Tuhan Yang Maha Pemurah dan Maha Penyayang, dengan limpahan karunia-Nya Penulis dapat menyelesaikan penyusunan Tugas Akhir ini dengan judul Alikasi Penerjemah Dengan Media Text Recognizer.
Terimakasih penulis sampaikan kepada Bapak Dr. Poltak Sihombing,M.KOM selaku pembimbing yang telah meluangkan waktunya selama penyusunan tugas akhir ini. Terimakasih kepada Ibu Drs. Normalina Napitupulu, M.Sc selaku Ketua Program Studi D3 Teknik Informatika FMIPA USU,Terimakasih Kepada Bapak Drs.
Sawaluddin, M.IT selaku pembimbing akademik, seluruh Staff dan Dosen Program Studi D3 Teknik Informatika FMIPA USU, pegawai FMIPA USU dan rekan-rekan kuliah. Akhirnya tidak terlupakan terimakasih kepada Ayah saya Sutrisno, Ibu saya Enny br. Simbolon, keluarga yang selama ini memberikan bantuan dan dorongan yang diperlukan, Kepada Teman seperjuangan D3 Teknik Informatika Kom D 2015 Semoga Tuhan Yang Maha Esa akan membalasnya.
Medan, 22 Oktober 2018
Sari Mawar
DAFTAR ISI
Halaman
PENGESAHAN LAPORAN TUGAS AKHIR i
ABSTRAK ii
ABSTRACT iii
PENGHARGAAN iv
DAFTAR ISI v
DAFTAR TABEL vii
DAFTAR GAMBAR viii
BAB 1 PENDAHULUAN 1
1.1 Latar Belakang 1
1.2 Rumusan Masalah 2
1.3 Batasan Masalah 2
1.4 Tujuan Penelitian 2
1.5 Manfaat Penelitian 2
1.6 Metodologi Penelitian 3
1.7 Sistematika Penulisan 3
BAB 2 TINJAUAN PUSTAKA 5
2.1 Sistem Operasi Android 5
2.2 Perkembangan Android 6
2.3 Arsitektur Android 10
2.4 Bahasa Pemograman Java 12
2.5 Flowchart 13
BAB 3 PERANCANGAN SISTEM 16
3.1 Perancangan Sistem 16
3.2 Pemodelan Sistem 17
3.3 Flowchart Aplikasi 18
3.4 Perancangan Antarmuka 19
BAB 4 IMPLEMENTASI SISTEM 22
4.1 Pengertian Implementasi Sistem 22 4.2 Tujuan Implementasi Sistem 22 4.3 Tampilan Aplikasi Sistem 23 4.3.1 Tampilan Spalsh Screen 23 4.3.2 Tampilan Menu Home 24 4.3.3 Tampilan Menu Terjemahan 25
4.3.4 Tampilan Menu About 26
BAB 5 PENUTUP 27
5.1 Kesimpulan 27
5.2 Saran 27
DAFTAR PUSTAKA 28
LAMPIRAN 29
DAFTAR TABEL
Nomor Judul Halaman
Tabel
2.1 Tabel Simbol Flowchart 13
DAFTAR GAMBAR
Nomor Judul Halaman
2.1 Komponen Utama Sistem Operasi Android 12 3.1 Diagram Aplikasi Penerjemah Dengan Media Text Recognizer 17 3.2 Flowchart Aplikasi Penerjemah Dengan Media Text Recognize 18
3.3 Antar Muka Menu Home 19
3.4 Antar Muka Menu Terjemahan 20
3.5 Antar Muka Menu Edit Text 20
3.6 Antar Muka Menu About 21
4.1 Splash Screen dari Aplikasi 23
4.2 Tampilan Menu Home 24
4.3 Langkah-langkah Cara Menggunakan Aplikasi Terjemahan 25
4.4 Hasil Dari Terjemahan 26
4.5 Tampilan Menu About 26
BAB 1 PENDHULUAN
1.1 Latar Belakang
Era Globalisasi sekarang ini kemajuan teknologi sangat berkembang dengan begitu pesat. Salah satu kemajuan teknologi tersebut ialah teknologi informasi (TI) yang telah merambah keberbagai bidang kehidupan manusia. Dengan perkembangan teknologi yang kian maju, manusia dapat membuat berbagai macam peralatan sebagai alat bantu dalam menjalankan berbagai aktivitas untuk mendukung produktifitas. Seiring dengan tingkat mobilitas yang tinggi, beberapa tahun terakhir tengah marak perangkat bergerak atau mobile device.
Salah satu perangkat mobile yang paling pesat adalah Handphone dimana hampir setiap orang memilikinya. Handphone yang sedianya sebagai alat komunikasi, saat ini sudah lebih dari fungsi dasarnya. Berbagai macam fitur telah ditanamkan, seperti pengolah gambar dan video, pengolah dokumen dan lain sebagainya. Hal ini tak lepas dari penggunaan Sistem Operasi pada Handphone.
Layaknya pada komputer, handphone pun dapat di-install berbagai macam aplikasi yang diinginkan.
Android sebagai Sistem Operasi berbasis linux yang dapat digunakan di berbagai perangkat mobile. Android memiliki tujuan utama untuk memajukan inovasi piranti telepon bergerak agar pengguna mampu mengeksplorasi kemampuan dan menambah pengalaman lebih dibandingkan dengan platform mobile lainnya.
Hingga saat ini Android terus berkembang, baik secara sistem maupun aplikasinya.
Dengan kemajuan teknologi yang sekarang ini semua aplikasi bisa dibuat melalui android. Oleh karena itu, akan dibuat sebuah aplikasi mobile sebagai penerjemah.
Aplikasi ini dibuat untuk membantu mempermudah pengguna Android jika ingin menerjemahkan suatu kata-kata. Karena jika harus mencari dengan translator yang ada di Google sedikit lebih memakan waktu, karena dijaman sekarang semua orang ingin lebih cepat melakukan semua hal agar tak membuang waktu.
1.2 Rumusan Masalah
Berdasarkan uraian yang terdapat dalam latar belakang, maka yang menjadi pokok permasalahan dalam penelitian ini adalah sebagai berikut :
1. Bagaimana membuat rancangan aplikasi penerjemah semenarik mungkin agar menarik minat masyarakat untuk menggunakan aplikasi ini dalam mobile phone android
2. Bagaimana membuat rancangan aplikasi penerjemah yang mudah digunakan dan mudah dipahami dengan demikian diharapkan para orang awam dapat dengan mudah menerjemahkan suatu kalimat.
1.3 Batasan Masalah
Adapun Batasan Masalah dalam pembuatan aplikasi ini yaitu:
1. Fitur Aplikasi ini hanya dapat menerjemahkan objek tulisan yang baik dan jelas.
2. Aplikasi ini tidak dapat menerjemahkan kalimat dalam bentuk audio.
1.4 Tujuan Penelitian
Tujuan Perancangan Aplikasi Penerjemah Dengan Media Text Recognizer ini adalah:
1. Menciptakan aplikasi translator dengan tampilan desain yang sederhana sehingga memudahkan masyarakat untuk menggunakannya.
2. Membuat aplikasi yang praktis dan mudah digunakan oleh semua kalangan.
3. Memaksimalkan penggunaan smartphone android agar lebih bermanfaat lagi dalam kehidupan sehari-hari.
1.5 Manfaat Penelitian
Manfaat dari penulisan ini adalah sebagai berikut:
1. Membantu pengguna smartphone Android untuk dapat menerjemahkan kata atau kalimat kedalam bahasa yang diinginkan.
2. Meminimalisir waktu yang terpakai untuk menerjemahkan kalimat tanpa harus mengetik kata-katanya terlebih dahulu.
1.6 Metodologi Penulisaan
Metode adalah suatu cara atau teknik yang sistematik untuk mengerjakan atau menyelesaikan sesuatu. Berikut ini metodologi penelitian yang gunakan dalam membangun aplikasi ini, yaitu :
1. Pembelajaran Literatur
Metode ini dilaksanakan dengan melakukan studi kepustakaan melalui membaca buku-buku maupum artikel-artikel yang dapat mendukung penulisan tugas akhir.
2. Analisis Sistem
Dilakukan untuk memperoleh informasi tentang sistem, menganalisis data–data yang ada dalam sistem dan juga menganalisis poin – poin masalah pada sistem terutama mengenai kelebihan dan kekurangan sistem.
3. Perancangan (Desain)
Membangun / mengembangkan sistem yang diusulkan berupa perancangan sistem data flow diagram (DFD), dimana tahapan ini dapat dibangun dengan memperoleh informasi diantaranya memastikan informasi yang didapat akurat, memberikan ulasan-ulasan yang terperinci.
3. Penulisan Program (Coding), mebuat program didalam aplikasi yang dibuat agar dapat berjalan sesuai dengan yang difungsikan.
5. Uji Program.
Pengujian akan dilaksanakan jika program telah selesai dikerjakan. Bila saat pengujian terdapat kesalahan maka perlu adanya perbaikan terhadap program agar menghasilkan hasil yang maksimal.
1.7 Sistematika Penulisan
Agar dapat memberikan gambaran yang jelas pada penulisan Tugas Akhir ini, maka penulis membaginya dalam beberapa bab sebagai berikut.
BAB 1 : PENDAHULUAN
Bab ini menguraikan tentang latar belakang pembangunan aplikasi, perumusan masalah, batasan masalah, tujuan penelitian, manfaat penelitian, metodologi penulisan, hingga sistematika penulisan Tugas Akhir ini.
BAB 2 : LANDASAN TEORI
Bab ini menguraikan tentang teori-teori dasar dalam pembangunan aplikasi andoid. Mulai dari pengertian apa itu android hingga apa apa saja yang dibutuhkan untuk memulai pemrograman andoid.
BAB 3 : PERANCANGAN SISTEM
Bab ini menguraikan mengenai perancangan sistem mulai dari perancangan layout, diagram konsepsi sistem, hingga flowchart sistem.
BAB 4 : IMPLEMENTASI SISTEM
Bab ini menguraikan tentang bagaimana proses lanjutan dari perancangan sistem, menguraikan secara detail bagian implementasi sistem dan menyorot apakah implementasi sesuai dengan perancangan sistem.
BAB 5 : KESIMPULAN DAN SARAN
Bab ini menguraikan tentang kesimpulan dan saran yang dikutip oleh penulis dalam proses pembangunan aplikasi.
BAB 2
TINJAUAN PUSTAKA
2.1 Sistem Operasi Android
Android adalah sistem operasi yang berbasis Linux untuk telepon seluler seperti telepon pintar dan komputer tablet. Android menyediakan platform terbuka bagi para pengembang untuk menciptakan aplikasi mereka sendiri untuk digunakan oleh bermacam peranti bergerak. Awalnya, Google Inc. membeli Android Inc., pendatang baru yang membuat peranti lunak untuk ponsel. Kemudian untuk mengembangkan Android, dibentuklah Open Handset Alliance, konsorsium dari 34 perusahaan peranti keras, peranti lunak, dan telekomunikasi, termasuk Google, HTC, Intel, Motorola, Qualcomm, T-Mobile, dan Nvidia.
Pada saat perilisan perdana Android, 5 November 2007, Android bersama Open Handset Alliance menyatakan mendukung pengembangan standar terbuka pada perangkat seluler. Di lain pihak, Google merilis kode–kode Android di bawah lisensi Apache, sebuah lisensi perangkat lunak dan standar terbuka perangkat seluler. Di dunia ini terdapat dua jenis distributor sistem operasi Android. Pertama yang mendapat dukungan penuh dari Google atau Google Mail Services (GMS) dan kedua adalah yang benar–benar bebas distribusinya tanpa dukungan langsung Google atau dikenal sebagai Open Handset Distribution (OHD).
Pada Juli 2005, Google bekerjasama dengan Android Inc., perusahaan yang berada di Palo Alto, California Amerika Serikat. Para pendiri Android Inc. bekerja pada Google, di antaranya Andy Rubin, Rich Miner, Nick Sears, dan Chris White.
Saat itu banyak yang menganggap fungsi Android Inc. hanyalah sebagai perangkat lunak pada telepon seluler. Sejak saat itu muncul rumor bahwa Google hendak memasuki pasar telepon seluler. Di perusahaan Google, tim yang dipimpin Rubin bertugas mengembangkan program perangkat seluler yang didukung oleh kernel Linux. Hal ini menunjukkan indikasi bahwa Google sedang bersiap menghadapi persaingan dalam pasar telepon seluler.
Sekitar September 2007 sebuah studi melaporkan bahwa Google mengajukan hak paten aplikasi telepon seluler (akhirnya Google mengenalkan Nexus One, salah
satu jenis telepon pintar GSM yang menggunakan Android pada sistem operasinya.
Telepon seluler ini diproduksi oleh HTC Corporation dan tersedia di pasaran pada 5 Januari 2010).
Pada 9 Desember 2008, diumumkan anggota baru yang bergabung dalam program kerja Android ARM Holdings, Atheros Communications, diproduksi oleh Asustek Computer Inc, Garmin Ltd, Softbank, Sony Ericsson, Toshiba Corp, dan Vodafone Group Plc. Seiring pembentukan Open Handset Alliance, OHA mengumumkan produk perdana mereka, Android, perangkat bergerak (mobile) yang merupakan modifikasi kernel Linux 2.6. Sejak Android dirilis telah dilakukan berbagai pembaruan berupa perbaikan bug dan penambahan fitur baru. Telepon pertama yang memakai sistem operasi Android adalah HTC Dream, yang dirilis pada 22 Oktober 2008. Pada penghujung tahun 2009 diperkirakan di dunia ini paling sedikit terdapat 18 jenis telepon seluler yang menggunakan Android.
2.2 Perkembangan Android
Perkembangan versi-versi android menurut artikel yang dikutip dari tekno.kompas.com ialah sebagai berikut:
1. Android 1.0
Sistem operasi ini bisa dibilang sebagai android yang masih sangat sederhana.
Pengguna diajak beradaptasi dengan peradaban baru menjelajah sebuah perangkat telekomunikasi mobile. Pada versi inilah Google untuk pertama kalinya memperkenalkan mekanisme pengecekkan notifikasi yang kerap diistilahkan pull-down notification. Selain notifikasi, dua komponen pada Android 1.0 yang masih digunakan hingga kini adalah widget aplikasi, serta toko aplikasi Google Play Store yang kala itu masih bernama "Market". Sistem operasi ini juga menyatukan layanan Gmail. Dua aplikasi tersebut, Gmail dan Market, menjadi layanan bawaan paling purba yang dipatrikan Google pada Android 1.0.
2. Android 1.5 Cupcake
Ini adalah debut versi Android yang menggunakan nama kudapan manis. Tradisi tersebut dipertahankan hingga sekarang. Pada Cupcake, Google juga memperkenalkan SDK widget untuk developer pihak ketiga. Gunanya agar
aplikasi pihak ketiga bisa memiliki widget sendiri layaknya aplikasi bawaan Google. Dua pembaruan signifikan pada Cupcake juga meliputi kemampuan perekaman video dengan kamera ponsel, serta kemampuan keyboard layar sentuh.
3. Android 1.6 Donut
Masih di tahun yang sama, Google tak sabar menghadirkan Android baru bertajuk "Donut". Pada versi ini, Google mengumumkan bahwa Android bisa digunakan untuk perangkat mobile dengan ukuran layar berapa saja.Android Donut juga memunculkan kolom pencarian pada antarmuka ponsel. Pengguna bisa mencari informasi di internet, file lokal, kontak, dan apa saja secara lebih cepat dengan kolom tersebut.
4. Android 2.0 Eclair
2009 memang merupakan tahun produktif bagi Google dalam menelurkan sistem operasi. Eclair menjadi Android pertama yang menghadirkan layanan navigasi Google Maps. Sistem tersebut menjadi awal mula era GPS yang sekarang bukan cuma ada di ponsel, tapi juga di mobil-mobil modern. Eclair juga menjadi Android pertama yang mendukung HTML5 pada peramban sehingga bisa memutar video. Kemampuan membuka layar alias unlock-screen dengan mekanisme menyapu atau swipe juga diperkenalkan pada Eclair.
5. Android 2.2 Froyo
Tahun 2010, selain meluncurkan Android Froyo, Google juga menghadirkan ponsel Nexus pertama yang dinamai "Nexus One". Ada beberapa pembaruan pada Froyo dibandingkan pendahulunya. Tentu saja pengguna Nexus One menjadi yang pertama mendapat update Android tersebut. Dari segi tampilan, Android Froyo memungkinkan lima panel layar depan alias home screen.
Sebelumnya, batas panel cuma sampai tiga saja. Froyo juga menambah pilihan keamanan penguncian bagi pengguna. Dari yang sebelumnya cuma penguncian pola (pattern lock), belakangan dilengkapi dengan opsi penguncian PIN atau PIN lock.
6. Android Gingerbread
Menyadari kebutuhan user akan selfie, Google pun membangun versi Gingerbread dengan kemampuan kamera depan untuk membidik foto mandiri.
Pada versi ini, pengguna juga bisa melihat desain ulang antarmuka yang cukup signifikan. Selain itu, dari segi fungsi, Gingerbread memungkinkan pengguna memencet keyboard virtual secara berbarengan alias multitouch. Kemampuan ini dipertahankan hingga sekarang dengan berbagai peningkatan kinerja.
7. Android Honeycomb
Sistem operasi ini mendukung kemampuan tombol virtual untuk home, back, dan menu, untuk pertama kalinya. Sasarannya pun lebih ke perangkat tablet ketimbang smartphone.
8. Android Ice Cream Sandwich
Versi ini memboyong kemampuan pada Honeycomb tapi lebih menyasar smartphone. Contohnya saja kemampuan tombol virtual yang hingga sekarang banyak diimplementasikan para vendor. Beberapa pembaruan fitur lainnya mencakup kemampuan membuka layar menggunakan wajah (face unlock), analisa penggunaan data internet, serta paket aplikasi bawaan dari vendor yang mencakup kalendar, mail, kalkulator, dan lainnya.
9. Android Jelly Bean
Nah, ini dia versi Android yang membawa pembaruan cukup signifikan setelah beberapa kali update yang dilakukan Google hanya membawa perbedaan minor.
Salah satunya, Jelly Bean memungkinkan pengguna menggulir (scroll) cepat home screen ke bawah untuk melihat kumpulan informasi penting, seperti agenda, email, dan laporan cuaca. Sebelumnya, pengguliran ke bawah cuma memperlihatkan notifikasi aplikasi. Selain itu, Jelly Bean merupakan upaya pertama Google untuk menghadirkan asisten digital yang dinamai Google Now.
Mulai dari versi ini, Google semakin berhasrat untuk membuat asisten digital yang lebih hidup, manusiawi, dan relevan bagi pengguna.
10. Android 4.4 KitKat
Butuh setahun bagi Google untuk menghadirkan KitKat. Versi Android ini memberikan suasana yang segar dengan pembaruan antarmuka beraksen putih dan biru muda. Pada KitKat, Google menghadirkan perintah pencarian menggunakan suara atau disebut "Ok, Google". Fitur ini dirundung pujipujian dari para pakar teknologi. Di saat bersamaan, Google juga meluncurkan aplikasi pesan singkat Hangouts untuk pertama kalinya. Sayangnya, belakangan
Hangouts dilabeli sebagai layanan Google yang gagal karena tak menuai penetrasi yang memuaskan.
11. Android 5.0 Lollipop
Pembaruan yang mencolok pada Lollipop tampak dari sisi desainnya yang diperhalus dan disesuaikan dengan zaman. Selain itu, fitur-fitur yang sudah hadir pada Android sebelumnya ditingkatkan. Inovasi kurang terasa pada versi ini.
Satu-satunya yang lumayan baru adalah dukungan untuk gambar berformat RAW. Format itu memungkinkan para ilustrator,fotografer,atau graphic designer menyimpan file dengan ukuran besar agar bisa diedit tanpa mengurangi kualitas.
12. Android 6.0 Marshmalow
Menu aplikasi pada Android Marshmallow benar-benar dibuat baru. Desainnya membuat pengguna merasa naik kelas dari versi sebelumnya karena lebih dinamis. Selain itu, ada juga fitur memory manager yang memungkinkan pengguna mengecek penggunaan memori pada tiap aplikasi. Rentan waktu pengecekannya bisa disetel dari tiga jam yang lalu hingga 24 jam sebelumnya.
Keamanan juga mendapat peningkatan pada versi ini. Google memungkinkan vendor menyematkan sensor pemindai sidik jari karena sudah didukung Marshmallow.
13. Android 7.0 Nougat
Nougat adalah versi Android termutakhir yang baru diperkenalkan pada ajang kumpul developer Google I/O, pertengahan 2016 ini. Beberapa lama setelahnya, Google menghadirkan Nougat secara resmi untuk publik. Pembaruan paling mendasar pada versi Nougat adalah kehadiran Google Assistant yang menggantikan Google Now. Asisten digital tersebut lebih bisa diandalkan untuk menjalankan pelbagai fungsi. Fitur-fitur baru lainnya mencakup layar split- screen saat dipakai multitasking, serta fitur Doze yang telah dikenalkan di versi Android Marshmallow namun telah ditingkatkan. Android Nougat juga memiliki dukungan terhadap platform virtual reality terbaru Google.
2.3 Arsitektur Android
Arsitektur android Sistem operasi Android memiliki 4 lapisan (layer) yang merupakan komponen sistem Android. Secara garis besar arsitektur Android dapat dijelaskan sebagai berikut :
1. Applications dan Widgets
Applications dan Widgets ini adalah layer di mana kita berhubungan dengan aplikasi saja, di mana biasana kita download aplikasi kemudian kita lakukan instalasi dan jalankan aplikasi tersebut. Di Layer terdapat aplikasi inti termasuk klien email, program SMS, kalender, peta, browser, kontak, dan lain-lain. Semua aplikasi ditulis menggunakan bahasa pemrograman Java.
2. Applications Frameworks
Android adalah "Open Development Platform" yaitu Android menawarkan kepada pengembang atau memberi kemampuan kepada pengembang untuk membangun aplikasi yang bagus dan inovatif. Pengembang bebas untuk mengakses perangkat keras, akses informasi resources, menjalankan service background, mengatur alarm, dan menambahkan status notifications, dan sebagainya. Pengembang memiliki akses penuh menuju API framework seperti yang dilakukan oleh aplikasi yang kategori inti. Arsitektur aplikasi dirancang supaya kita dengan mudah dapat menggunakan kembali komponen yang sudah digunakan (reuse).
Sehingga bisa kita simpulkan Applications Framework ini adalah layer di mana para pembuat aplikasi melakukan pengembangan/pembuatan aplikasi yang akan dijalankan di sistem operasi android, karena pada layer inilah aplikasi dapat dirancang dan dibuat, seperti content-providers yang berupa sms dan panggilan telepon.Komponen-komponen yang termasuk di dalam Applications Frameworks adalah sebagai berikut :
a) Views
b) Content Providers c) Resource Manager d) Notification Manager e) Activity Manager
3. Libraries
Libraries ini adalah layer di mana fitur-fitur Android berada, biasanya para pembuat aplikasi mengakses Libraries untuk menjalankan aplikasi. Berjalan di atas kernel, Layer ini meliputi berbagai library C/C++ inti seperti Libc dan SSL, serta:
- Libraries media untuk pemutaran media audio dan video - Libraries untuk manajemen tampilan
- Libraries Graphics mencakup SGL dan OpenGL untuk grafis 2D dan 3D - Libraries SWLite untuk dukungan database
- Libraries SSL dan WebKit terintegrasi dengan web browser dan security - Libraries liveWebcore mencakup modern web browser dengan engine Embeded web view
- Librares 3D yang mencakup implementasi OpenGL S 1.0 API's 4. Android Run Time
Layer yang membuat aplikasi Android dapat dijalankan di mana dalam prosesnya menggunakan implementasi Linux. Dalvik Virtual Machine (DVM) merupakan mesin yang membentuk dasar kerangka aplikasi Android. Di dalam Android Run Time dibagi menjadi dua bagian yaitu :
- Core Libraries : Aplikasi Android dibangun dalam bahasa java, sementara Dalvik sebagai virtual mesinnya bukan Virtual Machine Java, sehingga diperlukan sebuah Libraries yang berfungsi untuk menterjemahkan bahasa java/C yang ditangani oleh Core Libraries
- Dalvik Virtual Machine : Virtual mesin berbasis register yang dioptimalkan untuk menjalankan fungsi-fungsi secara efisien, di mana merupakan pengembangan yang mampu membuat linux kernel untuk melakukan threading dan manajemen tingkat rendah.
5. Linux Kernel
Linux Kernel adalah layer di mana inti dari operating sistem dari Android itu berada. Berisi file-file system yang mengatur sistem processing, memory, resource, driver, dan sistem-sistem operasi android lainnya. Linux kernel yang digunakan android adalah linux kernel relase 2.6.
Gambar 2.1 Komponen Utama Sistem Operasi Android
2.4 Bahasa Pemograman Java
Java adalah bahasa pemrograman tingkat tinggi yang berorientasi objek dan program java tersusun dari bagian yang disebut kelas. Kelas terdiri atas metode- metode yang melakukan pekerjaan dan mengembalikan informasi setelah melakukan tugasnya. Para pemrogram Java banyak mengambil keuntungan dari kumpulan kelas di pustaka kelas Java,yang disebut dengan Java Application Programming Interface (API).
Kelas-kelas ini diorganisasikan menjadi sekelompok yang disebut paket (package). Java API telah menyediakan fungsionalitas yang memadai untuk menciptakan applet dan aplikasi canggih. Jadi ada dua hal yang harus dipelajari dalam Java, yaitu mempelajari bahasa Java dan bagaimana mempergunakan kelas pada Java API. Kelas merupakan satu-satunya cara menyatakan bagian eksekusi 30 Universitas Sumatera Utara program, tidak ada cara lain. Pada Java program javac untuk mengkompilasi file kode sumber Java menjadi kelas-kelas bytecode. File kode sumber mempunyai ekstensi *.java. Kompilator javac menghasilkan file bytecode kelas dengan ekstensi *.class. Interpreter merupakan modul utama sistem Java yang digunakan aplikasi Java dan menjalankan program bytecode Java.
Beberapa keunggulan java yaitu java merupakan bahasa yang sederhana. Java dirancang agar mudah dipelajari dan digunakan secara efektif. Java tidak menyediakan fitur-fitur rumit bahasa pemrograman tingkat tinggi, serta banyak pekerjaan pemrograman yang mulanya harus dilakukan manual, sekarang digantikan dikerjakan Java secara otomatis seperti dealokasi memori. Bagi pemrogram yang sudah mengenal bahasa C++ akan cepat belajar susunan bahasa Java namun harus waspada karena mungkin Java mengambil arah (semantiks) yang berbeda dibanding C++.
2.5 Flowchart
Flowchart adalah sebuah diagram umum yang mempresentasikan sebuah algoritma atau proses menggunakan beberapa bangun geometri untuk memperlihatkan langkahlangkah yang dilakukan oleh program dalam menyelesaikan masalah. Secara umum, flowchart juga digunakan di berbagai bidang untuk menganalisis, mendesain, mendokumentasikan, atau mengelola suatu proses atau program.
Flowchart merupakan langkah awal pembuatan program. Setelah flowchart selesai disusun, selanjutnya pemrogram menerjemahkannya ke dalam bentuk program menggunakan bahasa pemrograman. Berikut ini adalah simbolsimbol standar pada sebuah flowchart beserta fungsinya:
Tabel 2.1 Simbol Flowchart
No Nama Simbol Fungsi
1 Terminator Digunakan untuk mewakili simbol start dan end
2 Arrow
Menunjukkan alur proses
3 Rectangle Menunjukkan langkah proses
4 Trapezium Simbol untuk input output
5 Document Digunakan untuk mewakili
output
6 Decisions Simbol yang berfungsi untuk menyatakan keputusan 7 Preparations Simbol yang berfungsi untuk
proses inisialisasi atau pemberian harga awal
8 Connector Simbol untuk keluar masuk
atau penyambungan proses pada halaman yang berbeda 9 Manual Input Simbol untuk memasukkan data secara manual melalui
keyboard
10 Manual operation Simbol yang menunjukkan pengolahan yang tidak dilakukan oleh komputer 11 Predefine Process Simbol untuk pelaksanaan
suatu bagian ( sub-prosedur )
12 Display Simbol yang menyatakan
peralatan output yang digunakan seperti layar,
printer, plotter
13 Magnetic Disk Simbol yang digunakan untuk penyimpanan data ke database
14 Storage Data Simbol yang menyatakan input yang berasal dari disk atau
disimpan ke disk
BAB 3
PERANCANGAN SISTEM
3.1 Perancangan Sistem
Pada saat hendak membuat sebuah sistem yang akan digunakan pada suatu perusahaan, setiap pengembang aplikasi diharuskan membuat sebuah rancangan dari sistem yang ingin dibuat. Rancangan ini bertujuan untuk memberi gambaran umum dari sistem yang akan berjalan nantinya kepada setiap stakeholder. Berikut ini terdapat pula beberapa teori mengenai pengertian perancangan sistem. Menurut Satzinger, Jackson, dan Burd (2012:5), perancangan sistem adalah sekumpulan aktivitas yang menggambarkan secara rinci bagaimana sistem akan berjalan. Hal itu bertujuan untuk menghasilkan produk perangkat lunak yang sesuai dengan kebutuhan user.
Kenneth dan Jane (2006:G12) menjelaskan bahwa perancangan sistem adalah kegiatan merancang detil dan rincian dari sistem yang akan dibuat sehingga sistem tersebut sesuai dengan requirement yang sudah ditetapkan dalam tahap analisa sistem. Lebih lanjut O’Brien dan Marakas (2009:639) menjelaskan bahwa perancangan sistem adalah sebuah kegiatan merancang dan menentukan cara mengolah sistem informasi dari hasil analisa sistem sehingga dapat memenuhi kebutuhan dari pengguna termasuk diantaranya perancangan user interface, data dan aktivitas proses.
Menurut Bentley dan Whitten (2009:160) melalui buku yang berjudul
“system analysis and design for the global enterprise” juga menjelaskan bahwa perancangan sistem adalah teknik pemecahan masalah dengan melengkapi komponen-komponen kecil menjadi kesatuan komponen sistem kembali ke sistem yang lengkap. Teknik ini diharapkan dapat menghasilkan sistem yang lebih baik.
Menurut Jogiyanto H. M (1991) dalam bukunya “Analisis dan Desain Sistem”, perancangan sistem dapat diartikan seperti berikut :
1. Tahap setelah analisis dari siklus pengembangan sistem.
2. Pendefinisian dari kebutuhan-kebutuhan fungsional.
3. Persiapan untuk rancang bangun implementasi.
4. Menggambarkan bagaimana suatu sistem dibentuk.
5 Yang dapat berupa pengambaran perencanaan dan pembuatan sketsa atau pengaturan dari beberapa elemen yang terpisah ke dalam satu kesatuan yang utuh dan berfungsi.
6. Termasuk menyangkut mengkonfigurasi dari komponen perangkat keras dari suatu sistem.
3.2 Pemodelan Sistem
Pemodelan sistem digambarkan agar memudahkan kebutuhan pemakai, dalam melihat bentuk aplikasi yang sesungguhnya dan dilanjutkan dengan flowchart sehingga sistem semakin terihat jelas dan dapat dipergunakan secara maksimal.
Adapun diagram flowchart pada aplikasi Sistem Informasi Kesehatan Gigi dapat dilihat pada gambar 3.1.
Gambar 3.1 Data Diagram Aplikasi Penerjemah Dengan Media Text Recognizer Aplikasi Penerjemah Dengan
Media Text Recognizer
Splash Screen
Tampilan Utama Tampilan Proses Terjemahan
Tampilan About
3.3 Flowchart Aplikasi
Flowchart adalah adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program. Flowchart adalah adalah suatu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses secara mendetail dan hubungan antara suatu proses (instruksi) dengan proses lainnya dalam suatu program.
Tujuan utama dari penggunaan flowchar tadalah untuk menggambarkan suatu tahapan penyelesaian masalah secara sederhana, terurai rapi dan jelas dengan menggunakan simbol-simbol yang standar. Adapun flowchart rancangan aplikasi penerjemah dengan metode text recognizer untuk mempermudah user untuk menerjemahkan suatu kalimat adalah sebagai berikut :
Mulai
Splash
Home
Menu About
Scan Teks
Konten About
Menu Scan Dialog
Terjemaahan
Pilih Terjemahan
Edit
Terjemahan T
Y
Y
Y
Y
Menerjemahkan
Hasil Terjemahan
Selesai Y
Edit Teks Simpan Teks T
T
Tutup Dialog
Y T
T
Gambar 3.2 Flowchart Aplikasi Penerjemah Dengan Media Text Recognizer
3.4 Perancangan Antar Muka
Perancangan Antar Muka merupakan bagian paling penting dari merancang sistem. Dalam proses pengembangan Antarmuka, kita bisa atau mungkin tidak bisa memisahkannya dari seluruh proses pengembangan sebuah produk, walaupun begitu fokus dari dua proses tersebut sangatlah berbeda. Dalam proses pengembangan Antarmuka, Fokus haruslah terletak pada elemen-elemen antarmuka dan objek-objek yang pengguna lihat dan gunakan dibandingkan dengan kemampuan sebuah program. Di bawah merupakan gambar dari rancangan antar muka aplikasi yang penulis buat :
1. Perancangan Antar Muka Menu Home
Gambar 3.3 Antar Muka Menu Home
Logo Dan Nama Aplikasi Menu About
Penanda Layar Scan
2. Perancangan Antar Muka Menu Terjemahan
Gambar 3.4 Antar Muka Menu Terjemahan
3. Perancangan Antar Muka Menu Edit Text
Gambar 3.5 Antar Muka Menu Edit Text Translate to : Pilihan Bahasa Kembali
Tempat Teks yang telah di scan
Menu Edit Button Terjemahan
Tempat Teks yang telah di terjemahkan
Translate to : Pilihan Bahasa Kembali
Tempat Teks yang akan di Edit
Button Simpan
Tempat Teks yang telah di terjemahkan setelah di Edit
4. Perancangan Antar Muka Menu About
Gambar 3.6 Antar Muka Menu About About
Kembali
Berisi Logo Aplikasi, versi Aplikasi dan Data Dari Penulis
BAB 4
IMPLEMENTASI SISTEM
4.1 Pengertian Implementasi Sistem
Implementasi sistem adalah prosedur yang dilakukan untuk menyelesaikan desain yang ada dalam dokumen desain sistem yang disetujui dan menguji, menginstal, memulai, serta menggunakan sistem yang baru atau sistem yang diperbaiki. Implementasi sistem juga merupakan tahap penerapan sistem yang akan dilakukan jika sistem disetujui termasuk program yang telah dibuat pada tahap perancangan sistem agar siap untuk dioperasikan. Penggunaan suatu komputer untuk pemecahan masalah membutuhkan suatu sistem yang baik, sehingga memungkinkan berhasilnya komputer dalam melaksanakan tugasnya, yaitu mengolah data menjadi informasi.
4.2 Tujuan Implementasi Sistem
Sistem setelah dianalisa dan dirancang, maka sistem tersebut siap diterapkan atau diimplementasikan. Tahap implementasi adalah tahap dimana sistem informasi telah digunakan oleh pengguna. Sebelum benar-benar bisa digunakan dengan baik oleh pengguna, sistem harus melalui tahap pengujian terlebih dahulu untuk menjamin tidak ada kendala fatal yang muncul pada saat pengguna memanfaatkan sistemnya. Jika sistem perangkat lunak telah selesai melewati tahap pengujian sistem maka sistem perangkat lunak tersebut telah siap untuk digunakan. Penggunaan sistem perangkat lunak yang baru pada suatu organisasi atau perusahaan kadangkadang merupakan proses yang tidak mudah sehingga diperlukan latihan bagi pengguna sebelum digunakan. Adapun beberapa tujuan dari implementasi sistem adalah sebagai berikut:
1. Membuat desain sistem selama melakukan penelitian dan analisa.
2. Memastikan bahwa pemakai user dapat mengoperasikan sistem.
3. Menguji dan mendokumentasikan prosedur dan program yang diperlukan.
4. Menyelesaikan desain sistem yang telah disetujui.
4.3 Tampilan Aplikasi Penerjemah Dengan Metode Text Recognizer
Berikut ini adalah penjelasan tentang rancangan tampilan program Aplikasi Penerjemah Dengan Metode Text Recognizer :
4.3.1 Tampilan Splash Screen
Pada saat pertama aplikasi dibuka akan memunculkan tampilan spalsh screen yang berupa logo dari aplikasi ini selama 2 detik. Gambar splash screen yang muncul seperti gambar dibawah ini.
Gambar 4.1 Splash Screen dari Aplikasi
4.3.2 Tampilan Menu Home
Berikut adalah tampilan menu home dari Aplikasi Penerjemah Dengan Metode Text Recognizer. Di menu home pengguna langsung dapat menggunakannya untuk menscan gambar berisikan text untuk diterjemahkan. Gambar dari tampilan menu home seperti dibawah ini.
Gambar 4.2 Tampilan Menu Home
4.3.3 Tampilan Menu Terjemahan
Berikut merupakan tampilan menu terjemahan, setelah gambar yang ada kita scan makan akan muncul menu terjemahan seperti di bawah ini. Dan pada tampilan menu inilah kita dapat menerjemahkan gambar text yang sebelumnya sudah di scan kebahasa yang kita inginkan. Seperti gambar dibawah setelah text di scan muncul menu terjemahan lalu kita pilih bahasa terjemahan yang diinginkan, lalu tap button translate maka text yang telah diterjemahkan akan otomatis muncul.
Gambar 4.3 Langkah-langkah Cara Menggunakan Aplikasi Terjemahan
Gambar 4.4 Hasil Dari Terjemahan
4.3.4 Tampilan Menu About
Dalam tampilan menu About berisikan logo dan nama dari Aplikasi juga data diri Penulis.
Gambar 4.5 Tampilan Menu About
BAB 5 PENUTUP
5.1. Kesimpulan
Berdasarkan pembahasan pada bab sebelumnya, dapat ditarik kesimpulan dari pembangunan aplikasi translator dengan text recognizer adalah sebagai berikut : 1. Penulis dapat menerapkan dan mengintegrasikan fungsi-fungsi dari berbagai
library java yang dibutuhkan dalam pengembangan aplikasi mobile translator.
2. Aplikasi yang telah dikembangkan cukup berkemampuan sebagai translator terutama dalam penerjemahan perkata.
3. Keakuratan pembacaan karakter pada aplikasi ini bergantun pada kualitas input yang dipengaruhi beberapa variabel seperti resolusi gambar, resolusi kamera, pencahayaan, kejelasan tulisan, kemiringan bidang tulisan, jenis font, ukuran huruf, tanda baca, warna tulisan, warna latar belakang, dan lainlain.
5.2 Saran
Meskipun penulis menginginkan kesempurnaan dalam penyusunan tugas akhir ini tetapi kenyataannya masih banyak kekurangan yang perlu penulis perbaiki.
Hal ini dikarenakan masih minimnya pengetahuan yang penulis miliki. Oleh karena itu kritik dan saran yang membangun dari para pembaca sangat penulis harapkan untuk perbaikan ke depannya.
DAFTAR PUSTAKA
Huda, Arif Akbarul. 2013. 9 Aplikasi Android Buatan Sendiri. Yogyakarta: Andi.
Juhara, Zamrony P. 2016. Panduan Lengkap Pemograman Android. Yogyakarta:
Penerbit Andi.
Safaat, Nazaruddin. 2011. Android Pemograman Aplikasi Mobile Smartphone dan Tablet PC, Bandung: Informatika.
Sofyana, Iwan. 2006. Mudah Menguasai Jbuilder Enterprise. Bandung: Informatika.
Widiarta, Wisnu. 2007. Dari Paskal ke Java. Bandung: Informatika.
Hariyanto, Bambang, Ir, Mt (2004), Rekayasa Sistem Berorientasi Obyek, Informatika Bandung, Bandung.
Rickyanto, Isak (2003), Dasar Pemrograman Berorientasi Objek dengan Java 2:
JDK 1.4, Andi Offset, Yogyakarta.
LAMPIRAN PROGRAM
splash_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android
"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="36dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/logo_color" />
</android.support.constraint.ConstraintLayout>
ocr_capture.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android
"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/topLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:keepScreenOn="true">
<com.ocrtranslator.libs.ui.camera.CameraSourcePreview android:id="@+id/preview"
android:layout_width="match_parent"
android:layout_height="match_parent">
<com.ocrtranslator.libs.ui.camera.GraphicOverlay android:id="@+id/graphicOverlay"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</com.ocrtranslator.libs.ui.camera.CameraSourcePreview>
<android.support.v7.widget.Toolbar android:id="@+id/toolbar2"
android:layout_width="match_parent"
android:layout_height="56dp"
android:layout_margin="0dp"
android:background="@color/darkBackground"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:contentInsetEnd="0dp"
app:contentInsetEndWithActions="0dp"
app:contentInsetLeft="0dp"
app:contentInsetRight="0dp"
app:contentInsetStart="0dp"
app:contentInsetStartWithNavigation="0dp">
<android.support.constraint.ConstraintLayout android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="0dp">
<ImageView
android:id="@+id/imageView4"
android:layout_width="wrap_content"
android:layout_height="30dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:adjustViewBounds="true"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.496"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/logo" />
<ImageView
android:id="@+id/btAbout"
android:layout_width="42dp"
android:layout_height="0dp"
android:layout_marginEnd="16dp"
android:scaleType="center"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_about" />
</android.support.constraint.ConstraintLayout>
</android.support.v7.widget.Toolbar>
<ImageView
android:id="@+id/imageView2"
android:layout_width="200dp"
android:layout_height="200dp"
android:tint="@color/colorPrimaryDark"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_scan" />
<TextView
android:id="@+id/textView11"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:background="@color/darkBackground"
android:gravity="center"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:text="Scan text here"
android:textColor="@color/custom1"
android:textSize="16sp"
android:textStyle="italic"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</android.support.constraint.ConstraintLayout>
translate_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android
"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<android.support.constraint.ConstraintLayout android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@color/colorPrimary"
android:paddingStart="24dp"
android:paddingEnd="24dp">
<TextView
android:id="@+id/textView"
style="@style/titleDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginTop="8dp"
android:layout_marginBottom="8dp"
android:text="Translate to:"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/btBack"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/btBack"
android:layout_width="29dp"
android:layout_height="0dp"
android:scaleType="center"
android:tint="@color/cardview_dark_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_arrow" />
<Spinner
android:id="@+id/spinner"
style="@android:style/Widget.Holo.Light.Spinner"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:backgroundTint="@color/cardview_dark_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/textView"
app:layout_constraintTop_toTopOf="parent" />
</android.support.constraint.ConstraintLayout>
<ScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="16dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:layout_marginEnd="24dp"
android:orientation="vertical">
<TextView
android:id="@+id/textView2"
style="@style/subTitleDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Source Text" />
<EditText
android:id="@+id/etSource"
style="@style/editTextDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:id="@+id/btSave"
style="@style/buttontDialogOther"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="SAVE" />
<Button
android:id="@+id/btEdit"
style="@style/buttontDialogLeft"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="EDIT" />
<Button
android:id="@+id/btTranslate"
style="@style/buttontDialogRight"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TRANSLATE" />
</LinearLayout>
<TextView
android:id="@+id/textView3"
style="@style/subTitleDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Translated Text" />
<EditText
android:id="@+id/etResult"
style="@style/editTextDialog"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:ems="10"
android:inputType="textMultiLine" />
</LinearLayout>
</ScrollView>
</LinearLayout>
spinner_item.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android
"
android:layout_width="match_parent"
android:layout_height="wrap_content"
style="@style/titleDialog"
android:gravity="start"
android:padding="5dp"
/>
about_layout.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android
"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="36dp">
<android.support.constraint.ConstraintLayout android:layout_width="match_parent"
android:layout_height="64dp"
android:background="@color/colorPrimary"
android:paddingStart="24dp"
android:paddingEnd="24dp">
<TextView
android:id="@+id/textView"
style="@style/titleDialog"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="8dp"
android:text="About"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/btBackAbout"
android:layout_width="29dp"
android:layout_height="0dp"
android:scaleType="center"
android:tint="@color/cardview_dark_background"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@drawable/ic_arrow" />
</android.support.constraint.ConstraintLayout>
<ImageView
android:id="@+id/imageView3"
android:layout_width="wrap_content"
android:layout_height="48dp"
android:layout_gravity="center"
android:layout_marginTop="36dp"
android:layout_marginBottom="10dp"
android:adjustViewBounds="true"
app:srcCompat="@drawable/logo_color" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="Version 1.0 - October 2018" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="24dp"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="SARI MAWAR"
android:textSize="18sp"
android:textStyle="bold" />
<TextView
android:id="@+id/textView7"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="152406109" />
<TextView
android:id="@+id/textView9"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginBottom="8dp"
android:gravity="center"
android:text="Universitas Sumatera Utara"
android:textStyle="bold" />
<TextView
android:id="@+id/textView6"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="[email protected]" />
<TextView
android:id="@+id/textView8"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:gravity="center"
android:text="081343200695" />
</LinearLayout>
SplashActivity.java
package com.ocrtranslator.libs.ui;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Window;
import android.view.WindowManager;
import android.widget.ImageView;
import com.ocrtranslator.OcrCaptureActivity;
import com.ocrtranslator.R;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;
public class SplashActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);
setContentView(R.layout.splash_layout);
new Handler().postDelayed(new Runnable() { @Override
public void run() { Intent intent = new
Intent(SplashActivity.this, OcrCaptureActivity.class);
startActivity(intent);
finish();
} }, 3000);
}
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView imageView;
public DownloadImageTask(ImageView imageView) { this.imageView = imageView;
}
protected Bitmap doInBackground(String... urls) { String urldisplay = urls[0];
Bitmap img = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
img = BitmapFactory.decodeStream(in);
} catch (Exception e) { e.printStackTrace();
}
return img;
}
protected void onPostExecute(Bitmap result) { imageView.getLayoutParams().height = 450;
imageView.requestLayout();
imageView.setImageBitmap(result);
} } }
OcrCaptureActivity.java
package com.ocrtranslator;
android.hardware.Camera.Parameters.FLASH_MODE_TORCH;
import static
android.hardware.Camera.Parameters.FOCUS_MODE_CONTINUOUS_
VIDEO;
public final class OcrCaptureActivity extends AppCompatActivity {
private static final String TAG =
"OcrCaptureActivity";
private static final int RC_HANDLE_GMS = 9001;
private static final int RC_HANDLE_CAMERA_PERM = 2;
public static final String AutoFocus = "AutoFocus";
public static final String UseFlash = "UseFlash";
public static final String TextBlockObject =
"String";
private CameraSource cameraSource;
private CameraSourcePreview preview;
private GraphicOverlay<OcrGraphic> graphicOverlay;
private ScaleGestureDetector scaleGestureDetector;
private GestureDetector gestureDetector;
@Override
public void onCreate(Bundle bundle) { super.onCreate(bundle);
setContentView(R.layout.ocr_capture);
preview = findViewById(R.id.preview);
graphicOverlay =
findViewById(R.id.graphicOverlay);
boolean autoFocus = true;
boolean useFlash = false;
int rc = ActivityCompat.checkSelfPermission(this, Manifest.permission.CAMERA);
if (rc == PackageManager.PERMISSION_GRANTED) { createCameraSource(autoFocus, useFlash);
} else {
requestCameraPermission();
}
gestureDetector = new GestureDetector(this, new CaptureGestureListener());
scaleGestureDetector = new
ScaleGestureDetector(this, new ScaleListener());
ImageView btAbout = findViewById(R.id.btAbout);
btAbout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { aboutDialog();
} });
}
private void aboutDialog() {
final Dialog about = new Dialog(this);
about.setCancelable(false);
about.setContentView(R.layout.about_layout);
about.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_
PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
about.setCancelable(false);
about.show();
ImageView btBackAbout =
about.findViewById(R.id.btBackAbout);
btBackAbout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) { about.dismiss();
} });
}
private void requestCameraPermission() {
Log.w(TAG, "Camera permission is not granted.
Requesting permission");
final String[] permissions = new String[]{Manifest.permission.CAMERA};
if
(!ActivityCompat.shouldShowRequestPermissionRationale(thi s,
Manifest.permission.CAMERA)) {
ActivityCompat.requestPermissions(this, permissions, RC_HANDLE_CAMERA_PERM);
return;
} }
@Override
public boolean onTouchEvent(MotionEvent e) {
boolean b = scaleGestureDetector.onTouchEvent(e);
boolean c = gestureDetector.onTouchEvent(e);
return b || c || super.onTouchEvent(e);
}
@SuppressLint("InlinedApi")
private void createCameraSource(boolean autoFocus, boolean useFlash) {
Context context = getApplicationContext();
TODO: Create the TextRecognizer TextRecognizer textRecognizer = new TextRecognizer.Builder(context).build();
TODO: Set the TextRecognizer's Processor.
textRecognizer.setProcessor(new OcrDetectorProcessor(graphicOverlay));
TODO: Check if the TextRecognizer is operational.
if (!textRecognizer.isOperational()) {
Log.w(TAG, "Detector dependencies are not yet available.");
IntentFilter lowstorageFilter = new IntentFilter(Intent.ACTION_DEVICE_STORAGE_LOW);
boolean hasLowStorage =
registerReceiver(null, lowstorageFilter) != null;
if (hasLowStorage) { Toast.makeText(this,
R.string.low_storage_error, Toast.LENGTH_LONG).show();
Log.w(TAG,
getString(R.string.low_storage_error));
} }
TODO: Create the cameraSource using the TextRecognizer.
cameraSource = new
CameraSource.Builder(getApplicationContext(), textRecognizer)
.setFacing(CameraSource.CAMERA_FACING_BACK)
.setRequestedPreviewSize(1280, 1024)
.setRequestedFps(15.0f) .setFlashMode(useFlash ? FLASH_MODE_TORCH : null)
.setFocusMode(autoFocus ? FOCUS_MODE_CONTINUOUS_VIDEO : null)
.build();
}
@Override
protected void onResume() { super.onResume();
startCameraSource();
}
@Override
protected void onPause() { super.onPause();
if (preview != null) { preview.stop();
} }
@Override
protected void onDestroy() { super.onDestroy();
if (preview != null) { preview.release();
} }
@Override
public void onRequestPermissionsResult(int requestCode,
@NonNull String[] permissions,
@NonNull int[]
grantResults) {
if (requestCode != RC_HANDLE_CAMERA_PERM) {
Log.d(TAG, "Got unexpected permission result:
" + requestCode);
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
return;
}
if (grantResults.length != 0 && grantResults[0]
== PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "Camera permission granted - initialize the camera source");
// We have permission, so create the camerasource
boolean autoFocus =
getIntent().getBooleanExtra(AutoFocus,false);
boolean useFlash =
getIntent().getBooleanExtra(UseFlash, false);
createCameraSource(autoFocus, useFlash);
return;
}
Log.e(TAG, "Permission not granted: results len =
" + grantResults.length +
" Result code = " + (grantResults.length
> 0 ? grantResults[0] : "(empty)"));
DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
finish();
} };
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Multitracker sample")
.setMessage(R.string.no_camera_permission)
.setPositiveButton(R.string.ok, listener) .show();
}
private void startCameraSource() throws SecurityException {
// check that the device has play services available.
int code =
GoogleApiAvailability.getInstance().isGooglePlayServicesA vailable(
getApplicationContext());
if (code != ConnectionResult.SUCCESS) { Dialog dlg =
GoogleApiAvailability.getInstance().getErrorDialog(this, code, RC_HANDLE_GMS);