X

Thursday, November 21, 2019

Cara Menginstall Laravel 6 Terbaru Menggunakan Composer - Coding Rakitan

Cara Menginstall Laravel 6  Terbaru Menggunakan Composer
(Source : Dokumentasi Pribadi)

Halo teman-teman CODINGRAKITAN, bagaimana kabarnya? Semoga kalian semua pada sehat ya teman-teman. Pada artikel kali ini, saya akan membahas tentang cara menginstall Laravel 6. (Baca : Pengertian Laravel) Untuk menginstal laravel 6, kita harus tahu dulu apa persyaratan yang digunakan sebelum menginstal Laravel 6 ini, agar tidak terjadi ERROR yang tidak diinginkan nantinya.

Yang teman-teman perlu persiapkan adalah :
- Menginstall Composer (Lihat : Apa Itu Composer dan Cara Penginstallannya?)
- Menggunakan PHP Versi 7.2.0 atau versi terbarunya

Setelah memenuhi semua persayaratan itu, teman-teman bisa lanjut ketahap penginstalan Laravel.

Untuk menginstall Laravel ini ada 3 cara yaitu lewat laravel installer, install langsung project menggunakan composer dan juga clone dari github. Namun pada tutorial kali ini, saya hanya akan jelaskan cara menginstall laravel menggunakan laravel installer dan juga install langsung project via composer.

Okey, let's go!

Via Laravel Installer

Pertama-tama, kita buat dulu sebuah folder di direktori kita. Saya disini menginstall laravel di drive E saya.

Untuk membuat folder, kita bisa buat foldernya secara manual, bisa juga menggunakan cmd, saya disini mencoba membuat foldernya dengan cmd, hehe, biar kelihatan lebih greget gitu, heheh. Sekalian belajar.

Teman-teman silahkan buka CMD (Command Prompat) dengan menekan tombol Logo windows + R dikeyboard kita. Kemudian ketikan cmd lalu tekan ENTER atau klik OK saja.

(Source : Dokumentasi Pribadi)
Kemudian, pilih drive yang teman-teman inginkan untuk menginstall laravelnya. Kebetulan saya menggunakan drive E saya. Langsung ketik E: pada CMD-nya, maka akan otomatis diarahkan ke drive yang kita pilih.

(Source : Dokumentasi Pribadi)
Kemudian ketika mkdir diikuti dengan nama folder yang teman-teman ingin buat. Contohnya mkdir nama folder (Saya membuat folder dengan nama laravel installer jadi perintahnya menjadi mkdir laravel-installer). Teman-teman bisa ganti namanya dengan nama folder yang teman-teman suka artinya bebas. Setelah itu maka teman-teman akan melihat ada folder laravel-installer didrive yang teman-teman sudah pilih sebelumnya.

(Source : Dokumentasi Pribadi)
Selanjutnya, kita menuju kepenginstallan laravelnya, pastikan teman-teman terhubung ke internet ya teman-teman.

Ketikan perintah : composer global require laravel/installer

(Source : Dokumentasi Pribadi)
Karena saya sudah menginstal laravel installer sebelumnya, maka tampilannya akan seperti ini, teman-teman mungkin tampilanya berbeda, tunggu sampai prosesnya selesai. Kemudian kita buat project kita dengan nama yang kita suka. Masuk dulu ke folder laravel-installernya dengan mengetikan cd laravel-installer kemudian ENTER.

(Source : Dokumentasi Pribadi)
Setelah itu ketikan perintah laravel new nama-project kita (Saya menggunakan nama folder blog. Maka perintahnya menjadi laravel new blog kemudian tekan ENTER). Seperti sebelumnya teman-teman bebas membuat nama project sesuai keinginan teman-teman.

(Source : Dokumentasi Pribadi)
Setelah muncul tulisan seperti dibawah ini, berarti teman-teman sudah berhasil menginstall laravel via laravel installer. Kemudian masuk dulu difolder blog dengan mengetikan perintah cd blog setelah itu jalankan perintah php artisan serve.

