Anda di halaman 1dari 14

MOBILE PROGRAMMING

LAPORAN APLIKASI

ANGGOTA KELOMPOK :
ANDIKA PUTRA HUTAURUK (121401061)
BORIS MARIO (121401066)
MUHAMMAD YUDHA SYUHADA (121401077)
PARLINDUNGAN SINABARIBA (121401060)

PROGRAM STUDI S1 ILMU KOMPUTER


FAKULTAS ILMU KOMPUTER DAN TEKNOLOGI
INFORMASI
UNIVERSITAS SUMATERA UTARA
MEDAN
2015

DOKUMENTASI PEMBUATAN APLIKASI


KAMUS BAHASA INGGRIS-INDONESIA
ANGGOTA KELOMPOK :
ANDIKA PUTRA HUTAURUK (121401061)
BORIS MARIO (121401066)
MUHAMMAD YUDHA SYUHADA (121401077)
PARLINDUNGAN SINABARIBA (121401060)
1. Kegunaan Aplikasi
Aplikasi ini bertujuan untuk membantu pengguna dalam
menerjemahkan kata-kata dari Bahasa Inggris ke Bahasa Indonesia
dan juga sebaliknya. Aplikasi ini juga memiliki fitur untuk
mendengarkan cara melafalkan kata-kata dalam kamus tersebut
sehingga dapat membantu pengguna dalam mengucapkan suatu
kata dengan baik dan benar.
2. Tampilan Awal Aplikasi
Loading Screen
Merupakan tampilan awal sebelum memasuki fungsi utama aplikasi,
terdapat logo dan tema aplikasi yang kami buat.
Kode sumber mengenai Loading Screen adalah sebagai berikut :
1.

package com.example.parlincode.kamus;

2.
3.

import android.content.Intent;

4.

import android.os.Bundle;

5.

import android.support.design.widget.FloatingActionButton;

6.

import android.support.design.widget.Snackbar;

7.

import android.support.v7.app.AppCompatActivity;

8.

import android.support.v7.widget.Toolbar;

9.

import android.view.View;

10. import android.view.Window;


