Minggu, 29 Desember 2013

Aplikasi Android Memfungsikan Kamera dan Set As Wallpaper


Untuk tahapan awal membuat aplikasi ini ialah dengan menginstal GUI Eclipse dan SDK Android terlebih dahulu, caranya dapat dilihat di sini bray.

Untuk GUI Eclipse dapat didownload di sini, sedangkan SDK Androidnya dapat di download di sini. 


Setelah semua proses instalasi selesai, selanjutnya ialah mulai membuat aplikasi. Langkah awal yang dilakukan yaitu membuat project baru, dengan cara pilih menu File_New_Project_Android Application Project, lalu pilih tombol Next, kemudian isi Nama Aplikasi, Nama Project. Selanjutnya ialah pengaturan icon dari aplikasi, dalam pemilihan icon, dapat memilih icon yang sudah ada atau dapat juga memilih icon yang lain yang terdapat pada komputer. Langkah berikutnya adalah mengisi Nama Activity yang merupakan nama class, dan kemudian klik Finish. Kini project yang telah dibuat sudah ditambahkan ke workspace Eclipse.

Berikut tampilan untuk mengisi nama pada project baru :






Langkah selanjutnya ialah membuat interface atau tampilan dari aplikasi yang akan dibuat. Berikut ialah coding dari file Activity yang berekstensi xml, file ini terletak di folder utama_res_layout. File xml ini berfungsi untuk menampilkan interface aplikasi yang dibuat.

XML Coding
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".ArikKamera" >

     <ImageView
        android:id="@+id/img_set"
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="64dp"
        android:src="@drawable/ic_launcher" />

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="42dp"
        android:text="Set As Wallpaper" />

    <Button
        android:id="@+id/btn_pilih"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_above="@+id/button1"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="14dp"
        android:text="Ambil Gambar" />

</RelativeLayout>

<!--  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="10dp"
    tools:context=".MainActivity" >
       
    <ImageView
        android:id="@+id/img_set"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:background=""       
        android:layout_marginTop="10dp"/>

    <Button
        android:id="@+id/btn_pilih"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_marginBottom="80dp"
        android:text="Ambil Gambar" />

</RelativeLayout> -->

Berikut tampilan dari coding di atas :


Setelah selesai membuat interface, selanjutnya kita akan memungsikan tombol-tombol yang ada. Berikut merupakan coding java yang terdapat pada aplikasi ini :


Java Coding
package com.UAS.arikkamera100030104;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.WallpaperManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;



public class ArikKamera extends Activity {
   
    private Uri UrlGambar;
    private ImageView SetImageView;   
   
    private static final int CAMERA = 1;
    Uri imageUri                      = null;
    //is FileInputStream;
    private static final int FILE = 2;
    String image_Currs = "";
    int foto = 0;
   
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        setContentView(R.layout.activity_arik_kamera);
       
        Button home = (Button)findViewById(R.id.button1);
       
       
        home.setOnClickListener(new OnClickListener() {
            public void onClick(View v) {
                setwallpaper();
            }
        });
       
       
        final String [] pilih            = new String [] {"Camera", "SD Card"};               
        ArrayAdapter<String> arr_adapter    = new ArrayAdapter<String> (this, android.R.layout.select_dialog_item,pilih);
        AlertDialog.Builder builder        = new AlertDialog.Builder(this);
       
       
        builder.setTitle("Pilih Gambar");
        builder.setAdapter( arr_adapter, new DialogInterface.OnClickListener()
        {
            public void onClick( DialogInterface dialog, int pilihan )
            {
                if (pilihan == 0)
                {
                   
                    String random = String.valueOf(System.currentTimeMillis());
                   
                    Intent intent      = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                    File file         = new File(Environment.getExternalStorageDirectory(),
                                           "DCIM/Camera/img_" + random + ".jpg");
                   
                    image_Currs = "img_" + random.toString() + ".jpg";
                   
                    foto++;

                    UrlGambar = Uri.fromFile(file);

                    try {           
                        intent.putExtra(android.provider.MediaStore.EXTRA_OUTPUT, UrlGambar);
                        intent.putExtra("return-data", true);
                       
                        startActivityForResult(intent, CAMERA);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }           
                   
                    dialog.cancel();
                }
                else if(pilihan == 1)
                {
                    Intent intent = new Intent();
                   
                    intent.setType("image/*");
                    intent.setAction(Intent.ACTION_GET_CONTENT);
                   
                    startActivityForResult(Intent.createChooser(intent, "Pilih Aplikasi"), FILE);
                }
            }
        } );
       