(Source : Dokumentasi Pribadi)
Untuk menjalankannya, teman-teman tinggal ketikan perintah php artisan serve

(Source : Dokumentasi Pribadi)
Kemudian copykan alamat local server http://127.0.0.1:8000 ke browser kita maka akan tampil seperti dibawah ini. Hore, cara pertama sudah berhasil.



Via Composer Create-Project

Cara kedua cukup mudah, teman-teman tinggal arahkan file installan teman-teman ke drive yang kalian inginkan. ikuti langkah sebelumnya diatas. Kemudian ketikan langsung perintah composer create-project --prefer-dist laravel/laravel blog (blog merupakan nama folder). Kemudian tekan ENTER.

(Source : Dokumentasi Pribadi)
Tunggu sampai proses penginstallannya selesai, seperti gambar dibawah ini.

(Source : Dokumentasi Pribadi)
Kemudian, jalankan perintah, php artisan serve untuk menjalankannya,maka akan muncul alamat local servernya yaitu http://127.0.0.1:8000 . Copykan alamatnya ke browser dan kalau tampilannya seperti dibawah ini, berarti teman-teman sudah berhasil menginstall laravel via composer.

(Source : Dokumentasi Pribadi)
Okey teman-teman, itulah cara yang bisa kita gunakan untuk menginstall laravel dikomputer kita. Teman-teman bisa pakai salah satu cara diatas untuk menginstallnya. Semoga berhasil ya teman-teman. Kalaupun ada yang bermasalah dalam proses penginstallannya, teman-teman bisa tanyakan dikolom komentar.

Sampai jumpa dipostingan LARAVEL selanjutnya.

Terima Kasih,
Keep Learning - Keep Sharing

Wednesday, November 20, 2019

Cara Membuat Project Baru Django - Coding Rakitan


Sebelumnya dalam postingan Mengenal Apa itu Django dan Cara Penginstalannya kita telah menginstall django. Pertanyaan yang muncul selanjutnya adalah bagaimana cara memulai membuat project dengan django.

Caranya sangat mudah anda tinggal membuka CMD atau Command Promt lalu arahkan ke folder mana anda ingin membuat project baru. Setelah itu ketikkan perintah dibawah pada cmd.

 
django-admin startproject nama_web
 
Nama_web bisa anda ganti sesuai keinginan anda. Jika proses pembuatan selesai maka di folder yang tadinya anda arahkan untuk membuat project baru akan muncul direktori dengan struktur seperti berikut.

gambar

Pada contoh struktur di atas saya membuat project baru dengan nama belajar sehingga muncul folder baru dengan nama belajar. Berikut adalah penjelasannya.
  • Belajar - merupakan folder root atau utama yang menampung semua kebutuhan project web yang dibuat.
  • manage.py - file ini merupakan server yang akan mengolah project web yang dibuat. Agar server web dapat berjalan file inilah yang pertama kali di eksekusi ke CMD.
  • belajar/__init__.py - file ini merupakan file kosong yang menandai bahwa direktori ini adalah sebuah paket (python package).
  • belajar/settings.py - Seperti namanya file ini berisi konfigurasi project seperti database, auth, hingga language code.
  • belajar/url.py - file ini adalah tempat untuk mendeklarasikan url fungsinya sama dengan web.php pada routes laravel.
  • belajar/wsgi.py


Setelah project baru selesai dibuat maka pelajaran selanjutnya yang perlu diketahui adalah cara menjalankan project yang telah dibuat. Caranya sangat mudah anda tinggal menjalankan file manage.py dengan mengetikkan perintah python manage.py runserver dan tekan enter. Selanjutnya buka browser anda dan masukkan url "localhost:8000" dan tampilan pertama akan muncul seperti berikut.




Mengenal Apa itu Django dan Cara Penginstalannya - Coding Rakitan


