X

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.


Wednesday, October 23, 2019

Cara Membuat Image View Bulat (Circle Image) dengan Glide di Android Studio


Hai sobat Coding Rakitan ! kali ini kami ingin memberikan sebuah tutorial untu membuat Image View berbentuk bulat atau lebih dikenal dengan nama Circle Image. Untuk membuat Circle Image ada banyak cara yang bisa di tempuh mulai dari manipulasi bitmap menggunakan canvas, menggunakan shape drawable, hingga menggunakan library. Cara yang akan kita gunakan disini yaitu menggunakan library, sebab lebih mudah dan praktis. Bagi pemula juga tidak akan ribet menggunakannya.

Library yang akan kita gunakan adalah Glide, library ini tidak hanya untuk menampilkan image tetapi bisa pula membuat Circle Image. Kelebihan lainnya anda bisa menampilkan image online ataupun offline (langsung dari directory project).

Sebelum kita memulai saya akan memberikan beberapa contoh aplikasi yang menerapkan Circle Image.



Selain aplikasi-aplikasi di atas masih banyak lagi yang menggunakan Circle Image. Untuk hasil dari project yang dibuat pada postingan ini nantinya akan sangat sederhana, bisa anda lihat seperti gambar di bawah.



Langkah 1 : Buat project baru.



Langkah 2 : Import libarary glide dengan memasukkan code berikut ke dalam build.grandle (app module).
 
dependencies {
    ...
    implementation 'com.github.bumptech.glide:glide:4.2.0'
    annotationProcessor 'com.github.bumptech.glide:compiler:4.2.0'
}
 
Langkah 3 : Masukkan gambar percobaan kedalam directory drawable dengan nama gambar.jpg (seuai keinginan anda). Berikut adalah contoh gambar yang akan di tampilkan



Langkah 4 : Edit activity_main.xml seperti berikut.
 
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/darker_gray"
        android:gravity="center_horizontal"
        android:orientation="vertical">

        <ImageView
            android:id="@+id/gambar"
            android:layout_width="100dp"
            android:layout_height="100dp"
            android:layout_marginTop="20dp" />
    </LinearLayout>

</RelativeLayout>
 
Langkah 5 : Edit class MainActivity seperti berikut.

 
public class MainActivity extends AppCompatActivity {

    private ImageView gambar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        gambar = findViewById(R.id.gambar);
        Glide.with(this)
                .load(R.drawable.gambar)
                .apply(RequestOptions.circleCropTransform())
                .into(gambar);

    }
}

 
Penjelasan :

Bagian yang menjadi instruksi untuk menggunakan glide terdapat pada kode :

 
Glide.with(this)
                .load(R.drawable.gambar)
                .apply(RequestOptions.circleCropTransform())
                .into(gambar);
 
Kode tersebut menginstruksikan gambar yang terdapada di "R.drawable.gambar" untuk di tampilkan kedalam image view dengan bentuk circle dengan menggunakan method "circleCropTransform()". Selain gambar dari directori anda juga bisa menggunakan gambar online dengan cara menuliskan ".load(URL_GAMBAR)", contohnya :

 
Glide.with(this)
                .load("http://codingrakitan.blogspot.com/")
                .apply(RequestOptions.circleCropTransform())
                .into(gambar);
 



Cara Membuat Aplikasi Kamera Bagian Kedua - Capture Image


Pada postingan pertama dari Cara Membuat Aplikasi Kamera kita sudah membuat aplikasi dan menampilkan kamera preview. Lanjutan dari postingan tersebuat, kita akan membuat tangkapan atau Capture Image.

Aksi yang akan kita masukkan sebagai tambahan adalah Capture Image (tanpa menyimpan gambar), tombol back press yaitu ketika tombol kembali di tekan pada tampilan Capture Image maka camera kembali menampilkan preview, serta tombol Hapus yang fungsinya sama dengan back press.

Selain itu kita akan membuat agar aplikasi nantinya tampil full screen tanpa toolbar.

