Tutorial Android - Cara Membuat Aplikasi Lampu di Android

Yudi Setiawan 30 Maret 2016

Tutorial Android - Cara Membuat Aplikasi Lampu di Android

Saya rasa tutorial ini cukup gampang dilakukan karena, Anda sebenarnya hanya memanfaatkan fitur kamera pada smartphone android Anda. Saya berniat menulis tutorial ini gara - gara pada waktu itu saya masuk mata kuliah Robotika Lanjut dimana, pada saat testing perangkat komponen yang saya buat di papan pcb ada yang tidak bekerja sebagaimana mestinya. Sang dosen pun coba mengarahkan saya katanya coba sorot papan pcb kamu menggunakan senter dari bawah agar kelihatan apakah ada jalur yang terputus atau kaki komponennya yang menyatu dengan komponen lain. Dari situ kemudian, saya berniat mau membuat smartphone android saya agar bisa menjadi senter dengan menggunakan lampu flash kameranya namun, sungguh sayang aplikasi bawaannya tidak tersedia jadi, akhirnya coba saya download melalui play store namun, sungguh sayang lagi bahwa play store memberikan pesan error kira - kira seperti ini "Insufficient Storage Available". Akhirnya saya pun kesal bukan main. Namun, saya coba tetap berpikir tenang dan mencoba solusi alternatif lain yakni, bagaimana kalau saya buat aplikasi lampunya sendiri aja. Akhirnya, pergilah saya ke pc online milik kampus dan coba - coba searching di google dan akhirnya ketemu situs ini. Pasti Anda bertanya - tanya mengapa harus pergi ke pc online milik kampus padahal searching di smartphone sendiri kan bisa. Hehehe.... Sungguh sial nasib saya ketika itu memang dimana, paket kuota internet saya habis.

Berikut langkah - langkah dalam membuat aplikasi tersebut:

  1. Buka Eclipse atau Android Studio. Terserah yang mana saja. Kalau saya sih pada saat penulisan tutorial ini menggunakan Eclipse.
  2. Buat project android baru dengan keterangan seperti pada gambar.Screenshot - 03252016 - 02:36:37 PM
  3. Setelah selesai membuat project nya, lanjut kita ke coding nya. Buka file javanya khususnya file MainActivity.java. Catatan: nama file ini tergantung ketika pada pembuatan project yang Anda buat tadi jadi, disesuaikan ya.
  4. Setelah di buka file javanya, ketikkan coding berikut ke dalamnya.
    package codepolitan.lampuku;
     
    import android.app.Activity;
    import android.hardware.Camera;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.View;
    import android.widget.ToggleButton;
     
    public class MainActivity extends Activity implements View.OnClickListener {
     
        // komponen
        ToggleButton tglbtnLampu;
     
        // objek
        @SuppressWarnings("deprecation")
        Camera kamera;
     
        @Override
        protected void onCreate(Bundle b) {
            super.onCreate(b);
            setContentView(R.layout.activity_main);
     
            // Initial komponen
            tglbtnLampu = (ToggleButton) findViewById(R.id.tglbtnLampu);
            tglbtnLampu.setOnClickListener(this);
        }
     
        @SuppressWarnings("deprecation")
        @Override
        public void onClick(View v) {
            if (v == tglbtnLampu) {
     
                if (tglbtnLampu.isChecked()) {
                    kamera = Camera.open();
                    Camera.Parameters params = kamera.getParameters();
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                    kamera.setParameters(params);
                    kamera.startPreview();
                } else {
                    kamera = Camera.open();
                    Camera.Parameters params = kamera.getParameters();
                    params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                    kamera.setParameters(params);
                    kamera.stopPreview();
                }
     
            }
        }
    }
    
  5. Setelah itu buka file layout xml nya, lebih tepatnya file activity_main.xml. File ini juga disesuaikan namanya pada saat pembuatan project tadi. Isi coding berikut ke dalam file tersebut.
    <?xml version = "1.0" encoding = "utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    
    <ToggleButton
    android:id="@+id/tglbtnLampu"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_centerInParent="true"
    android:textOff="Lampu Mati"
    android:textOn="Lampu Hidup" />
    
    </RelativeLayout>
    
  6. Setelah itu buka file AndroidManifest.xml dan cukup tambahkan uses-permission camera dan uses-feature camera seperti pada gambar berikut. Screenshot - 03252016 - 02:43:22 PM
  7. Setelah selesai, silakan compile dan run project tersebut. Kalau di eclipse dengan cara menekan tombol F11 dan kalau di Android Studio kalau nggak salah tekan tombol Shift + F10.