Python merupakan salah satu bahasa pemrograman yang populer di kalangan para programer. Tidak hanya dapat digunakan untuk membangun aplikasi desktop, Python juga dapat digunakan untuk membangun aplikasi berbasis web. Salah satu framework website yang menggunakan bahasa python adalah Django.

Django adalah sebuah framework full-stack yaitu istilah yang berarti django meliputi sisi front-end dan juga back-end. Susunan tahapan yang harus anda lalui untuk dapat menggunakan framework django : Install python -> Install PIP -> Install Django.

Install Python

Agar dapat membangun web dengan framework django terlebih dahulu anda harus menginstall python. Anda dapat mendownload di halaman resminya disini. Setelah anda berhasil menginstall python, silahkan lakukan pengecekan untuk memastikan phyton sudah siap digunakan. Caranya buka Command Promt atau CMD lalu ketik "python --version", jika berhasil akan muncul informasi versi python seperti gambar dibawah.



Install PIP

Lanjut ke tahap penginstalan PIP yaitu sebuah pengolah package untuk python. PIP ini sama fungsinya seperti Composer untuk php atau NPM pada Node js. Pengolah package ini nantinya diperlukan untuk mendownload Django. Cara penginstalan PIP cukup mudah, silahkan download file get-pip.py, setelah itu buka cmd dan arahkan ke folder file get-pip.py berada. Selanjutnya ketik perintah "python get-pip.py" di cmd dan tunggu hingga proses instalasi selesai. Untuk dokumentasi lengkap penginstalan PIP dapat anda lihat disini.

Install Django

Tahap terakhir adalah menginstall Django cara sangat mudah anda tinggal buka CMD lalu ketik "pip install django" lalu tunggu hingga proses selesai. Untuk memastikan django telah terpasang, ketikkan perintah "django-admin --version" di CMD, jika muncul versi django seperti gambar di bawah maka selamat django anda siap digunakan.



Sekarang anda bisa memulai untuk membuat project dengan django. Untuk cara pembuatan project baru menggunakan django anda bisa melihatnya di Postingan : Cara Membuat Project Baru Django.

Cara Membuat View Pager di Android Studio - Coding Rakitan



Hai Sobat Coding Rakitan kali ini kita akan belajar menggunakan View Pager di Android Studio. View Pager sendiri merupakan sebuah widget yang disediakan oleh Android Studio untuk membuat tampilan list yang keren pada aplikasi. Dengan menggunakan PagerView kita dapat membuat tampilan aplikasi seperti slide, list file horizontal, dan masih banyak lagi.

Berikut contoh tampilan yang bisa dibuat dengan memanfaatkan widget View Pager.



Sedangkan untuk tampilan yang akan kita buat nantinya akan tampak seperti berikut.



Berikut adalah daftar file baik Class, layout, ataupun drawable yang akan dibuat dalam tutorial kali ini.




Selain itu ada beberapa data berupa array yang diperlukan dalam mengisi card yang akan di tampilkan dalam View Pager nantinya. Cara membuat array ini anda tinggal klik kanan pada folder values -> New -> Value resources file, lalu beri nama array. Selanjutnya isi dengan kode seperti dibawah ini.


 
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="judul">
        <item>Google</item>
        <item>Coding Rakitan</item>
        <item>Facebook</item>
    </string-array>
    <string-array name="text">
        <item>Google merupakan website mesin pencari ...</item>
        <item>Coding Rakitan merupakan sebuah blog. . . </item>
        <item>Salah satu media sosial yang paling . . .</item>
    </string-array>
    <string-array name="gambar">
        <item>a</item>
        <item>b</item>
        <item>c</item>
    </string-array>
</resources>
 

