Modul Mobile Programming 1 Modul 1 Pengenalan Mobile Programing Tujuan : 1. Mahasiswa dapat memahami dan mengetahui lebih dalam tentang mobile programing. 2. Mahasiswa dapat mengetahui sistem operasi apa saja yang digunakan pada perangkat mobile. 3. Mahasiswa mampu memahami dan mengetahui bagaimana mobile programing bekerja dengan komponen eksternal. Tugas pendahuluan : 1. Apa yang dimaksud sistem operasi ? 2. Sistem operasi apa saja pada handphone? DASAR TEORI 1. Sistem operasi mobile Sistem operasi perangkat mobile (bahasa Inggris: mobile operating system, disingkat Mobile OS) adalah suatu sistem operasi yang mengontrol sistem dan kinerja pada barang elektronik yang mobile, mirip dengan fungsi Windows,Mac OS X, dan Linux pada Desktop PC atau Laptop/Notebook tetapi lebih sederhana. Biasanya penggunaannya hadir di ponsel pintar, PDA, tablet komputer, dan PMP. Pada tahun 1993 dirilis smartphone yang pertama, “IBM Simon” yang memiliki fitur layar sentuh, email serta PDA. Selang 3 tahun kemudian, tahun 1996 Palm Pilot 1000 memperkenalkan personal digital assistant (PDA) untuk pertama kalinya dengan sistem operasi Palm OS. Masih dalam tahun yang sama PC Handled untuk pertama kalinya diperkenalkan dengan sistemWindows CE. 4 tahun
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Modul Mobile Programming
1
Modul 1
Pengenalan Mobile Programing
Tujuan :
1. Mahasiswa dapat memahami dan mengetahui lebih dalam tentang
mobile programing.
2. Mahasiswa dapat mengetahui sistem operasi apa saja yang
digunakan pada perangkat mobile.
3. Mahasiswa mampu memahami dan mengetahui bagaimana mobile
programing bekerja dengan komponen eksternal.
Tugas pendahuluan :
1. Apa yang dimaksud sistem operasi ?
2. Sistem operasi apa saja pada handphone?
DASAR TEORI
1. Sistem operasi mobile
Sistem operasi perangkat mobile (bahasa Inggris: mobile operating system,
disingkat Mobile OS) adalah suatu sistem operasi yang mengontrol sistem dan
kinerja pada barang elektronik yang mobile, mirip dengan fungsi Windows,Mac OS
X, dan Linux pada Desktop PC atau Laptop/Notebook tetapi lebih sederhana.
Biasanya penggunaannya hadir di ponsel pintar, PDA, tablet komputer, dan PMP.
Pada tahun 1993 dirilis smartphone yang pertama, “IBM Simon” yang
memiliki fitur layar sentuh, email serta PDA. Selang 3 tahun kemudian, tahun
1996 Palm Pilot 1000 memperkenalkan personal digital assistant (PDA) untuk
pertama kalinya dengan sistem operasi Palm OS. Masih dalam tahun yang sama PC
Handled untuk pertama kalinya diperkenalkan dengan sistemWindows CE. 4 tahun
EditText input1, input2; TextView hasil; Button tampil,reset; int x, y, hitung; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // meng-import widget ke variabel, dengan menemukan id pada widget input1=(EditText) findViewById(R.id.input1); input2=(EditText) findViewById(R.id.input2); hasil=(TextView) findViewById(R.id.tampilHasil); tampil =(Button)findViewById(R.id.btnHitung); reset=(Button)findViewById(R.id.btnReset); // membuat button bekerja saat di klik tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // mem-parse nilai integer ke string karena inputan berupa string
Modul Mobile Programming
34
x = Integer.parseInt(((EditText) input1).getText().toString()); y = Integer.parseInt(((EditText) input2).getText().toString()); hitung = x + y; hasil.setText("Hasil"+"="+hitung); } }); // mereset inputan dan hasilnya reset.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { input1.setText(""); input2.setText(""); hasil.setText(""); } }); }
import android.view.Menu; import android.view.View; import android.widget.TextView; import android.widget.Button; import android.widget.EditText; public class MainActivity extends Activity { // membuat variabel TextView hasil; Button tampil; EditText input; int nilai, hasil1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); hasil=(TextView)findViewById(R.id.textView2); tampil=(Button) findViewById(R.id.button1); input=(EditText) findViewById(R.id.editText1); // memeberi action pada button ketoka ditekan tampil.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { // memeparse variabel nilai nilai = Integer.parseInt(((EditText) input).getText().toString()); if (nilai > 85) hasil.setText("Grade A !"); else if (nilai > 75 ) hasil.setText("Grade B !"); else if (nilai > 65 ) hasil.setText("Grade C !"); else if (nilai > 55 ) hasil.setText("Grade D !"); else{ hasil.setText("Grade E !");} } }); }; @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present.
import android.view.View; public class ViewGrafik extends View { // RectF batas Layar (kiri,atas,bawah,kanan) private RectF kotak1 = new RectF(100,100,300,200);// kiri,atas,kanan,bawah
private RectF kotak2 = new RectF(200,25,300,75); private RectF kotak3 = new RectF(300,210,400,300); private RectF oval = new RectF(100,200,200,300);//oval akan mengikuti rect
private RectF oval2 = new RectF(100,320,200,400); Paint cat= new Paint(); protected void onDraw(Canvas c) { //gambar kotak cat.setColor(Color.argb(200, 247, 4, 4)); //alpha transparasi warna,red,green,blue
//ukuran sebuah lingkaran adlah 360 derajat // derajat dihitung dari derajat awal ditentukan ,lengkungan akan mengikuti rect oval
//paramater ke 4 jika true garis penutup melewati titik pusat //berikut dimulai dari 30 derajat, sepanjang 120 derajat c.drawArc(oval, 30, 120, true,cat); cat.setColor(Color.YELLOW); //jika parameter ke‐4 false maka garis akan melewati //ujung ke ujung tanpa harus ke titik pusat //menyebabkan efek spt stengah lingkaran c.drawArc(oval2, 180, 180, false,cat); //gambar garis cat.setColor(Color.RED); c.drawLine(50,400,400,400,cat); //kiri,atas,kanan,bawah //gambar kotak kosong cat.setColor(Color.CYAN); cat.setStyle(Style.STROKE); cat.setStrokeWidth(5); c.drawRect(kotak3,cat); //gambar titik secara acak jika program direfreshmaka posisi akan berubah
cat.setColor(Color.BLACK);
Modul Mobile Programming
52
for (int i=0;i<10;i++) { c.drawPoint( (float) Math.random()*500, (float)Math.random()*500, cat);
} //Menggunakan tulisan cat.setColor(Color.RED); //diisi dalam maupun outline cat.setStyle(Style.FILL_AND_STROKE); cat.setStrokeWidth(2); cat.setTextSize(35); c.drawText("Hello World", 10, 500, cat); //menggunakan font cat.setTypeface(Typeface.create(Typeface.SERIF,Typeface.BOLD_ITALIC));
c.drawText("font serif italic_bold", 10, 550, cat); } public ViewGrafik(Context context) { super(context); // TODO Auto-generated constructor stub } }
4. Pada mainActivity.java tambahkan code berikut untuk menampikan dari
class grapic view
Berikut adalah hasilnya
Modul Mobile Programming
53
Method drawText dapat digunakan untuk menambahkan teks di canvas, sedangkan Path
dan
drawTextOnPath dapat digunakan untuk menggambar teks yang mengikuti jalur tertentu.
Untuk jelasnya berikut adalah contohnya:
1. Buat project baru beri nama GrafikPath
2. Tambahakan class ViewPath
3. Pada class ViewPath.java tambahakan code berikut.
import android.content.Context; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Path; import android.view.View; public class ViewPath extends View{ Paint cat= new Paint(); private Path path = new Path(); protected void onDraw(Canvas c) { path.moveTo(10,85); path.lineTo(250,150); path.lineTo(350,300); cat.setTextSize(25); //0,0 artinya tidak ada jarak antara tulisan dgn path (offset) c.drawTextOnPath("penerapan path ", path, 0, 0, cat); // gambar tulisan melingkar //kosongkan path
Modul Mobile Programming
54
path.reset(); //x,y,radius dan berlawan jarumjam (CCW) path.addCircle(250, 250, 50, Path.Direction.CCW); c.drawTextOnPath("ini mengikuti lingkaran", path, 0, 0, cat); } public ViewPath(Context context) { super(context); // TODO Auto-generated constructor stub } }
4. Pada mainAvtivity tamabahakan
5. Bila dijalankan
Selenjutnya kita akan membuat app yang akan menggambar kotak ditempat
pengguna menyentuh layar. Buat project baru dan tambahkan class beri nama
GraphicsView.
Berikut adalah isi dari kelas tersebut import android.content.Context;
Modul Mobile Programming
55
import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.view.View; public class GrapicView extends View { public GrapicView(Context context) { super(context); } public float posx=-1; public float posy=-1; private int offset=25; private Paint cat = new Paint(); @Override protected void onDraw(Canvas c) { //clear screen cat.setColor(Color.BLACK); c.drawRect(0,0,c.getWidth(),c.getHeight(),cat); //gambar kotak diposisi yang disentuh if (posx!=-1) { cat.setColor(Color.YELLOW); c.drawRect(posx-offset,posy-offset,posy+offset,posx+offset,cat); } } } Pada main.java ketikan coding berikut import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; public class MainActivity extends Activity implements OnTouchListener { private GrapicView gv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); gv=new GrapicView (this); gv.setOnTouchListener(this); setContentView(gv); } @Override public boolean onCreateOptionsMenu(Menu menu) {
Modul Mobile Programming
56
getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onTouch(View v, MotionEvent event) { int action = event.getAction(); switch (action) { case MotionEvent.ACTION_DOWN: //jari menyentuh layar //passing posisi ke graphicsview gv.posx = event.getX(); gv.posy = event.getY(); gv.invalidate(); //draw ulang break; case MotionEvent.ACTION_MOVE: //bergerak break; case MotionEvent.ACTION_UP: //diangkat break; case MotionEvent.ACTION_CANCEL: //batal break; default: break; } return true; } }
Bila dijalankan maka akan tampil seperti berikut
Modul Mobile Programming
57
MODUL VI
Sensor Proximity dan Accelometer
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami sensor yang ada
pada android.
2. Mahasiswa mampu membuat program penerapan sensorpada android
Pokok bahasan :
1. Dasar teori
2. Contoh program sensor android
1. Dasar teori
Sensor Proximity adalah sensor yang di gunakan untuk mendeteksi
keberadaan suatu objek tanpa kontak fisik. Manfaat dari proximity sensor
salah satunya untuk mematikan layar secara otomatis pada saat menelpon.
Pada smartphone android sensor ini apabila smartphone di dekatkan
pada telinga saat menelpon maka lampu layar dari smartphone akan mati
secara otomatis. Jadi sensor ini sangat penting untuk menghemat baterai saat
pemakaian telepon.
Sensor Accelerometer adalah merupakan salah satu fitur yang di
tanam pada smartphone android yang biasanya berfungsi untuk menentukan
Modul Mobile Programming
58
derajat kemiringan dari smartphone. Pada dasarnya fungsi sensor ini untuk
mengubah tampilan layar dari posisi landscape menjadi potrait ataupun
sebaliknya, sehingga tampilan menu dan aplikasi yang ada di smartphone
akan menyesuaikan posisi dari smartphone.salah satu contoh yang sering
menggunakan sensor ini adalah aplikasi game, misal game dalam balapan
mobil sehingga kita cukup memiringkan smartphone saat belok ke kanan atau
ke kiri.
2. Contoh penerapan sensor proxymity
1. Buatlah project baru , beri nama SensorProximity
2. Buat dua gambar seperti berikut
3. Tempatkan gambar tersebut di directory file project ,
import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.hardware.Sensor; // memanggil funsi API sensor di android
Modul Mobile Programming
63
import android.hardware.SensorEvent; import android.hardware.SensorEventListener; import android.hardware.SensorManager; import android.widget.TextView; public class MainActivity extends Activity implements SensorEventListener { private SensorManager sensorManager; TextView xCoor; // deklarasikan X axis objek TextView yCoor; // deklarasikan Y axis objek TextView zCoor; // deklarasikan Z axis objek @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); xCoor=(TextView)findViewById(R.id.xkoor); // buat X axis objek yCoor=(TextView)findViewById(R.id.ykoor); // buat Y axis objek zCoor=(TextView)findViewById(R.id.zkoor); // buat Z axis objek sensorManager=(SensorManager)getSystemService(SENSOR_SERVICE);
// menambahkan listener. Listener untuk class ini adalah accelerometer
sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), // fungsi api yang dipakai untuk perubahan screen orientation SensorManager.SENSOR_DELAY_NORMAL); } @Override public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public void onAccuracyChanged(Sensor sensor,int accuracy){ } @Override public void onSensorChanged(SensorEvent event){ // cek jenis sensor if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){
Modul Mobile Programming
64
//jika menggunakan tipe data float atau double hasil koordinat akan lebih spesifik.
int x=(int) event.values[0]; int y=(int) event.values[1]; int z=(int) event.values[2]; xCoor.setText("X: "+x); yCoor.setText("Y: "+y); zCoor.setText("Z: "+z); } } }
4. Jalankan program pada device,jika pada posisi rata maka hasilnya adalah
Modul Mobile Programming
65
MODUL VII
Data Base
Tujuan :
1. Mahasiswa mampu mengetahui dan memahami database pada
android.
2. Mahasiswa mampu memahami kode program dasar untuk
membangun program berbasis android.
Pokok bahasan :
1. Database SqlLite.
2. Penerapan database pada android.
1. Dasar teori
Pada modul bagian ini kita akan membahas fasilitas untuk membuat database
pada android yang dikenal dengan SQLite. SQLite adalah salah satu software
embeddedyang sangat populer,kombinasi SQl interface dan penggunaan
memory yang sedikit.SQLite termasuk dalam android runtime ,sehingga
setiap versi dari android dapat membuat database dengan SQLite. Dalam
sisitem android memiliki beberapa teknik untuk menyimpan data. Teknik
yang umum digunakan adlah:
1. Shared Preferences yaitu menyimpan data beberapa nilai dalam
bentuk groups key yang dikenal deng preferences
2. Files yaitu menyimpan data dalam file , dapat berupa menulis ke
file atau membaca file.
3. SQLite Databases yaitu menyimpan data dalam bentuk database.
4. Content Providers yaitu menyimpan data dalam bentuk content
providers service.
Jika kita menggunakan Sqlite kitaharus mengcreate database ,
mendefenisikan tabel dan inisialisai data. Kelas SQLiteOpenHelper
menggunakan 3 metode dalam membuat dan membuka data yaitu:
1. Constuctor , menyediakan representasi versi dari database dan
skema databasse yang digunakan.
2. Oncreate,mnyediakan SQLiteDatabase object yang kita gunakan
dalam defenisi tabel dan inisialisai data.
Modul Mobile Programming
66
3. Onupgrade, menyediakan fasilitas konversi database dari database
versi lama ke database versi terbaru.
Pada database SQLite kita juga mengenal query data dan cursor. Query
berfungsi mengembalikan objeck cursor. Cursor adalah hasil dari query,yaitu
satu baris (record)ndari hasil query. Dengan cursor, Android bisa melakukan
buffer hasil query dengan efisien karena tidak perlu load data ke memory.
Cursor menyediakan method get*(), misalnya cursor.getCount(). Selain
method get ada beberapa method pada cursor yaitu:
1. MoveToFirst() : Memindahkan cursor ke baris pertama dari hasil
query.
2. MoveToNext() : Memindahkan cursor ke baris selanjutnya
3. MoveToPrevious() : Memindahkan cursor ke baris sebelumnya
4. MoveToPosition() : Memindahkan cursor ke baris yang ditentukan.
2. Penerapan database android
Contoh program ini terdiri dari dua bagian, yaitu program yang
menampilkan sebuah form pengisian data dimana pengguna bisa memasukkan
data kemudian menyimpannya di dalam database.
1. Buat project baru beri nama DatabaseSQLite.
2. Buat baru layout beri nama Add.xml seperti berikut:
import android.app.Activity; import android.app.AlertDialog; import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import android.widget.AdapterView.OnItemClickListener; public class MainActivity extends Activity { String[] daftar; ListView ListView01; Menu menu; protected Cursor cursor; SQLHelper dbHelper; public static MainActivity ma; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ma = this; dbHelper = new SQLHelper(this); RefreshList();
Modul Mobile Programming
73
} public void RefreshList() { SQLiteDatabase db = dbHelper.getReadableDatabase(); cursor = db.rawQuery("SELECT * FROM kota",null); daftar = new String[cursor.getCount()]; cursor.moveToFirst(); for (int cc=0; cc < cursor.getCount(); cc++) { cursor.moveToPosition(cc); daftar[cc] = cursor.getString(1).toString(); } ListView01 = (ListView)findViewById(R.id.ListView01); ListView01.setAdapter(new ArrayAdapter(this, android.R.layout.simple_list_item_1, daftar)); ListView01.setSelected(true); ListView01.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { final String selection = daftar[arg2]; final CharSequence[] dialogitem = {"Edit", "Delete"}; AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setTitle("Pilih ?"); builder.setItems(dialogitem, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int item) { switch(item){ case 0 : Intent i = new Intent(getApplicationContext(), EditActivity.class); i.putExtra("nama", selection); startActivity(i); break; case 1 : SQLiteDatabase db = dbHelper.getWritableDatabase(); db.execSQL("delete from kota where nama = '"+selection+"'"); RefreshList(); break; } }
Modul Mobile Programming
74
}); builder.create().show(); }}); ((ArrayAdapter)ListView01.getAdapter()).notifyDataSetInvalidated(); } @Override public boolean onCreateOptionsMenu(Menu menu) { this.menu = menu; menu.add(0, 1, 0, "Tambah").setIcon(android.R.drawable.btn_plus); menu.add(0, 2, 0, "Refresh").setIcon(android.R.drawable.ic_menu_rotate); menu.add(0, 3, 0, "Exit").setIcon(android.R.drawable.ic_menu_close_clear_cancel); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 1: Intent i = new Intent(MainActivity.this, AddActivity.class); startActivity(i); return true; case 2: RefreshList(); return true; case 3: finish(); return true; } return false; } }
Setelah selesai jalankan programnya. Akan tampil data inputan pertama yang diabuat
yaitu nama yoga dan sukarta.
Modul Mobile Programming
75
Klik menu pada device untuk tambah , maka akan muncul seperti berikut: