(Android) Membuat Camera Autofocus

Feb. 19, 2017, 5:09 p.m. 5 2532

Selamat Hari Libur bila yang merayakan, hari minggu dan minggu katanya waktunya santai dan instirahat, kalo menurut saya itu hari yang menyebalkan, kegiatan hanya main sana sini, keluyuran (Bahasa Jawa) main yang gak jelas, itu kegiatan waktu kita masih di masa masa putih abu – abu, tapi cobalah merubah kegitan itu menjadi kegitaan yang bisa di bilang mengeuntukan bagi kita dan teman teman, Bermain sambil belajar lah jawabannya. seperti kalau bagi pecinta code code, berefresing di pantai membawa laptop, bermain di pegunungan membawa laptop, dan bercoding ria lah disana. saya pastikan itu mengasikan dan sangat memberikan hal postif pagi semuanya(mutualisme).

Kemaren saya baru mendapatkan beberapa kabar yang tidak menyenakkan, kalau di layar kaca bergambar (TV) itu semua berita Kong Subur, wah wah itu satu minggu mungkin satu bulan gak selesai. ya jangan dibuat bingung, karena itu pro dan kontra mereka. jangan pernah memikirkan semua itu menjadi bebeban bagi kita semua, keep sprit dan pantang menyerah dengan lingkaran kehidupan, karena semua itu akan berakhir bila tubuh ini tidak dapat bergerak.

“Orang yang mampu berfikir merupakan orang yang beruntung”, kata – kata itu saya dapatkan di mata kuliah bahasa indonesia, ada lagi kata – kata yang menarik yang di ucapkan bapak, “Orang yang baik merupakan orang yang berbahasa yang baik”. Semua itu logis dan dapat di benarkan kebenarannya.

Dari beberapa cerita di atas itu merupakan kegiatan saya seminggu di tempat kuliah dan di team kerja, banyak buanget ya, ya lah satu minggu itu semua tidak dapat di ceritakan dengan kata – kata, semua itu cerita yang dapat dikenang dan ditulis di sebuah diary saya, janganlah lupakan sejarah dan kejadikan kemarin, tapi janganlah melupakan kewajiban yang harus kita lakukan. Good Luck Teman – Teman.

Kita langung ke tema utama, tema kali ini saya akan membagi bagaimana membuat camera menjadi autofocus, tetapi tidak menutup kemungkinan kalau itu tergantung dengan Device yang mendukung, Tapi kalau Camera sudah mendukung itu semua dapat di wujudkan, karena tema ini saya angkat untuk mengikuti Event Inaicta Bersama teman teman, tema itu masih rahasia Team, tapi kalau hasilnya baik dan akan saya publish di Blog ini. semoga saja masuk Nominasi dan mejadi yang terbaik. amin

 

Buka File AndroidManifest,xml untuk membuka Permission Camera

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

 

Create XML file pada package res dengan nama Control.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/background"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="bottom"
    >
<Button
	android:id="@+id/takepicture"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text=" * Take Picture " 
	android:layout_gravity="right"
	android:layout_margin="10px"
	/>
</LinearLayout>

 

Buka File main.xml

<?xml version=”1.0″ encoding=”utf-8″?>
<LinearLayout xmlns:android=”http://schemas.android.com/apk/res/android&#8221;
android:orientation=”vertical”
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
>
<SurfaceView
android:id=”@+id/camerapreview”
android:layout_width=”fill_parent”
android:layout_height=”wrap_content”
/>
</LinearLayout>

 

Buka file main.java

package com.example.cameraaotufocus;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;

import android.app.Activity;
import android.content.ContentValues;
import android.content.pm.ActivityInfo;
import android.graphics.PixelFormat;
import android.hardware.Camera;
import android.hardware.Camera.AutoFocusCallback;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.net.Uri;
import android.os.Bundle;
import android.provider.MediaStore.Images.Media;
import android.view.LayoutInflater;
import android.view.SurfaceHolder;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Toast;
public class CameraAutofocu extends Activity implements SurfaceHolder.Callback{
	Camera camera;
	SurfaceView surfaceView;
	SurfaceHolder surfaceHolder;
	boolean previewing = false;
	LayoutInflater controlInflater = null;
	