Langsung saja untuk membuat tampilan seperti di atas menggunakan View Pager silahkan buka Android Studio anda. Buat sebuah project baru dengan format sperti dibawah.

  • Name : Belajar Pagerview
  • Package name : codingrakitan.blogspot.com.belajarpagerview (Atur sesuai keinginan)
  • Language : Java
  • Minimum API Level : API17 Android 4.2 (Jelly Bean)
  • Chose Your Project : Empty Activity

Bagi pemula yang belum tahu cara membuat project baru silahkan kunjungi Cara Membuat Project Baru di Android Studio.

Setelah project baru selesai dibuat, lanjut ke tahap menambahkan dependencies yaitu "implementation 'com.android.support:support-v4:28.0.0'" kedalam file build.grandle (Module.app). Sehingga nantinya dependencies kita akan tampak seperti berikut.

 
  dependencies {
       implementation fileTree(dir: 'libs', include: ['*.jar'])
       implementation 'com.android.support:appcompat-v7:28.0.0'
       implementation 'com.android.support.constraint:constraint-layout:1.1.3'
       testImplementation 'junit:junit:4.12'
       androidTestImplementation 'com.android.support.test:runner:1.0.2'
       androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
       implementation 'com.android.support:support-v4:28.0.0'
   }

 
Atau cara cepatnya silahkan klik ikon download seperti pada gambar di bawah.



MainActivity

 
public class MainActivity extends AppCompatActivity {

    TextView a, b;
    ViewPager pagerView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        a = findViewById(R.id.a);
        b = findViewById(R.id.b);
        pagerView = findViewById(R.id.pager);
        isiViewPager();
    }

    private void isiViewPager() {
        Resources res = getResources();
        String[] judul = res.getStringArray(R.array.judul);
        String[] text = res.getStringArray(R.array.text);
        String[] gambar = res.getStringArray(R.array.gambar);
        AdapterViewPager adapter = new AdapterViewPager();
        b.setText(""+judul.length);
        for (int i=0;i<judul.length;i++){
            adapter.addCardItem(new ModelItem(judul[i], text[i], gambar[i]));
        }
        pagerView.setAdapter(adapter);
        pagerView.setOffscreenPageLimit(3);
        pagerView.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int i, float v, int i1) {

            }

            @Override
            public void onPageSelected(int i) {
                int p = i+1;
                a.setText(""+p);
            }

            @Override
            public void onPageScrollStateChanged(int i) {

            }
        });
    }
}
 

AdapterViewPager

 
public class AdapterViewPager extends PagerAdapter {


    private List<ModelItem> mData;


    private Context context;
    public AdapterViewPager() {
        mData = new ArrayList<>();
    }



    public void addCardItem(ModelItem item) {
        mData.add(item);
    }


    @Override
    public int getCount() {
        return mData.size();
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return view == object;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        View view = LayoutInflater.from(container.getContext())
                .inflate(R.layout.cardw, container, false);
        TextView judul = view.findViewById(R.id.tv_judul);
        TextView text = view.findViewById(R.id.tv_text);

        judul.setText(mData.get(position).getJudul());
        text.setText(mData.get(position).getText());


            container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        container.removeView((View) object);
    }


}


 

ModelItem

 
public class ModelItem{

    String judul, text, gambar;
    public ModelItem(String judul, String text, String gambar){
        this.judul = judul;
        this.text = text;
        this.gambar = gambar;
    }

    public String getJudul() {
        return judul;
    }

    public void setJudul(String judul) {
        this.judul = judul;
    }

    public String getText() {
        return text;
    }

    public void setText(String text) {
        this.text = text;
    }

    public String getGambar() {
        return gambar;
    }

    public void setGambar(String gambar) {
        this.gambar = gambar;
    }
}
 

