Saturday, May 31, 2014

Fungsi Camera dan fungsi ubah wallpaper di Android

Pada postingan ini, saya ingin menjelaskan bagaimana sebuah applikasi dapat mengakses kamera, dan dapat langsung mengubah hasil foto anda dengan satu tombol tanpa harus mensettingnya.

Tahap pertama, pastikan anda membuat 1 buah button yang berguna untuk mengakses kamera, 1 buah Image View untuk menampilkan hasil dari foto yang sudah di submit, dan 1 buah Image button, untuk mengubah wallpaper anda dari hasil gambar yang telah di submit tersebut. Apabila anda ingin mengikuti tahap saya, saya menggunakan code berikut:

       
        <Button
            android:id="@+id/ibTakePict"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Camera" />
        <ImageView
            android:id="@+id/ivReturnedPict"
            android:layout_below="@+id/Camera"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:text="Change Wallpaper" />
        <ImageButton

            android:id="@+id/bSetWall"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/button1"
            android:layout_marginLeft="78dp"
            android:layout_marginTop="59dp"
            android:src="@drawable/abc_ab_bottom_solid_dark_holo" />

Langkah kedua adalah membuat sebuah permission android. Permission ini bertujuan agar Android Manifest.xml mengetahui apabila applikasi tersebut akan menggunakan layanan yang telah di sediakan di android. Dan apakah Android Manifest tersebut?, Android Manifest adalah sebuah tempat penyimpanan yang berisikan gudang informasi android. Lalu apakah saja informasi tersebut?, informasinya adalah:

1. Versi SDK yang di gunakan di applikasi
2. Merubah kode versi aplikasi saat melakukan update aplikasi
3. Memberi akses permission untuk fitur pada aplikasi
4. Menerjemahkan string atau label ke dalam aplikasi yang diperlukan, seperti string icon launcher, app name.
5. Inisialisasi dukungan layar perangkat
6. Dan lain sebagainya (sumber: http://mkhuda.com/open-source/memahami-konfigurasi-androidmanifest-aplikasi-android/)

Nah sekarang waktunya memberikan permission di Android Manifest, agar applikasi dapat menggukan layanan tersebut.

       
    <uses-feature android:name="android.hardware.camera"
                      android:required="true" />


Permission di atas adalah permission untuk kamera, dimana value dari android : required adalah true. Selanjutnya adalah tahap memberikan sebuah permission agar applikasi dapat merubah tampilan dari hasil gambar yang telah kita dapat, dengan cara:

       

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



Di tahap ini kita sudah tidak berurusan lagi dengan Android Manifest, karena kita sudah memberikan izin kepada applikasi bahwa kita hanya akan menggunakan kamera dan hanya dapat mengakses pengubahan wallpaper.

Untuk tahap berikutnya kita akan bermain di SRC, Apa kegunaan src di android?, src mempunyai fungsi sebagai file file activity yang bersifat java programming. dan file activity bersifat logic yang akan di gunakan oleh layout yang telah di buat. Di tahap ini, saya akan mengekstends sifat dari Activity, dan akan mengimplement View.OnclickListener. Tahap pertama inialisasi semua button yang telah kita buat di layout. Berikut cara penginisialisasiannya pada oncreate:

       
    ImageView iv = (ImageView) findViewById(R.id.ivReturnedPict);
    ImageButton ib = (ImageButton) findViewById(R.id.ibTakePict);
    Button b = (Button) findViewById(R.id.bSetWall);
    b.setOnClickListener(this);
    ib.setOnClickListener(this);


Selanjutnya, saya akan membuat sebuah switch case di onclick, sebelumnya saya akan memberikan penjelasan, apakah onclick itu. OnClick adalah sebuah override dari extends Activity yang berfungsi untuk apabila kita memencet atau mengclick sesuatu pada button atau apapun yang di register di OnClick, dia akan melakukan sebuah validasi sesuai dengan yang di inginkan developer. Oleh karena itu, saya ingin memberitahu applikasi saya apabila button yang di tekan, apa yang akan terjadi, dan apabila button Image apa yang akan terjadi.

       
    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId())
        {
              case R.id.bSetWall:
               try {
               getApplicationContext().setWallpaper(bmp);
               } catch (IOException e) {
                     e.printStackTrace();
               }
               break;
               case R.id.ibTakePict:
               i= new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
               startActivityForResult(i, cameraData);
               break;            
               }
        }


 Pada tahap ini, apa bila saya menekan tombol button, applikasi akan menggunakan kamera, apabila anda menyimpan submit gambar tersebut, anda akan kembali ke layar applikasi anda, dan anda dapat mengklik image button untuk mengubah tampilan layar monitor android anda.

Pertanyaan yang lain, apa yang terjadi apa bila saya reject hasil gambar?, tentu applikasi akan memberikan tanda error, karena hasil apapun yang di dapat si applikasi harus tetap mengubah tampilannya, sedangkat gambar yang di submit tidak di simpan sama sekali. Lalu apa solusinya?, kita akan menggunakan override onActivityResult. Apa fungsinya?, onActivityResult mempunyai fungsi untuk melakukan sesuatu logika bedasarkan arahan dari user. Berikut code yang saya buat:

       
    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data)                   {
         // TODO Auto-generated method stub
         super.onActivityResult(requestCode, resultCode, data);
         if(resultCode==RESULT_OK)
         {
               Bundle extras = data.getExtras();
               bmp = (Bitmap) extras.get("data");
               iv.setImageBitmap(bmp);
         }
    }


Tanpa kita sadari, apabila kita mensubmit gambar, pada override onActivityResult ada 2, yaitu bisa kita submit valuenya adalah RESULT_OK, dan apabila kita mereject valuenya adalah RESULT_CANCELED. Oleh karena itu kita dapat memberikan sebuah logika di sini, bahwa apabila value yang di dapat adalah RESULT_OK, maka ImageView akan merubah tampilan wallpaper, dan apabila yang lain, maka tidak akan terjadi apa apa atau tidak merubah tampilan apa apa. Sekian postingan dari saya, mudah mudahan dapat membantu anda. Selamat mencoba :)

1 comment: