Mohon untuk bersikap bijak dalam setiap menyikapi infomasi dan berita yang beredar di internet karena tidak semua berita itu benar, terkadang di salah gunakan oknum tertentu untuk membuat kekacauan dan fitnah

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

Berita Anda, Halo Pengunjung blog dimanapun anda berada semoga kalian tetap dalam keadaan sehat, saat ini anda sedang membaca Artikel dengan judul Cara Membuat Aplikasi Kamera Bagian Ketiga - Flash Light - Coding Rakitan, semoga bermanfaat dan selamat membaca


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.


Labels: Android_Studio

Thanks for reading Cara Membuat Aplikasi Kamera Bagian Ketiga - Flash Light - Coding Rakitan. Please share...!

0 Komentar untuk "Cara Membuat Aplikasi Kamera Bagian Ketiga - Flash Light - Coding Rakitan"

Back To Top