activity_main.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="match_parent"
    android:background="#E8E8E8"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:orientation="horizontal"
        android:padding="10dp">

        <TextView
            android:id="@+id/a"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="1"
            android:textColor="@android:color/black"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/textView4"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="5dp"
            android:layout_marginRight="5dp"
            android:text="/"
            android:textColor="@android:color/black"
            android:textSize="24sp" />

        <TextView
            android:id="@+id/b"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="-"
            android:textColor="@android:color/black"
            android:textSize="24sp" />
    </LinearLayout>

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clipToPadding="false"
        android:overScrollMode="never"
        android:paddingLeft="50dp"
        android:paddingEnd="50dp"
        android:paddingRight="50dp" />
</LinearLayout>
 

cardw.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:padding="10dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="370dp"
        android:background="@android:color/white"
        android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="200dp"
            android:background="@android:color/holo_blue_dark"
            android:orientation="vertical" />

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:padding="20dp">

            <TextView
                android:id="@+id/tv_judul"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="TextView"
                android:textColor="@android:color/black"
                android:textSize="18sp"
                android:textStyle="bold" />

            <TextView
                android:id="@+id/tv_text"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="7dp"
                android:text="TextView" />
        </LinearLayout>

        <Button
            android:id="@+id/button"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|right"
            android:layout_margin="10dp"
            android:background="@color/colorAccent"
            android:text="More"
            android:textColor="@android:color/white" />

    </LinearLayout>

</LinearLayout>
 

Tuesday, November 19, 2019

Apa Itu Version Control System Dan Manfaatnya Bagi Programmer - Coding Rakitan

VERSION CONTROL SYSTEM
VERSION CONTROL SYSTEM (Source : Dokumentasi Pribadi)
Halo sobat-sobat CODINGRAKITAN, apa kabar? Semoga kalian semua baik-baik saja.
Pada artikel kali ini, saya akan membagikan kepada anda sekalian tentang VERSION CONTROL SYSTEM. Mahkluk apa sih itu? Hehehe, mari kita bedah bersama.

Kalau teman-teman seorang desainer grafis, pernah nggak sih kalian nyimpan design, seperti contoh pada gambar dibawah ini :

VERSION CONTROL SYSTEM
(Source : Dokumentasi Pribadi)
Bagi teman-teman yang sedang atau sudah melewati skripsi, pernah nggak nyimpan file seperti dibawah ini? Kalau pernah, berarti kita sama, Hehehe.

VERSION CONTROL SYSTEM

(Source : Dokumentasi Pribadi)
Kalau datang revisi didosen pembimbing misalnya ditulis revisi 1, 2 dan seterusnya. Begitu pula dengan teman-teman yang design grafis, misalnya nyimpan file 1, file 1 -revisi, file 2 revisi dan seterusnya dan ini kita lakukan dan kita control secara manual. Sama hal dengan teman-teman programmer atau teman-teman yang suka ngoding, pasti pernah buat satu file, misalnya index.php atau file apapun dalam kodingan teman-teman.

Pada suatu saat misalnya teman-teman ingin menambahkan suatu fungsi tertentu dalam file tersebut, kemudian setelah itu teman-teman menambahkan berberapa fungsi baru lagi, lagi dan lagi dan menghapus berberapa fungsi yang teman-teman pikir tidak terpakai. Dan pada suatu saat program teman-teman ERROR atau tidak berjalan. Kemudian teman-teman berpikir, kenapa ya program sebelumnya berjalan dengan baik dan saat ini tidak.

Saat itulah teman-teman berpikir lagi, wah mungkin karena saya hapus kodingan atau fungsi yang itu beberapa hari lalu, tapi apa dan bagaimana ya kodingan atau fungsi itu, saya sudah lupa dan akhirnya teman-teman pusing sendiri mencari tahu kodingan yang sebelumnya teman-teman sudah hapus. Ilustrasinya begitu, Hehehe

Disinilah kita memanfaatkan VCS (VERSION CONTROL SYSTEM). VCS merupakan salah satu tools yang digunakan untuk mengontrol setiap perubahan file yang sudah kita buat, perubahan kodingan sedikit pun, bahkan spasi sekalipun dicatat baik-baik sama system ini. Kembali ke ilustrasinya ya teman-teman? Dengan dicatatnya setiap perubahan file kodingan yang teman-teman sudah buat, teman-teman bisa melihat kembali file yang sebelumnya, mengembalikan file yang sebelumnya ataupun membandingkan file kodingan lama dengan file kodingan yang baru.