        final AlertDialog dialog = builder.create();
       
        SetImageView = (ImageView) findViewById(R.id.img_set);
       
        Button tmb_pilih = (Button) findViewById(R.id.btn_pilih);
        tmb_pilih.setOnClickListener(new View.OnClickListener() {           
            @Override
            public void onClick(View v) {
                dialog.show();
            }
        });
    }
   
   
    public void setaswp(){
        String FileName;
        File file = new File(Environment.getExternalStorageDirectory() , "DCIM/Camera/");  
        File[] imageFiles = file.listFiles( );
        if(imageFiles.length > 0 ) {
        FileName = imageFiles[0].getName();
        final WallpaperManager wallpaperManager = WallpaperManager.getInstance(getBaseContext());  
        Bitmap myBitmap =  BitmapFactory.decodeFile("/sdcard/DCIM/Camera/" + FileName);

        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        int height = displayMetrics.heightPixels;
        int width = displayMetrics.widthPixels << 1;
        myBitmap = Bitmap.createScaledBitmap(myBitmap,width, height, true);
        try {
            wallpaperManager.setBitmap( myBitmap);
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } 
    }
       
    }
   
    public void setwallpaper(){
        String Filename;
        File file         = new File(Environment.getExternalStorageDirectory(),
                   "DCIM/Camera/");
       
       
       
        File[] imageFiles = file.listFiles( );
       
        if(foto > 0){
        Filename = image_Currs;
        }
        else{
        Filename = imageFiles[imageFiles.length - 1].getName();
        }
       
        File files         = new File(Environment.getExternalStorageDirectory(),
                   "DCIM/Camera/" + Filename);
        FileInputStream is;
        try {
        is = new FileInputStream(files);
       
        DisplayMetrics displayMetrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
        int height = displayMetrics.heightPixels;
        int width = displayMetrics.widthPixels << 1;
       
        BufferedInputStream bis = new BufferedInputStream(is);
        Bitmap bitmap = BitmapFactory.decodeStream(bis);
        Bitmap useThisBitmap = Bitmap.createScaledBitmap(
            bitmap, width , height, true);
        bitmap.recycle();
        if(file!=null){
            System.out.println("Hi I am try to open Bit map");
           
            final WallpaperManager wallpaperManager = WallpaperManager.getInstance(this);
            final Drawable wallpaperDrawable = wallpaperManager.getDrawable();
           
           // wallpaperManager = WallpaperManager.getInstance(this);
           // wallpaperDrawable = wallpaperManager.getDrawable();
           wallpaperManager.setBitmap(useThisBitmap);
        }
        }
        catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }
   
    private boolean equal(String image_Currs2, String string) {
        // TODO Auto-generated method stub
        return false;
    }


    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (resultCode != RESULT_OK) return;
      
        Bitmap bitmap     = null;
        String path        = "";
       
        if (requestCode == FILE)
        {
            UrlGambar = data.getData();
            path = getRealPath(UrlGambar);
       
            if (path == null)
            {
                path = UrlGambar.getPath();
            }
            else
            {
                bitmap     = BitmapFactory.decodeFile(path);
            }
        }
        else
        {
            path    = UrlGambar.getPath();
            bitmap  = BitmapFactory.decodeFile(path);
        }

        Toast.makeText(this, path,Toast.LENGTH_LONG).show();
        SetImageView.setImageBitmap(bitmap);       
    }
   
    public String getRealPath(Uri contentUri)
    {
        String path = null;
        String[] images_data = { MediaStore.Images.Media.DATA };
        Cursor cursor = getContentResolver().query(contentUri, images_data, null, null, null);
        if(cursor.moveToFirst())
        {
           int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
           path = cursor.getString(column_index);
        }
        cursor.close();
        return path;
    }
}


Agar aplikasi kamera ini mendapatkan hak akses untuk mengoprasikan perangkat kamera pada device Android, maka perlu ditambahkan coding pada aplikasi ini. Penambahannya di atur dalam file "manifest.xml"

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

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

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.UAS.arikkamera100030104.ArikKamera"
            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>

Berikut merupakan tampilan awal aplikasi saat di jalankan :

Tampilan ketika gambar di ambil, gambar kamera yang berwarna merah akan diganti oleh gambar yang kita ambil tadi :

Set as wallpaper :

Wallpaper sudah diganti :




Dowload program yang sudah jadi di sini Kamera Arik

Terimakasih.

Twitter Delicious Facebook Digg Stumbleupon Favorites More

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Best WordPress Web Hosting