(Android)Camera Developer Android

Salam kata dan tutur kata yang saya ucapkan, sebelumnya saya sangat berterima kasih kepada orang tua yang selalu mempercayai saya untuk membuka usaha, kebetulan saya melihat di sebuah program TV, tema “USAHA MUDA”, banyak nara sumber yang berbicara di acara tersebut, kalau ingin usaha jangan menghitung dari usia, kalau di hitung – hitung masa kecil dan bagaimana memandang itu semua, cerita dari saya, saya sejak kecil sudah memandang menjadi wirausaha, ketika SD saya sudah menjual sebuah mainan kelereng,wayang,manizet(menurut nama di daerah saya), ketika SMP saya fakum usaha karena masalah puberitas jadi gak memikirkan itu, di masa SMA saya kembali berusaha, usaha pertama membuka print buat teman temanm print itu berupa tugas dari guru dan usaha kedua menjual sebuah akun Game Online, dan dimana kuliah itu lah puncak saya membuka usaha, dari jualan pakaian,hingga menjual jasa aplikasi mobile dan desktop, itu semua ada pasang surutnya, seperti saya ini usaha jual pakaian saya break sejenak karena urusan kerjaan yang lebih utama karena tidak dapat meluangkan waktu, dan saya berfikir bahwa memanagament waktu dan uang sangat lah di utamakan, dengan beberapa cerita itu semua saya mengajak teman teman semua untuk marilah kita berwirausaha, karena itu akan menjadi kita semua seorang yang mandiri.

Dari beberapa cerita di atas itulah cerita saya di masa kecil hingga saat ini. Baiklah tema kali ini kita akan membahas sebuah device yang dapat membaca gambar atau gerak gerik yang kita lakukan, awal mulanya sebuah camera itu ketikan seseorang ingin mengabadikan sebuah moment, disanalah terbentuklah ide yang cemerlang untuk membuat sebuah alat perekam berupa kamera. kali ini kita akan membuat aktifitas kamera itu di smartphone android kita.

Create project dengan nama CameraDemo

Buka file main.xml untuk membuat tampilan

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" android:layout_width="fill_parent"
	android:layout_height="fill_parent" android:id="@+id/layout">
	<TextView android:layout_width="fill_parent"
		android:layout_height="wrap_content" android:text="Camera Demo"
		android:textSize="24sp" />

	<FrameLayout android:id="@+id/preview"
		android:layout_weight="1" android:layout_width="fill_parent"
		android:layout_height="fill_parent">
	</FrameLayout>

	<Button android:layout_width="wrap_content"
		android:layout_height="wrap_content" android:id="@+id/buttonClick"
		android:text="Click" android:layout_gravity="center"></Button>

</LinearLayout>

Buka AndroidManifest.xml untuk membuka permisson camera

 <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.camera"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.CAMERA"/>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.camera.CameraDemo"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

Create class dengan nama Preview

package com.example.camera;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.hardware.Camera;
import android.hardware.Camera.PreviewCallback;
import android.util.Log;
import android.view.SurfaceHolder;
import android.view.SurfaceView;


class Preview extends SurfaceView implements SurfaceHolder.Callback {
	private static final String TAG = "Preview";

    SurfaceHolder mHolder;
    public Camera camera;
    
    Preview(Context context) {
        super(context);
        
        // Install a SurfaceHolder.Callback so we get notified when the
        // underlying surface is created and destroyed.
        mHolder = getHolder();
        mHolder.addCallback(this);
        mHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
    }

    public void surfaceCreated(SurfaceHolder holder) {
        // The Surface has been created, acquire the camera and tell it where
        // to draw.
        camera = Camera.open();
        try {
			camera.setPreviewDisplay(holder);
			
			
			camera.setPreviewCallback(new PreviewCallback() {

				public void onPreviewFrame(byte[] data, Camera arg1) {
					FileOutputStream outStream = null;
					try {
						outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()));	
						outStream.write(data);
						outStream.close();
						Log.d(TAG, "onPreviewFrame - wrote bytes: " + data.length);
					} catch (FileNotFoundException e) {
						e.printStackTrace();
					} catch (IOException e) {
						e.printStackTrace();
					} finally {
					}
						Preview.this.invalidate();
				}
			});
		} catch (IOException e) {
			e.printStackTrace();
		}
    }

    public void surfaceDestroyed(SurfaceHolder holder) {
        // Surface will be destroyed when we return, so stop the preview.
        // Because the CameraDevice object is not a shared resource, it's very
        // important to release it when the activity is paused.
        camera.stopPreview();
        camera = null;
    }

    public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
        // Now that the size is known, set up the camera parameters and begin
        // the preview.
        Camera.Parameters parameters = camera.getParameters();
        parameters.setPreviewSize(w, h);
        camera.setParameters(parameters);
        camera.startPreview();
    }

    @Override
    public void draw(Canvas canvas) {
    		super.draw(canvas);
    		Paint p= new Paint(Color.RED);
    		Log.d(TAG,"draw");
    		canvas.drawText("PREVIEW", canvas.getWidth()/2, canvas.getHeight()/2, p );
    }
} 

Buka Class main.java

 package com.example.camera;

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

import android.app.Activity;
import android.hardware.Camera;
import android.hardware.Camera.PictureCallback;
import android.hardware.Camera.ShutterCallback;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.FrameLayout;

public class CameraDemo extends Activity {
	private static final String TAG = "CameraDemo";
	Camera camera;
	Preview preview;
	Button buttonClick;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		preview = new Preview(this);
		((FrameLayout) findViewById(R.id.preview)).addView(preview);

		buttonClick = (Button) findViewById(R.id.buttonClick);
		buttonClick.setOnClickListener( new OnClickListener() {
			public void onClick(View v) {
				preview.camera.takePicture(shutterCallback, rawCallback, jpegCallback);
			}
		});

		Log.d(TAG, "onCreate'd");
	}


	ShutterCallback shutterCallback = new ShutterCallback() {
		public void onShutter() {
			Log.d(TAG, "onShutter'd");
		}
	};

	/** Handles data for raw picture */
	PictureCallback rawCallback = new PictureCallback() {
		public void onPictureTaken(byte[] data, Camera camera) {
			Log.d(TAG, "onPictureTaken - raw");
		}
	};

	/** Handles data for jpeg picture */
	PictureCallback jpegCallback = new PictureCallback() {
		public void onPictureTaken(byte[] data, Camera camera) {
			FileOutputStream outStream = null;
			try {
				// write to local sandbox file system
//				outStream = CameraDemo.this.openFileOutput(String.format("%d.jpg", System.currentTimeMillis()), 0);	
				// Or write to sdcard
				outStream = new FileOutputStream(String.format("/sdcard/%d.jpg", System.currentTimeMillis()));	
				outStream.write(data);
				outStream.close();
				Log.d(TAG, "onPictureTaken - wrote bytes: " + data.length);
			} catch (FileNotFoundException e) {
				e.printStackTrace();
			} catch (IOException e) {
				e.printStackTrace();
			} finally {
			}
			Log.d(TAG, "onPictureTaken - jpeg");
		}
	};

}

Run

Advertisements

Published by

jarcode

hello I am jarcode

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s