VCS juga sangatlah bermanfaat bagi teman-teman yang berkerja secara TEAM atau kolaboratif karena kita dapat dengan mudah melihat setiap perubahan file kodingan yang dibuat oleh teman-teman TEAM kita, kita juga dapat melihat siapa yang mengubahnya dan kapan dia mengubahnya serta apa yang dia ubah, dibagian mananya, sehingga kita tidak saling menyalahkan satu sama lain saat kodingan kita tiba-tiba ERROR. Karena kita sudah tahu dengan jelas siapa pelakunya, tinggal selanjutnya kita cari solusi Bersama untuk mengatasi permasalahan kodingan teman kita tersebut. Disitulah sangat terasanya kegunaan dari VERSION CONTROL SYSTEM ini. Dan ini sangatlah membantu kita dalam memanage file kodingan kita.

(Source : Dokumentasi Pribadi - Contoh Penggunaan VCS dalam kerja TEAM)


Kesimpulan : VCS (VERSION CONTROL SYSTEM) merupakan sebuah infrastruktur atau tools yang digunakan untuk mengontrol setiap perubahan yang kita buat. Baik itu perubahan file (penambahan atau pengurangan), maupun perubahan kodingan (penambahan atau pengurangan fungsi dikodingan kita). 

Okey teman-teman saya kira sampai disini dulu ya postingan saya untuk kali ini,
Salam dari Admin CODINGRAKITAN, tetap semangat guys,
Sampai jumpa dipostingan selanjutnya.






Friday, November 1, 2019

Cara Membuat Aplikasi Kamera Bagian Ketiga - Flash Light - Coding Rakitan


Pada postingan kali ini kita akan melanjutkan postingan sebelumnya Cara Membuat Aplikasi Kamera Bagian Kedua - Capture Image. Postingan sebelumnya kita sudah menambahkan fitur capture image yang membuat kamera dapat menangkap gambar ketika tombol di pencet.

Fitur yang akan kita tambahkan selanjutnya adalah Flash Light atau lampu blitz kamera. Dimana ketika tombol blitz dalam keadaan hidup atau auto maka ketika tangkapan kamera dilakukan, blitz akan menyala.

Langkah pertama :

Pertama-tama izinkan aplikasi untuk mengakses Flash light dengan menambahkan kode berikut kedalam AndroidManifest.xml
 
<uses-permission android:name="android.permission.FLASHLIGHT"/>
 
Langkah kedua :

Tambahkan ikon Vector Asset berikut kedalam drawable anda dan sesuaikan dengan nama yang ada di gambar. Tidak tahu cara menambahkannya ? silahkan baca postingan Cara Menggunakan Icon Vector Asset bawahan Android Studio



Langkah ketiga :