Tampilan nantinya akan tampak seperti barikut :



Langsung saja ikuti langkah-langkah di bawah ini :

Langkah 1 : Buat dua ikon drawable dengan nama camera dan hapus, anda bisa menggunakan Vector Asset yang disediakan oleh Android Studio. Baca : Cara Menggunakan Icon Vector Asset bawahan Android Studio  

 


Langkah 2 : Edit AndroidManifest.xml dengan kode seperti berikut.
 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="codingrakitan.blogspot.com.aplikasikamera">

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

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.AppCompat.Light.NoActionBar">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

Langkah 3 : Edit activity_main.xml dengan kode 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: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 4 : Edit class MainActivity dengan kode 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;
    @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);
        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){
                        ly.setVisibility(View.GONE);
                        HOME=1;
                    }else{
                        finish();
                    }
                    return true;
            }
        }
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.hapus:
                ly.setVisibility(View.GONE);
                break;
            case R.id.img:
                ambilGambar();
                break;
        }

    }

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

    }

    private void ambilGambar() {
        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);
            cm.startPreview();
        }
    };



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

        @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();
        }
    }
}

 


Sekarang anda tinggal melakukan pengetesan menggunakan emulator atau lebih baiknya menggunakan HP Smartphone langsung, sebab lebih leluasa dalam mengambil gambar.

Lanjut :  Cara Membuat Aplikasi Kamera Bagian Ketiga - Flash Light


Monday, October 21, 2019

Cara Membuat Aplikasi Kamera dengan Android Studio


Pada postingan Cara Membuat Aplikasi Kamera dengan Android Studio ini kita akan membuat aplikasi yang nantinya dapat mengakses perangkat keras android yaitu kamera. Hasil dari aplikasi yang dibuat nantinya akan tampak seperti gambar di bawah.



Aplikasi kamera yang akan dibuat akan sangat sederhana. Hanya akan menampilkan tampilan kamera, dan belum bisa melakukan jepretan gambar. Fungsi jepretan gambar akan di tambahkan pada postingan selanjutnya.

Buat terlebih dahulu project baru dengan format seperti dibawah.



Baca : Cara Membuat Project Baru di Android Studio

Langsung saja untuk membuat aplikasi kamera silahkan ikuti langkah-langkah di bawah ini:

Langkah 1 : Tambah izin menggunakan camera di AndroidManifest.xml

...
<uses-permission android:name="android.permission.CAMERA"/>
...
Langkah 2 : 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:id="@+id/fr_kamera"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" />
 
Langkah 3 : Edit class MainActivity seperti berikut.

 
public class MainActivity extends AppCompatActivity {

    private FrameLayout fr_kamera;
    private SurfaceView sv;
    private SurfaceHolder sh;
    private Camera cm;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        fr_kamera = findViewById(R.id.fr_kamera);
        sv = new SurfaceView(this);
        sh = sv.getHolder();
        sh.addCallback(new SurfaceHolderCallback());
        fr_kamera.addView(sv);
    }

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

        @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();
        }
    }
}

 
Jika camera anda orientasinya tidak sesuai dengan yang diharapkan silahkan rubah pada bagian cm.setDisplayOrientation(90); anda bisa menggantinya misalnya 0, 90, 180. Pada bagian tersebut jika tidak sesuai bisa jadi hp anda tegakkan ke atas, tetapi gambar yang tampil malah memanjang ke samping.

Selanjutka kita akan membuat tombol untuk menangkap tangkapan kamera, lanjut di postingan Cara Membuat Aplikasi Kamera Bagian Kedua - Capture Image.


Belajar Dasar C++ - Membuat Input dan Output



Input merupakan proses memasukkan data, sedangkan output adalah proses menampilkan data. Dalam pemrograman input dan output inilah yang menjadi aktivitas utama selain dari proses data.