	Button buttonTakePicture;
	
	final int RESULT_SAVEIMAGE = 0;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_camera_autofocu);
		 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
	        
	        getWindow().setFormat(PixelFormat.UNKNOWN);
	        surfaceView = (SurfaceView)findViewById(R.id.camerapreview);
	        surfaceHolder = surfaceView.getHolder();
	        surfaceHolder.addCallback(this);
	        surfaceHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
	        
	        controlInflater = LayoutInflater.from(getBaseContext());
	        View viewControl = controlInflater.inflate(R.layout.control, null);
	        LayoutParams layoutParamsControl 
	        	= new LayoutParams(LayoutParams.FILL_PARENT, 
	        	LayoutParams.FILL_PARENT);
	        this.addContentView(viewControl, layoutParamsControl);
	        
	        buttonTakePicture = (Button)findViewById(R.id.takepicture);
	        buttonTakePicture.setOnClickListener(new Button.OnClickListener(){

				@Override
				public void onClick(View arg0) {
					// TODO Auto-generated method stub
					camera.takePicture(myShutterCallback, 
							myPictureCallback_RAW, myPictureCallback_JPG);
				}});
	        
	        LinearLayout layoutBackground = (LinearLayout)findViewById(R.id.background);
	        layoutBackground.setOnClickListener(new LinearLayout.OnClickListener(){

				@Override
				public void onClick(View arg0) {
					// TODO Auto-generated method stub

					buttonTakePicture.setEnabled(false);
					camera.autoFocus(myAutoFocusCallback);
				}});
	    }
	    
	    AutoFocusCallback myAutoFocusCallback = new AutoFocusCallback(){

			@Override
			public void onAutoFocus(boolean arg0, Camera arg1) {
				// TODO Auto-generated method stub
				buttonTakePicture.setEnabled(true);
			}};
	    
	    ShutterCallback myShutterCallback = new ShutterCallback(){

			@Override
			public void onShutter() {
				// TODO Auto-generated method stub
				
			}};
			
		PictureCallback myPictureCallback_RAW = new PictureCallback(){

			@Override
			public void onPictureTaken(byte[] arg0, Camera arg1) {
				// TODO Auto-generated method stub
				
			}};
			
		PictureCallback myPictureCallback_JPG = new PictureCallback(){

			@Override
			public void onPictureTaken(byte[] arg0, Camera arg1) {
				// TODO Auto-generated method stub
				/*Bitmap bitmapPicture 
					= BitmapFactory.decodeByteArray(arg0, 0, arg0.length);	*/
				
				Uri uriTarget = getContentResolver().insert(Media.EXTERNAL_CONTENT_URI, new ContentValues());

				OutputStream imageFileOS;
				try {
					imageFileOS = getContentResolver().openOutputStream(uriTarget);
					imageFileOS.write(arg0);
					imageFileOS.flush();
					imageFileOS.close();
					
					Toast.makeText(CameraAutofocu.this, 
							"Image saved: " + uriTarget.toString(), 
							Toast.LENGTH_LONG).show();
					
				} catch (FileNotFoundException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}

				camera.startPreview();
			}};

		@Override
		public void surfaceChanged(SurfaceHolder holder, int format, int width,
				int height) {
			// TODO Auto-generated method stub
			if(previewing){
				camera.stopPreview();
				previewing = false;
			}
			
			if (camera != null){
				try {
					camera.setPreviewDisplay(surfaceHolder);
					camera.startPreview();
					previewing = true;
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
		}

		@Override
		public void surfaceCreated(SurfaceHolder holder) {
			// TODO Auto-generated method stub
			camera = Camera.open();
		}

		@Override
		public void surfaceDestroyed(SurfaceHolder holder) {
			// TODO Auto-generated method stub
			camera.stopPreview();
			camera.release();
			camera = null;
			previewing = false;
		}

}

 

Run

Download

 

 

Tentang Penulis

Vimio

Kalau bisa jadi 10 akan kita jadikan semua nya 10, 10 jika nilai 0 - 10 yang tertinggi. tapi sayangnya ketika nilai dan niat saling menghianati. bersyukurlah semua apa yang kita dapat dan yang telah di berikan. ya itu nilai 10 yang dikasih. { 1 0 }

Komentar