Edit activity_main.xml seperti berikut.
 
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout 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="match_parent"
    tools:context=".MainActivity" >

    <FrameLayout
        android:id="@+id/fr_kamera"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black">

    </FrameLayout>

    <ImageView
        android:id="@+id/img"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_gravity="bottom|center_horizontal"
        android:layout_marginBottom="30dp"
        android:adjustViewBounds="true"
        android:onClick="onClick"
        android:tint="@android:color/white"
        app:srcCompat="@drawable/camera"
        tools:ignore="VectorDrawableCompat" />

    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="right"
        android:orientation="vertical"
        android:padding="5dp">

        <ImageView
            android:id="@+id/flash"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:onClick="onClick"
            android:tag="off"
            android:tint="@android:color/white"
            app:srcCompat="@drawable/flash_off"
            tools:ignore="VectorDrawableCompat" />
    </LinearLayout>

    <LinearLayout
        android:id="@+id/ly"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/black"
        android:orientation="vertical"
        android:visibility="gone">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <ImageView
                android:id="@+id/tampil"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:adjustViewBounds="false"
                app:srcCompat="@drawable/ic_launcher_background"
                tools:ignore="VectorDrawableCompat" />

            <ImageView
                android:id="@+id/hapus"
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:layout_gravity="bottom"
                android:layout_margin="20dp"
                android:adjustViewBounds="true"
                android:onClick="onClick"
                android:tint="@android:color/white"
                app:srcCompat="@drawable/delete"
                tools:ignore="VectorDrawableCompat" />

            <TextView
                android:id="@+id/textView"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:background="@android:color/transparent"
                android:padding="10dp"
                android:text="codingrakitan.blogspot.com"
                android:textColor="@android:color/white"
                android:textSize="12sp" />

        </FrameLayout>

    </LinearLayout>

</FrameLayout>
 

Langkah keempat :

Edit class MainActivity.java seperti berikut.
 
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private FrameLayout fr_kamera;
    private SurfaceView sv;
    private SurfaceHolder sh;
    private Camera cm;
    private ImageView tampil;
    private LinearLayout ly;
    private int HOME = 1;
    int flash = 1;
    String aksi_flash = "mati";
    Camera.Parameters pr;
    ImageView iv_flash;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        fr_kamera = findViewById(R.id.fr_kamera);
        tampil = findViewById(R.id.tampil);
        iv_flash = findViewById(R.id.flash);
        ly = findViewById(R.id.ly);


        kameraAktif();


    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event){
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (HOME==0){
                        kembaliCamera();
                    }else{
                        finish();
                    }
                    return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }
    public void kembaliCamera(){
        ly.setVisibility(View.GONE);
        HOME=1;
        if (aksi_flash=="hidup"){
            flashAktif();
        }
        cm.startPreview();
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.hapus:
                kembaliCamera();
                break;
            case R.id.img:
                ambilGambar();
                break;
            case R.id.flash:
                flash++;
                if (flash==1){
                    iv_flash.setImageResource(R.drawable.flash_off);
                    flashMati();
                    aksi_flash = "mati";
                }else
                if (flash==2){
                    iv_flash.setImageResource(R.drawable.flash_on);
                    flashAktif();
                    aksi_flash = "hidup";
                }else
                if (flash==3){
                    iv_flash.setImageResource(R.drawable.flash_auto);
                    flashAuto();
                    aksi_flash = "auto";
                    flash = 0;
                }
                break;
        }

    }



    private void flashAktif() {
        pr = cm.getParameters();
        pr.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
        cm.setParameters(pr);
        cm.startPreview();
    }

    private void flashAuto() {
        pr = cm.getParameters();
        pr.setFlashMode(Camera.Parameters.FLASH_MODE_AUTO);
        cm.setParameters(pr);
        cm.startPreview();
    }

    private void flashMati() {
        pr = cm.getParameters();
        pr.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
        cm.setParameters(pr);
        cm.startPreview();
    }

    private void kameraAktif() {
        sv = new SurfaceView(this);
        sh = sv.getHolder();
        sh.addCallback(new SurfaceHolderCallback());
        fr_kamera.addView(sv);

    }

    private void ambilGambar() {
        if (aksi_flash=="auto"){
            flashAuto();
        }
        cm.takePicture(null, null, jpegCallback);
        HOME = 0;

    }



    Camera.PictureCallback jpegCallback = new Camera.PictureCallback() {
        @Override
        public void onPictureTaken(byte[] data, Camera camera) {
            Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
            Matrix matrix = new Matrix();
            matrix.postRotate(90);
            Bitmap rotateBitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight()
            , matrix, true);
            tampil.setImageBitmap(rotateBitmap);
            ly.setVisibility(View.VISIBLE);

        }
    };



    private class SurfaceHolderCallback implements SurfaceHolder.Callback {
        @Override
        public void surfaceCreated(SurfaceHolder holder) {
            cm = Camera.open();
            pr = cm.getParameters();
            List<Camera.Size> ss = pr.getSupportedPreviewSizes();
            Camera.Size pictSize = ss.get(0);
            pr.setPictureSize(pictSize.width, pictSize.height);
            cm.setParameters(pr);
        }

        @Override
        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
            try {
                 cm.setDisplayOrientation(90);
                 cm.setPreviewDisplay(sv.getHolder());
                Camera.Parameters parameters = cm.getParameters();
                List<Camera.Size> previewSize = cm.getParameters().getSupportedPreviewSizes();
                Camera.Size pre = previewSize.get(0);
                parameters.setPreviewSize(pre.width, pre.height);

                ViewGroup.LayoutParams lp = new FrameLayout.LayoutParams(
                        ViewGroup.LayoutParams.FILL_PARENT,
                        ViewGroup.LayoutParams.FILL_PARENT);

                sv.setLayoutParams(lp);
                cm.setParameters(parameters);
                cm.startPreview();
            }catch (Exception e){}

        }

        @Override
        public void surfaceDestroyed(SurfaceHolder holder) {
                cm.stopPreview();
                cm.release();
        }
    }
}

 
Pada class di atas kita menambahkan 3 method yang berfungsi untuk mengatur blitz yaitu flashAktif(), flashAuto(), dan flashMati(). Kode yang berfungsi untuk menyalakan flash light adalah "pr.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);" dimana kode ini menginstruksikan untuk membuat Flash Mode Torch ketika dilakukan tangkapan kamera.


