Aplikasi Android – Jakarta Taxi Dialler

Pada tutorial android yang lalu kita telah belajar membuat aplikasi bangun datar, pada tutorial android kali ini kita akan belajar membuat aplikasi yang lebih keren aplikasi bangun datar, kita akan membahas tentang langkah-langkah pembuatan aplikasi Jakarta Taxi Dialler.

Ingin tahukan apa itu Jakarta Taxi Dialler ?

Jakarta Taxi Dialler adalah aplikasi yang memudahkan para pengguna android untuk memesan taksi.

Aplikasi dibuat untuk menyelesaikan suatu masalah.

Latar belakang Masalah

Tentunya ada yang pernah mengalami untuk yang rumahnya jauh dari jalan utama, sulit sekali mencari taksi, cara yang biasa dilakukan adalah dengan menelepon provider taksi. Masalahnya banyak diantara kita yang tidak menyimpan nomor telepon provider taksi. Untuk mendapatkan informasi ini biasanya kita menghubungi 147.

Solusi

Atas dasar itulah mari kita Bantu para pengguna android untuk mempermudah mereka dalam memesan taksi dengan memanfaatkan aplikasi  Jakarta Taxi Dialler yang kita buat. Dengan Aplikasi ini pengguna tinggal membuka aplikasi dan memilih provider taksi yang ingin dipesan.

Hal-hal yang harus dilakukan

1.  Kumpulkan data telepon provider taksi, Alhamdulillah setelah googling akhirnya dapat data nomor telepon taksi di Jakarta

No Taksi Telepon
1. Blue Bird 0217941234
2. Ekspress 02126509000
3. Golden 02165300333
4. Primajasa 0217424525
5. Dian 0215807070
6. Sri Medali 0218005555
7. Putra 0217815777

Mohon maaf apa bila ada provider taksi yang belum tercantum di sini, dan nomor yang tercantum sudah tidak valid.

2.  Buat Menunya dalam bentuk List Menu, yang sudah kita pelajari dalam tutorial sebelumnya
3.  Cari script android yang digunakan untuk melakukan panggilan telepon, setelah googling akhirnya dapat referensi di  http://www.helloandroid.com/tutorials/how-make-phone-call-your-application

Semua yang kita butuhkan sudah kita dapatkan, it’s time for coding

1. Buat New Project dengan nama JakartaTaxiDialer, lengkapi seperti gambar dibawah

2. Setelah project tercreate maka secara otomatis android membentuk 3 file yaitu :

  • main.xml
  • string.xml
  • TaxiDialer.java

3. Buka file TaxiDialer.java, edit isinya sehingga kodenya seperti dibawah ini

package com.agus;

import android.app.ListActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;

public class TaxiDialer extends ListActivity {
	//Buat arrray 2 dimensi untuk data taksi yang terdiri dari nama dan nomor telepon
	private String[][] taxi_data = { { "Blue Bird", "0217941234" },
			{ "Express", "02126509000" }, { "Golden", "02165300333" },
			{ "Prima Jasa", "0217424525" }, { "Dian", "0215807070" },
			{ "Sri Medali", "0218005555" }, { "Putra", "0217815777" } };
	//Buat arrray 1 dimensi untuk keperluan pembuatan menu list provider taxi
	private String[] taxi_name = { "Blue Bird", "Express", "Golden",
			"Prima Jasa", "Dian", "Sri Medali", "Putra", "Exit" };

	public void onCreate(Bundle icicle) {
		super.onCreate(icicle);

		// Create an ArrayAdapter, that will actually make the Strings above
		// appear in the ListView
		// Menset nilai array ke dalam list adapater sehingga data pada array
		// akan dimunculkan dalam list
		this.setListAdapter(new ArrayAdapter<String>(this,
				android.R.layout.simple_list_item_1, taxi_name));
	}

	@Override
	/**method ini akan mengoveride method onListItemClick yang ada pada class List Activity
	 * method ini akan dipanggil apabilai ada salah satu item dari list menu yang dipilih
	 */
	protected void onListItemClick(ListView l, View v, int position, long id) {
		super.onListItemClick(l, v, position, id);
		// Get the item that was clicked
		// Menangkap nilai text yang dklik
		Object o = this.getListAdapter().getItem(position);
		String pilihan = o.toString();
		// Mencek pilihan, apabila pilihan = Exit maka akan keluar dari aplikasi
		if (pilihan.equals("Exit")) {
			finish();
		} else {// pilihan != exit maka akan memanggil method callTaxi
			callTaxi(pilihan);
		}
	}