Gimana? Jalankah Aplikasi tersebut? Kalau tidak bekerja sebagaimana mestinya dan Anda mendapatkan pesan error seperti berikut di Logcat, berarti ada yang harus kita perbaiki pada codingan di atas. (Sebenarnya codingan diatas itu memang ada yang error saya buat hehehehe.....) Screenshot - 03252016 - 03:02:59 PM

Dari pesan error diatas mengatakan bahwa kita perlu memberikan try catch ketika mendeklarasikan Camera.open. Ok, coba Anda ubah codingan java nya menjadi seperti berikut.

package codepolitan.lampuku;

import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ToggleButton;

public class MainActivity extends Activity implements View.OnClickListener {

	// komponen
	ToggleButton tglbtnLampu;

	// objek
	@SuppressWarnings("deprecation")
	Camera kamera;

	@Override
	protected void onCreate(Bundle b) {
		super.onCreate(b);
		setContentView(R.layout.activity_main);

		// Initial komponen
		tglbtnLampu = (ToggleButton) findViewById(R.id.tglbtnLampu);
		tglbtnLampu.setOnClickListener(this);
	}

	@SuppressWarnings("deprecation")
	@Override
	public void onClick(View v) {
		if (v == tglbtnLampu) {
			try {
				if (tglbtnLampu.isChecked()) {
					kamera = Camera.open();
					Camera.Parameters params = kamera.getParameters();
					params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
					kamera.setParameters(params);
					kamera.startPreview();
				} else {
					kamera = Camera.open();
					Camera.Parameters params = kamera.getParameters();
					params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
					kamera.setParameters(params);
					kamera.stopPreview();
				}
			} catch (Exception e) {
				e.printStackTrace();
				Log.e("exceptionku", e.getMessage());
			}
		}
	}
}

Gimana? saya rasa masih error kan. hehehe.... Iya jelas error namun, setelah kita memberikan try catch Anda akan tahu apa penyebab error tersebut. Iya, Anda sudah tahu kan bahwa error terjadi gara - gara kita sudah memanggil camera.open untuk menghidupkannya namun, pada saat mematikannya kok kita panggil lagi camera.open nya sehingga inilah yang menyebabkan sistem error karena, ketika lampu hidup camera.open sudah berjalan. Nah, ketika mematikan lampu seharusnya camera.open nggak perlu di panggil lagi. Jadi, begini algoritmanya.

  1. Pada saat lampu di hidupkan, panggil camera.open agar kita bisa mengakses fitur led flashlight pada smartphone android dan kita set parameternya menjadi FLASH_MODE_TORCH.
  2. Pada saat lampu di matikan, seharusnya kita tidak perlu panggil camera.open lagi karena service ini kan sudah berjalan jadi, kita cukup meng-set parameternya menjadi FLASH_MODE_OFF dan di akhir baris pada statement ini atau setelah tulisan kamera.stopPreview(), tambahkan statement kamera.release yang berarti service camera yang terbuka tadi kita tutup agar ketika lampu di hidupkan kembali maka, aksesnya tidak bentrokan dengan camera.open yang sudah terbuka sebelumnya.
Berikut codingan akhir dari file javanya.
package codepolitan.lampuku;

import android.app.Activity;
import android.hardware.Camera;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ToggleButton;

public class MainActivity extends Activity implements View.OnClickListener {

	// komponen
	ToggleButton tglbtnLampu;

	// objek
	@SuppressWarnings("deprecation")
	Camera kamera;

	@Override
	protected void onCreate(Bundle b) {
		super.onCreate(b);
		setContentView(R.layout.activity_main);

		// Initial komponen
		tglbtnLampu = (ToggleButton) findViewById(R.id.tglbtnLampu);
		tglbtnLampu.setOnClickListener(this);
	}

	@SuppressWarnings("deprecation")
	@Override
	public void onClick(View v) {
		if (v == tglbtnLampu) {
			try {
				if (tglbtnLampu.isChecked()) {
					kamera = Camera.open();
					Camera.Parameters params = kamera.getParameters();
					params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
					kamera.setParameters(params);
					kamera.startPreview();
				} else {
					Camera.Parameters params = kamera.getParameters();
					params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
					kamera.setParameters(params);
					kamera.stopPreview();
					kamera.release();
				}
			} catch (Exception e) {
				e.printStackTrace();
				Log.e("exceptionku", e.getMessage());
			}
		}
	}
}