Cara Mengambil data JSON dengan Volley di Android Studio


Volley merupakan sebuah library atau pustaka yang dikembangkan oleh Google untuk membantu para developer Android Studio. Volley ini berfungsi untuk melakukan transaksi HTTP. Transaksi berupa mengirim data POST dan GET dapat dilakukan menggunakan Volley.

Ini tentunya akan memudahkan pengguna dalam mengambil data dari sebuah web service. Untuk dapat menggunakan library ini developer terlebih dahulu harus mengidentifikasikan dependecies untuk mengunduh libarary ini. Caranya dengan menambahkan kode di bawah ini kedalam build.grandle.
 
dependencies{
 ...
 implementation 'eu.the4thfloor.volley:com.android.volley:2015.05.28'
 ...

}
 
Karena dalam hal bertransaksi ke halam web diperlukan akses Internet maka, kita perlu menuliskan kode di bawah kedalam AndroidManifest.xml
 
<uses-permission android:name="android.permission.INTERNET"/>
 
Setiap transaksi yang dilakukan baik itu pengiriman data berupa GET atau POST nantinya akan memberikan respon berupa String.

Data GET

 
 String url = "http://codingrakitan.blogspot.com/";

        RequestQueue rq = Volley.newRequestQueue(this);
        StringRequest sr = new StringRequest(Request.Method.GET, url, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.d("respon", "hasil : "+response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("respon", "error : "+error);
            }
        });
        rq.add(sr);
 

Data POST

 
 String url = "http://codingrakitan.blogspot.com/";
 RequestQueue rq = Volley.newRequestQueue(this);
        StringRequest sr = new StringRequest(Request.Method.POST, Constants.URL_INSERT, new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                 Log.d("respon", "hasil : "+response);

            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.d("error", "isi = "+error.getMessage());
            }
        }){
            @Override
            protected Map<String, String> getParams() {
                Map<String, String> params = new HashMap<String, String>();
                params.put("username", "admin");
                params.put("password", "admin");               
                return params;
            }
        };
        rq.add(sr);
 
Pada kode di atas di buat untuk mengirimkan data berupa post dengan name "username" dan "password" dengan masing-masing field, valuenya adalah "admin".

Catatan ganti url dengan alamat url web service anda.