	/**
	 * Launches the activity to make phone call to taxi provider based on
	 * selected taxi
	 *
	 */
	protected void callTaxi(String pilihan) {
		try {
			// Intent digunakan untuk sebagai pengenal suatu activity untuk
			// membuat panggilan telepon
			Intent callIntent = new Intent(Intent.ACTION_CALL);
			String phonenumber = "";
			for (int i = 0; i < taxi_data.length; i++) {
				if (pilihan.equals(taxi_data[i][0])) {
					phonenumber = taxi_data[i][1];
				}
			}
			if (phonenumber.equals("")) {
				Toast.makeText(this, "Provider Taxi is not register",
						Toast.LENGTH_LONG).show();
				return;
			}
			callIntent.setData(Uri.parse("tel:" + phonenumber));
			startActivity(callIntent);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

Pertama kita definisikan class ini sebagai List Activity

Kita buat dua buah array satu array 2 dimensi dengan nama taxi_data yang digunakan untuk menyimpan data nama taxi dan nomor teleponnya. Yang satu laig array 1 dimensi dengan nama taxi_name yang berisi untuk menyimpan hanya data nama taksi yang sama dengan yang ada di taxi_data ditambah dengan “Exit” untuk keperluan keluar dari aplikasi.

Array taxi_name diset kedalam ListActivity dengan menggunakan syntak “setListAdapter”agar terbetuk list menu yang isinya dari array taxi_name.

Agar setiap kita memilih menu ada action yang dilakukan maka kita buat method onListItemClick

Nah didalam method ini kita tangkap menu yang dipilih kita cek apabila yang dipih Exit maka akan keluar dari aplikasi, pilihan selain Exit akan memanggil method callTaxi

Method callTaxi inilah yang akan memproses menu pilihan kita, mencari nomor taxi berdasarkan pilihan menu lalu melakukan panggilan. Agar kita bisa melakukan panggilan kita perlu membuat activity yang dapat melakukan panggilan

Intent callIntent = new Intent(Intent.ACTION_CALL);

Tentukan nomor yang akan dipanggil, lalu lakukan panggilan

callIntent.setData(Uri.parse(“tel:” + phonenumber));

startActivity(callIntent);

4. Untuk dapat melakukan panggilan kita perlu mendaftarkan permission nya melalui file AndroidManifest.xml , buka file AndroidManifest.xml tambahkan kode berikut

	<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
	<uses-permission android:name="android.permission.CALL_PRIVILEGED"></uses-permission>

Sehingga isi lengkap AndroidManifest.xml menjadi seperti ini

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.agus" android:versionCode="1" android:versionName="1.0">
	<application android:icon="@drawable/icon" android:label="@string/app_name">
		<activity android:name=".TaxiDialer" android:label="@string/app_name">
			<intent-filter>
				<action android:name="android.intent.action.MAIN" />
				<category android:name="android.intent.category.LAUNCHER" />
			</intent-filter>
		</activity>

	</application>
	<uses-sdk android:minSdkVersion="8" />
	<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
	<uses-permission android:name="android.permission.CALL_PRIVILEGED"></uses-permission>
</manifest>

5. Sekarang baru Running Time, Simpan semua file yang kita edit, lalu jalankan aplikasi ini.

Untuk memastikan Applikasi kita berjalan bagusnya kita buat list checking

No Tindakan Hasil yang diharapkan
1. Buka Aplikasi Tampil Menu List yang berisi Provider Taxi
2. Pada Menu Pilih Salah Satu Provider Taksi Aplikasi secara otomatis akan melakukan panggilan ke nomor telepn provider taksi yang dipilih
3. Pada Menu Pilih Exit Keluar dari Aplikasi

Berikut hasil dari aplikasi yang kita buat

Pilih Salah Satu Provider Taksi

Bagaimana kawan-kawan tambah semangatkan mendalami android, bayangkan hanya dengan kode yang sedikit kita sudah bisa membuat aplikasi yang cukup bermanfaat bagi pengguna android.

Penulis harapkan kawan-kawan dapat mengembangkan aplikasi ini menjadi lebih baik lagi, kalau bisa jangan hanya Jakarta Taxi Dialler, tapi sudah Indonesia Taksi Dialler yang didalamnya terdapat nomor-nomor Taksi yang terdapat dibeberapa kota besar di indonesia. Kalau sudah jadi bisa disubmit ke android market.

Taxi Dialer ini hanya ide dasar, kawan-kawan bisa mengembangkan ke area selain Taksi, bisa yang dikantornya banyak berhubungan dengan pelanggan, bisa mengumpulkan nomor-nomornya lalu dijadikan aplikasi Customer Sales Dialler. Jadi apabila ada karyawan baru, tinggal install aplikasi tidak usah repot-repot copy phone book

untuk yang baru mulai belajar android, apabila mengalami kesulitan dalam mengikuti tutorial ini, bisa dimulai dengan tutorial  Aplikasi Android Sederhana Menghitung Luas Persegi Panjang

Salam Hangat

Agus Haryanto

65 comments to Aplikasi Android – Jakarta Taxi Dialler

  • rio

    oomagus saya buat kok pas yg di
    38 super.onListItemClick(l, v, position, id);
    gk mau yah?!
    mohon pencerahan nya…

  • admin

    @rio, nggak maunya kenapayah, bisa beri informasi keterangan errornya. biasanya kalau kode kita salah, eclipse langsung memberi tanda silang merah didepannya dan kalau kita klik tanda merah tersebut ada keterangan error dan petunjuk penyelesaiannya.

  • rio

    ada tulisan nya
    (The method onListItemClick(ListViwe, View, int, long) is undefined for the type Activity)

  • admin

    method onListItemClick(ListViwe, View, int, long) is undefined for the type Activity
    ListViwe itu salah ketik nggak ?
    kan harusnya onListItemClick(ListView l, View v, int position, long id)
    dah coba copy paste langsung dari listing kode yang ada di tutorial ini
    pastikan extendsnya dari class ListActivity
    public class TaxiDialer extends ListActivity

  • rio

    ooh iya makasih mas…sudah bisa bener bisa jalan!! maklum masih newbie coba2 hiii

    oh iya saya lg buat LBS di android…tp masih kurang tutorial nya, klo berkenen bisa minta ilmu nya…

    satu lg…klo sudah jadi aplikasinya mo meng Import ke file .apk buat di masukun ke HP Nexian A890 2.1 cara nya gimana?!

    terima kasih mas

  • Mas saya amu tanya,,kalo misalnya mau buat separator buat pemisahnya gmn??
    misalnya yang mau saya buat tidak hanya taksi,,tapi masi di satu apliasi..
    trus mas kalo mau nampilin info dibawah itemnya gmn??
    misalnya taksi blue bird nah trus dibawahnya ada infonya
    misalnya alamatnya dimana,,seperti itu,,
    mohon jwabannya,,,

  • Apresiasi atas posting yang bagus dan bermanfaat. Mungkin ada sedikit sharing sedikit, mengenai nomor telepon taksi yang Mas Agus tampilkan, bahwa nomor kontak untuk Taksi Express adalah 021-2650-9000. Thanks ya =)

  • admin

    @Andika, Terimakasih atas koreksinya, saya akan update articlenya 🙂

  • admin

    @bango01,
    Mas saya amu tanya,,kalo misalnya mau buat separator buat pemisahnya gmn?
    maksudnya, tidak hanya telepon taksi saja, jadi bisa ada telepon lainnya.
    untuk hal ini, ada beberapa cara yang bisa dilakukan:
    1. Buat Menu List bertingkat, maksudnya pada awal muncul kategorinya misalnya : Taxi, Bus, Kereta API. apabila kita klik taxi, tampilka list menu taxi
    2. Dengan Tab Navigasi, jadi dimasing-masing Tab ada list menunya bergantung dari tab yang diklik.

    trus mas kalo mau nampilin info dibawah itemnya gmn??
    misalnya taksi blue bird nah trus dibawahnya ada infonya
    Ini Maksudnya kayak accordion ?

  • banyak cara untuk nampilkan info seperti yg mas inginkan. salah satunya dengan memanfaatkan AlertDialog.Builder.

  • dedekovic

    Om Agus,
    Beda nya apa ya kalo saya masukin nomor ke phone book atau contact list terus dial ke nomor taxi nya ? 😀

  • kan mempermudah dan gampang dishare seperti yg omagus bilang di artikelnya 🙂
    dan kl di kembangkan lagi seperti yg om bango bilang jg.
    dan tentu saja lebih cepat aksesnya kan.
    coba contact list berisi ratusan bahkan ribuan nomer?

    makasih omagus atas tutorial nya 🙂

  • Nice tutorial…
    Saya mw coba dulu ni…
    Inspiratif bgt ni idenya, Om..
    Matur Nuwun, Trima Kasih, Thx…..

  • Agus Haryanto

    @cahyoherdian, ayo mas cahyo bikin aplikasi Indonesia Taxi Dialler

  • mu tanya Gan, itu aplikasinya kan belum ada fitur searchnya untuk pencarian nama jasa taksinya, yang ane mu tanyaiin source code untuk ditambahin fitur searchnya??

  • agung

    for (int i = 0; i < taxi_data.length; i++) {
    if (pilihan.equals(taxi_data[i][0])) {
    phonenumber = taxi_data[i][1];
    }
    }
    if (phonenumber.equals("")) {
    Toast.makeText(this, "Provider Taxi is not register",
    Toast.LENGTH_LONG).show();
    return;
    }

    code diatas maksudnya gimana mas, mohon pencerahan,,,,,

  • maia maharani

    makasih ya oomm ngebantu projek saya

    maaf saya kan pemula mau tanya
    softwarenya opensource apa enggak??
    klo enggak ada yang opensource gak??

  • agungp

    tutornya mantab mas

    minta izin idenya dipake buat penulisan ilmiah

  • Agus Haryanto

    @maia, Softwarenya Free.

  • maemun

    Bang Agus

    Udah jalan nih di emulator, trus codingnya udah ada sdiff, dan persis, tapi ketika kita pilih Taxi bluebird dan lainnya, tidak ada action calling ke nomornya, sedangkan di console eclipse tidak ada error, saya juga sudah coba debug namun tidak menemukan titik terang.

    Bagaimanakah cara debug yang benar untuk melihat kenapa menu tidak beraksi ketika di klik?

    NB; he he kapan2 kopdar, ane tinggal di belakang Smesco bidan ice

  • free

    Mas,mw tanya??
    kok klo saya pilih salah satu pilihannya muncul “mobile network not avaible” yah???
    artinya apa yah mas???

  • Mas Agus mw nanya ni. udah bkin n udh running tp pas d klik g mw call, thu knpa ya?
    oiy misalnya nomer telepon taxi ny g hanya 1 tp ad 2 atau lebih thu cara mskinny gmna ya? apa array nya di tambah. terima kasih…

  • Agus Haryanto

    @agung, kode diatas maskudnya kalau ada taksi yang belum kita daftarkan nomornya maka akan muncul Notifikasi Provider Taxi is not Register

  • Agus Haryanto

    @maemun, coba cek file AndroidManifest.xml nya apaka sudah ditambahkan permission untuk fitur call

  • Agus Haryanto

    @jevrie, Kalau lebih dari satu, yah tinggal dikasih koma aja untuk pemisah tlp1, tlp 2 dst. tapi ini tidak bisa dihandle code diatas. karena sudah lebih dari sat berarti harus menambahkan dialog untuk menampikan nomor-nomornya. nah dinomor-nomor tersebut pasang listenner onclick untuk callnya

  • Tonny

    mas agus, kok ga bisa jalan ya disaya ?
    di eclipse ga ada error, tapi pas di AVD , FORCE CLOSE gitu mas ..
    mohon bantuannya ya mas.. makasih 😀

  • ohh bgtu ya mas . mksh mas atas penjelasannya.

  • dodo

    tutorial yg sangat berguna mas…
    tapi, kalau boleh request sih, aku ingin tau tutorial mengambil data dari database luar (misalnya mySql), menampilkannya dalam list, dan kalau list diklik, data-data selengkapnya ditampilkan. mungkin tutorial taxi caller diatas bisa dibikin versi onlinenya (dari database luar maksud saya).

    sejauh ini saya sudah bisa menampilkan listnya dari database luar. tapi saya bingung bagaimana cara menampilkan data selengkapnya setelah list tersebut di klik. kalo ada waktu bikin dong tutorialnya mas… hehehhe thx

  • hafif

    mas, kalau mau nambahin icon untuk gambar setiap merk taksi nya gimana? trus icon aplikasi gimana cara ganti nya,,??
    terimakasih

  • toni

    pak kenapa di tutorial ini tidak ada tahap edit file main.xml? apa beda kegunaan file main.xml dengan file AndroidManifest.xml?
    terima kasih atas pencerahanya pak agus

  • penguintengil

    makasii tutor nya kk …. naiss sekali

  • juwita

    mas. aplikasinya jalan tapi pas diklik gak ada actionnya pdhl dibagian manifest.xml-nya udah ditambahin coding permission. knp yak mas?
    tolong pencerahannya yak.
    Thx

  • juwita

    mas kendala yg sekarang sama kaya user “free” diatas. gmn cara menyelesaikannya yak?

  • bagaimana source codenya apabila ditambahin fitur google maps??mohon pencerahanya pak

  • kalo di list view itu ada hidden value gak pak ? misalkan .. kasus saya menggunakan database .field table misalkan id , nama , alamat . nah di list view saya hanya menampilkan nama nya aja .. dan ketika di itemselected itu pengennya itu id dari tabel dan pindah ke activity baru hanya untuk menampilkan alamat .. nah pertanyaan .. di listview bisa di masukin hidden value =id . dan onclick nya = id table ..

  • tegam

    ane juga om Agus koq klo diklik listnya langsung muncul pesan “mobile network not avaible” mhon pencerahannya suhu…

  • tegam

    wah,,,ternyata tutorialnya berhasil,,,tadinya g muncul contactnya,soalnya ga ada jaringan operatornya,pas udah ada sinyal langsung bisa dah,,,makasih om tutorialnya bagus banget…

  • coba dulu ah,,bisa buat belajar ne,,

  • sqdzn

    @toni

    sependek pengetahuan nubi nan imut ini.
    main.xml = configurasi layout / tampilan.
    tampilan yang dimaksud di sini adalah tampilan android seperti button, checkbox, radio button, edit text, etc…
    nah. karena kita gak ngurusin tampilan layout. jadi kita straight ke java nya aja. karena tampilan nya ntar lansung nyesuain aja. (hasilnya kan cuman array vertical nama taxi).

    CMIIW.

  • chimmedorrin

    Om saya ada error di line ini :
    protected void onListItemClick(ListView 1, View v, int position, long id) {

    pesan errornya :
    Multiple markers at this line
    – Method breakpoint:TaxiDialer [entry] –
    onListItemClick()
    – Syntax error on token “1”, invalid
    VariableDeclaratorId
    kenapa ya om? saya sudah tulis smua codeny.. masih ,,
    mohon pencerahannya Om agus.. ^_^ makasih

  • Haris

    mass ko muncul pesan warning kya gni..
    tag appears after tag

  • @haris : harus dimasukkan juga script android:targetSdkVersion=”7″
    Contoh :

  • Mohon pencerahannya… Semuanya sudah OK. Tapi begitu dijalankan di emulator, muncul pesan : the application has stopped unexpectedly. Please try again. Force close. Solusinya gimana ya. Saya pake platform 2.1, versi SDK 7. Eclipse Indigo. Terima kasih.

  • Yudi

    mas saya sedang mengembangkan aplikasi ini , saya ingin menambahkan alamat url dari masing – masing tiap provider, jadi intinya ga cuma sekedar menampilkan nomer tlp saja jadi sebelum itu ia masuk ke dalam url atau bisa disebut menampilkan alamat emailnya, namun saya tidak mengerti caranya mas, mohon di bantu ya mas.. makasih mas agus 🙂

  • junos

    mas kok kalo call no nya not regiter ya?

  • ToMi

    alhmdulillah makasih bnyak mas agus buat source code nya…

    saya sudah bisa menjalakannya..^_^

  • Mursal

    Pak terima kasih, tutorialnya sangat membantu, tapi saya ingin menanyakan dua pertanyaan:

    1. Kenapa ketika ditambahkan //setContentView(R.layout.main); aplikasinya yang langsung berhenti yaa, tapi kalau dihilangkan tetap bisa berjalan dengan baik?

    2. Apa bedanya parameter icicle pada //super.onCreate(icicle) dengan parameter savedInstanceState pada //super.onCreate(savedInstanceState)

    Terima kasih

  • ricky

    om koding nya sudah bner tetapi muncul muncul pesan : the application has stopped unexpectedly. Please try again. Force close.
    mohon pncerahannya..
    trus jika saya menggabungkannya dengan gmaps saya harus pakai yang api atau yang standar di target android nya..
    trims om

  • rizky17

    mas mw tnya semisalnya tuh angka di ganti contoh gini *123# bisa ga mas?

    masalahnya saya pernah coba tuh.. tp ga bisa ngebaca tanda “#”

    need help mas.. :)v

  • Rian

    mas agus saya mau nannya ni..

    semua sudah berjalan lancar, maslahnya cuma 1.

    pas saya call, kok tidak bisa ya?

    terimaksih mas sebelumnya..

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>