11.
12. public class LoadingScreen extends AppCompatActivity {

13.
14.

@Override

15.

protected void onCreate(Bundle savedInstanceState) {

16.

requestWindowFeature(Window.FEATURE_NO_TITLE);

17.

super.onCreate(savedInstanceState);

18.

setContentView(R.layout.content_loading_screen);

19.

Thread bc = new Thread(new Runnable() {

20.

@Override

21.

public void run() {

22.

try {

23.

Thread.sleep(5000);

24.

Intent p2 = new Intent(LoadingScreen.this, MainActivity.class);

25.

startActivity(p2);

26.

finish();

27.

} catch (Throwable e){

28.
29.

30.

31.

});

32.

bc.start();

33.

34.

Adapun cara kerja dari kode sumber diatas adalah :


1. Ditampilkan desain dari loading screen yang terdapat pada
R.layout.content_loading_screen
2. Dibuat sebuah thread yang bertujuan untuk menahan jalan
nya program selama 5000 ms

3. Dibuat sebuah intent yang menunjuk pada aktifitas fungsi


utama yaitu MainActivity.class
4. Pada baris akhir, thread tersebut dijalankan
3. Proses Pembuatan Database
Saat program pertamakali dijalankan - dalam method
onCreate MainActivity objek dari class DbKamus akan
diinisialisasi. Karena deklarasi ini maka konstruktor class
DbKamus akan dipanggil. Dengan parameter context
MainActivity, konstruktor class DbKamus akan menginstasiasi
objek dari class OpenHelper. Konstruktor class OpenHelper
akan memanggil konstruktor class superiornya yaitu
SQLiteOpenHelper untuk membuat database.
Setelah database dibuat oleh OpenHelper, method
onCreate akan dieksekusi lalu sintaks querry CREATE_TABLE
akan dieksekusi. Setelah tabel dibuat maka MainActivity akan
mulai mengisikan database melalui method insertKamus yang
dimiliki oleh class DbKamus. Selanjutnya dalam proses
penerjemahan yang akan dilakukan dalam program utama
akan dipanggil method getKamus yang dimiliki oleh class
Dbkamus
4. Penjelasan Activity di Dalam Aplikasi

OpenHelper.java

Class OpenHelper adalah kelas yang sengaja dibuat dalam projek


untuk membantu segala hal yang berkaitan dengan SQLite
database. Dalam kelas OpenHelper ini akan dideklarasikan semua
querry yang dibutuhkan oleh SQLite saat program pertamakali
dijalankan. Sintaks querry SQLite yang paling awal dieksekusi
adalah CREATE_DATABASE. Karena OpenHelper mewarisi sifat
SQLiteOpenHelper maka untuk membuat database baru yang
diperlukan hanyalah memanggil konstruktor class SQLiteOpenHelper
melalui pemanggilan konstruktor class OpenHelper.
Setelah pembuatan database dilakukan, selanjutnya adalah
pembuatan tabel. Sintaks querry pembuatan table disimpan dalam
CREATE_TABLE. Maka langkah yang perlu diambil adalah
menyisipkan execSQL(CREATE_TABLE) pada method onCreate.

DbKamus.java

Class DbKamus dibuat khusus untuk menjadi media instasiasi


database. DbKamus akan membuat objek database bertipe SQLite
lalu memanggil OpenHelper. getWritableDatabase() untuk
memperoleh database yang dibuat sebelumnya.

Class DbKamus juga memiliki InnerClass Kamus. Tujuan dari kelas ini
dubuat adalah untuk menjadi bentuk umum satu jenis record dalam
satu tabel dalam database. Hal ini ditujukan untuk mempermudah
pengambilan dan penyimpanan satu record dalam database. Dalam
hal ini record yang diambil adalah pasangan arti kata bahasa
Indonesia dan bahasa Inggris.

MainActivity.java

MainActivity adalah sebuah activity yang digunakan sebagai induk


serta penghubung dari activity-activity lainnya, dan juga untuk
proses penginputan kata ke dalam database :
DbKamus db = new DbKamus(this);
db.open();
ArrayList<DbKamus.Kamus> Tes = new ArrayList<DbKamus.Kamus>();
Tes = db.getKamus("tahun", "ind");
if(Tes.size() == 0) {
//1
db.insertKamus("kesenian", "art", "kesenian.mp3");
db.insertKamus("seni", "art", "seni.mp3");
//2
db.insertKamus("menerima", "accept", "menerima.mp3");
db.insertKamus("menyetujui", "accept", "menyetujui.mp3");
//3
db.insertKamus("bank", "bank", "bank.mp3");

Untuk fungsinya sebagai penghubung, ini dikarenakan kami menggunakan


tabview yang mana dalam tabview, digunakan fragment. Fragment adalah
bagian tersendiri dari sebuah program untuk keperluan User Interface.
Dimana fungsi ini ditunjukan pada bagian :
1.
2.

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);


setSupportActionBar(toolbar);

3.
4.

TabLayout tabLayout = (TabLayout) findViewById(R.id.tab_layout);

5.

tabLayout.addTab(tabLayout.newTab().setText("IND-ENG"));

6.

tabLayout.addTab(tabLayout.newTab().setText("ENG-IND"));

7.

tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

8.
9.
10.

11.

final ViewPager viewPager = (ViewPager) findViewById(R.id.container);


final PagerAdapter adapter = new PagerAdapter(getSupportFragmentManage
r(), tabLayout.getTabCount());
viewPager.setAdapter(adapter);

12.

viewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChang
eListener(tabLayout));

13.

tabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener()
{

14.

@Override

15.

public void onTabSelected(TabLayout.Tab tab) {

16.

viewPager.setCurrentItem(tab.getPosition());

17.

18.
19.

@Override

20.

public void onTabUnselected(TabLayout.Tab tab) {

21.
22.

23.
24.

@Override

25.

public void onTabReselected(TabLayout.Tab tab) {

26.
27.

28.
29.
30.

1.

PagerAdapter.java

package com.example.parlincode.kamus;

2.
3.

import android.support.v4.app.Fragment;

4.

import android.support.v4.app.FragmentManager;

5.

import android.support.v4.app.FragmentStatePagerAdapter;

6.

7.

/**

8.

* Created by muhammadyudhasyuhada on 1/6/16.

9.

*/

10.
11.
12.
13. public class PagerAdapter extends FragmentStatePagerAdapter {
14.

int mNumOfTabs;

15.
16.

public PagerAdapter(FragmentManager fm, int NumOfTabs) {

17.

super(fm);

18.

this.mNumOfTabs = NumOfTabs;

19.

20.
21.

@Override

22.

public Fragment getItem(int position) {

23.

switch (position){

24.

case 0:

25.

TabFragmentMain tabMain = new TabFragmentMain();

26.

return tabMain;

27.

case 1:

28.

TabFragment2 tab2 = new TabFragment2();

29.

return tab2;

30.
31.

default:

32.

return null;

33.
34.
35.

}
}

36.

@Override

37.

public int getCount() {

38.

return mNumOfTabs;

39.

40. }

Fungsi class ini adalah untuk menghubungkan layout-layout pengisi


tab (fragment_main.xml dan fragment_2.xml) dengan
activity_main.xml. Sehingga tab yang berada dalam
activity_main.xml akan terisi oleh layout-layout tersebut. Dimana
proses pengisian terjadi pada method getItem yang memiliki
parameter tipe data integer yang digunakan untuk melihat posisi
dari tab yang sedang dilihat. Kemudian setelah class ini dibuat,
maka ditambahkan sintaks ini dalam
MainActivity.java :

Dapat dilihat bahwa setelah tab layout didefinisikan dan diisi


dengan text, maka akan dibuat objek dengan tipe ViewPager dan
objek dengan tipe PagerAdapter. ViewPager merupakan sebuah
class yang diimport dari library java di android sedangkan
PagerAdapter adalah class yang kita buat tadi. PagerAdapter
digunakan sebagai adapter yang akan mendefinisikan brapa tab
yang dibuat beserta isi dari masing-masing tab.

TabFragmentMain.java dan TabFragment2.java

TabFragmentMain merupakan class yang berfungsi untuk mengatur


jalannya program pada bagian translasi Indonesia Inggris. Ada pun
kode sumber dari TabFragment Main adalah sebagai berikut :

1.

package com.example.parlincode.kamus;

2.
3.

import android.media.MediaPlayer;

4.

import android.os.Bundle;

5.

import android.speech.tts.TextToSpeech;

6.

import android.util.Log;

7.

import android.view.LayoutInflater;

8.

import android.view.View;

9.

import android.view.ViewGroup;

10. import android.widget.AdapterView;


11. import android.widget.ArrayAdapter;
12. import android.widget.Button;
13. import android.widget.EditText;
14. import android.widget.ImageButton;
15. import android.widget.ListView;
16. import android.widget.TextView;
17. import android.widget.Toast;
18.
19. import java.util.ArrayList;
20. import java.util.Locale;
21.
22. /**
23. * Created by muhammadyudhasyuhada on 1/6/16.
24. */
25. public class TabFragmentMain extends android.support.v4.app.Fragment {
26.

ArrayList<DbKamus2.Kamus2> Hasil = new ArrayList<DbKamus2.Kamus2>();

27.

Button btnCari;

28.

EditText etPencarian;

29.

View view;

30.

TextView tvCari;

31.

TextToSpeech ttsKata;

32.

ImageButton imgListen;

33.
34.

public String murnikan(String a){

35.

String hasil = "";

36.

for(int i = 0; i < a.length(); i++){

37.

if(a.charAt(i) != '-' && a.charAt(i) != ' '){

38.

hasil += a.charAt(i);

39.

40.

41.

return hasil;

42.

43.
44.
45.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle s
avedInstanceState){

46.

view = inflater.inflate(R.layout.fragment_main, container, false);

47.

btnCari = (Button) view.findViewById(R.id.btnCari1);

48.

etPencarian = (EditText) view.findViewById(R.id.etCari1);

49.

tvCari = (TextView) view.findViewById(R.id.tvCari1);

50.

imgListen = (ImageButton) view.findViewById(R.id.ibtListen1);

51.
52.

tvCari.setText("");

53.

imgListen.setVisibility(View.INVISIBLE);

54.
55.

ttsKata = new TextToSpeech(getContext(), new TextToSpeech.OnInitListener()


{

56.

@Override

57.

public void onInit(int status) {

58.

if(status != TextToSpeech.ERROR){

59.

ttsKata.setLanguage(Locale.UK);

60.
61.

} else {
Toast.makeText(getContext(), "Gagal Pembuatan Suara", Toast.LENGTH
_SHORT).show();

62.
63.
64.

}
}
});

65.
66.

imgListen.setOnClickListener(new View.OnClickListener() {

67.

@Override

68.

public void onClick(View v) {

69.
70.

try {
int resID = getResources().getIdentifier(murnikan(tvCari.getText().toSt
ring().toLowerCase()), "raw", getContext().getPackageName());

71.

MediaPlayer mediaPlayer = MediaPlayer.create(getContext(), resID);

72.

mediaPlayer.start();

73.

} catch(Exception e){

74.

Toast.makeText(getContext(), "Suara belum tersedia", Toast.LENGTH_S


HORT).show();

75.
76.
77.

}
}
});

78.
79.

btnCari.setOnClickListener(new View.OnClickListener() {

80.

@Override

81.

public void onClick(View v) {

82.

DbKamus2 db = new DbKamus2(getContext());

83.

db.open();

84.

Hasil = new ArrayList<DbKamus2.Kamus2>();

85.

Hasil = db.getKamus(etPencarian.getText().toString().toLowerCase(), "ind


");

86.

ListView lv = (ListView) view.findViewById(R.id.lvHasil1);

87.
88.

ArrayList<String> listDaftar = new ArrayList<String>();

89.

for(DbKamus2.Kamus2 k : Hasil){

90.

listDaftar.add(k.ing);

91.

92.

tvCari.setText(etPencarian.getText().toString());

93.

imgListen.setVisibility(View.VISIBLE);

94.

ArrayAdapter<String> lsAdapter = new ArrayAdapter<String>(getConte


xt(), R.layout.support_simple_spinner_dropdown_item, listDaftar);

95.

lv.setAdapter(lsAdapter);

96.

lv.setOnItemClickListener(new AdapterView.OnItemClickListener() {

97.
98.

@Override
public void onItemClick(AdapterView<?> parent, View view, int positi
on, long id) {

99.

String fname = Hasil.get(position).ing;

100.

Log.d("HASIL", fname);

101.

ttsKata.speak(fname, TextToSpeech.QUEUE_FLUSH, null);

102.

103.

});

104.

105.

});

106.
107.
108.

return view;

109.
110.
111.

}
}

Adapun jalan kerja dari class di atas adalah sebagai berikut :


1. Diinisialisasi komponen
2. Dilakukan pengaturan pada masing-masing komponen
3. Dilakukan pengecekan pada event click pada button yang sudah
dibuat. Dalam hal ini button search
3.1Dilakukan pencarian database dengan menggunakan class
DbKamus
3.2Hasil pencarian di simpan dalam sebuah array list
3.3Hasil Pencarian tersebut disimpan sebagai nilai Adapter yang
akan digunakan untuk set nilai pada list view yang bertujuan
untuk menampilkan kata-kata hasil terjemahan
4. Event pada list view : Terdapat satu event yaitu OnItemClick, yang
berfungsi menjalan Text To Speech yang bersangkutan dengan kata
yang diklik pada listview. Dimana Text To Speech adalah sebuah
fitur yang memungkinkan untuk mendapatkan proses pengucapan
dari sebuah string dengan menggunakan sebuah aksen tertentu.
Aksen ini ditulis pada bagian :
Baris 60 : ttsKata.setLanguage(Locale.UK);

5. Event pada ImageButton. ImageButton ini adalah button yang diklik


untuk dapat mendengar pengucapan dari kata yang baru saja kita
cari. Untuk dapat memutar sebuah file audio, android menyediakan
sebuah class yaitu media player.
int resID = getResources().getIdentifier(murnikan(tvCari.getText().toString().toLowe
rCase()), "raw", getContext().getPackageName());
MediaPlayer mediaPlayer = MediaPlayer.create(getContext(), resID);
mediaPlayer.start();

Dimana file audio sudah disimpan dalam bagian res/raw pada


projek yang sudah kita buat.
Fragment yang lain adalah Fragment_2, dimana pada class ini memiliki
cara kerja yang hampir sama dengan FragmentMain hanya saja berbeda
dalam urutan jalan kerja.

5. Tampilan Program

Anda mungkin juga menyukai