Dalam C++ kita bisa menggunakan perintah "cout" untuk menampilkan data (output). Sedangkan untuk menampilkan data digunakan perintah "cin". Agar dapat digunakan baik cin ataupun cout diperlukan file header yaitu "<iostream>".

Agar anda tidak pusing ada baiknya kita lakukan langsung dengan cara Praktek.

Pertama : Buat project baru dengan nama coba.cpp  


Kedua : Isi dengan kode seperti berikut.

 

 
    #include <iostream>
    using namespace std;
   
  int main() {
   
      string nama;
      string alamat;
      int stambuk;
      string nomor_hp;
   
      cout << "Input Nama : ";
      cin >> nama;
      
      cout << "Input Alamat : ";
      cin >> alamat;
      
   
      cout << "Input Stambuk : ";
      cin >> stambuk;
      
      cout << "Input Nomor HP : ";
      cin >> nomor_hp;
   
      cout << endl;
   
      cout << "Nama : " << nama << endl;
      cout << "Alamat : " << alamat << endl;
      cout << "Stambuk : " << stambuk << endl;
      cout << "Nomor HP : " << nomor_hp << endl;
   
      return 0;
  }
 
Penjelasan Kode :

Pada bagian atas akan di panggil terlebih dahulu file heade yaitu "  #include <iostream>" agar fungsi cout dan cin dapat dijalankan dalam program.

Kemudian di dalam kode main pertama-tama yang harus di lakukan adalah mendeklarasikan variabel seperti di bawah ini :
 
   string nama;
   string alamat;
   int stambuk;
   string nomor_hp;
 
Variabel-variabel tersebut ditujukan untuk menampung data yang di input nantinya, misalnya inputan nama yang anda masukkan akan di tampung kedalam variabel nama bertipe data String.

Kode selanjutnya yaitu :
 
  cout << "Input Nama : ";
      cin >> nama;
      
      cout << "Input Alamat : ";
      cin >> alamat;
      
   
      cout << "Input Stambuk : ";
      cin >> stambuk;
      
      cout << "Input Nomor HP : ";
      cin >> nomor_hp;
 

Kode ini berfungsi menampilkan kata kemudian di ikuti fungsi menginput data sehingga nantinya akan tampak seperti gambar di bawah ini :


Kemudian terdapat kode cout << endl; dimana kode ini berfungsi untuk melakukan enter.

Kode terakhir yaitu :
 
  cout << "Nama : " << nama << endl;
  cout << "Alamat : " << alamat << endl;
  cout << "Stambuk : " << stambuk << endl;
  cout << "Nomor HP : " << nomor_hp << endl;
 
Berfungi untuk menampilkan semua inputan yang telah di input kedalam variabel tadi. Sehingga akhirnya di dapatkan tampilan seperti berikut.





Sunday, October 20, 2019

Apa itu Data GET dan POST dalam Dunia WEB

Didalam dunia pemrograman WEB dikenal dua jenis data yang dapat dikirim dari client ke server. Kedua data tersebut adalah GET dan POST.

Perbedaan keduanya cukup mencolok. Jika data GET dikirim dengan mendeklarasikannya kedalam URL seperti "http://codingrakitan.blogspot.com/?data=GET" sedangkan untuk data POST dapat dikirim dengan menggunakan TAG "<form action="url_aksi" method="POST"><input name="data_post" type="input" /></form> " dalam html.

Pengiriman data menggunakan POST inilah yang seringkali di jumpai pada halaman Login. Sedangkan data komunikasi GET biasanya digunakan untuk berpindah alamat.

Untuk mengambil data ini pada bagian server, juga berbeda-beda tergantung bahasa server yang digunakan. Pada PHP instruksi yang digunakan seperti berikut.

POST
 
  $data = $_POST['data_post'];
 
GET
 
  $data = $_GET['data'];
 


Sedangkan pada server menggunakan Node js dengan Express seperti berikut.
POST
 
  app.post('url', function (req, res){
   var data = req.body.data_post;
  })
 
GET
 
  app.get('url', function (req, res){
   var data = req.query.data;
  })