Senin, 27 Juni 2011

Membuat screenshot android dengan code Java

Kadang kita ingin aplikasi kita di share dengan aplikasi lain misalnya facebook, twitter, ataupun media sharing file tersebut. Nah untuk membuat agar aplikasi kita dapat dilihat secara visual alangkah baiknya kita buatkan fungsi untuk membuat screenshot dari hasil generating aplikasi kita. Nah di sini ane ingin memberikan sedikit tips dalam membuat screenshot di android dengan java code. Okeh langsung saja ane kasih code untuk membuat implementasi dalam membuat screenshot di android.

public static void captureActivities(Activity c) {
  String mPath = Environment.getExternalStorageDirectory().toString()
    + "/gambar" ;
  File folder=new File(mPath);
  folder.mkdir();
  String filename=mPath+"/gambar.jpg";
  // create bitmap screen capture
  Bitmap bitmap;
  View v1=c.findViewById(android.R.id.content);
  v1.setDrawingCacheEnabled(true);
  bitmap = Bitmap.createBitmap(v1.getDrawingCache());
  v1.setDrawingCacheEnabled(false);
  OutputStream fout = null;
  File imageFile = new File(filename);
  try {
   fout = new FileOutputStream(imageFile);
   bitmap.compress(Bitmap.CompressFormat.JPEG, 90, fout);
   fout.flush();
   fout.close();

  } catch (FileNotFoundException e) {
   // TODO Auto-generated catch block 
   e.printStackTrace();
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
 }
Nah kode di atas berguna untuk membuat screenshot aplikasi kita yang di simpan ke external storage di android. Secara otomatis file hasil capturing kita disimpan dalam bentuk file /gambar/gambar.jpg. Untuk menggantinya silahkan ganti dengan sesuai keinginan anda. Hasil ini nantinya dapat kita tampilkan dengan intent apakah mau di share ataukah untuk dilihat saja. Untuk menggunakannya tinggal refere aja ke activity yang kita gunaka. Nah kita juga dapat mengambil view ini dari view lainnya yang merupakan child dari view tersebut. Nah misalnya code yang atas tadi di baris ini...

View v1=c.findViewById(android.R.id.content)
//dapat kita ganti dengan mengambil root view dari child viewnya
//misalnya kita punya button
Button b=(Button)findViewById(R.id.btn_upload);
//nah kita dapat mengambil root viewnya dengan code sebagai berikut
View v1=b.getRootView(); 

Jika kita jalankan kita akan mendapatkan file tersebut sudah ter-create di folder gambar sekarang kita lihat hasilnya...

Oke keep practice and study bro...

Menulis file di android SD-card

Menuliskan file di android tidak begitu susah mirip kebanyakan menggunakan java-IO class yang dapat kita gunakan. Ups ternyata android sudah  menyediakan fungsi untuk membuat file pada class Context untuk lebih jelasnya silahkan baca ini..

http://developer.android.com/reference/android/content/Context.html#openFileOutput%28java.lang.String,%20int%29

Nah untuk cara penggunaannya cukup mudah. ane kasih contoh cara penggunaan fungsi ini

public static void writeToFile(String filename, String source, Activity a)
   throws IOException {
  FileOutputStream fOut = a.openFileOutput(filename,
    Activity.MODE_WORLD_READABLE);
  OutputStreamWriter osw = new OutputStreamWriter(fOut);
  osw.write(source);
  osw.flush();
  osw.close();
 }

Nah file yang terbentuk nanti berada pada /data/data/<nama.package>/files..

Nah sekarang bagaimana jika kita ingin membuat file di Sdcard. Emm.. Lumayan mudah juga kok setelah googling - googling ketemu salah satu kode yang membantu untuk menciptakan file di sd card android simple ..


Untuk melihat bagaimana caranya lihat code dibawah ini..

File root = Environment.getExternalStorageDirectory();
      if (root.canWrite()){
          File gpxfile = new File(root, "gpxfile.gpx");
          FileWriter gpxwriter = new FileWriter(gpxfile);
          BufferedWriter out = new BufferedWriter(gpxwriter);
          out.write("Hello world");
          out.close();
      }

cukup mudah bukan?
Nah kalo di file explorernya seperti ini nih...


Keep reading and practice. And don't give up before you find it. Keep study..

"Application is not Installed" di Android

Error di atas memang menyebalkan jika kita mendapatkan hasil dari .apk yang telah kita compile setelah error mendapatkan eror "Application is not Installed"  padahal pada waktu penginstallan tidak terjadi masalah dan sukses. Berdasarkan pengalaman saya mencari informasi dan pengalaman coding, beberapa hal yang menyebabkan hal tersebut terjadi antara lain adalah :
  1. Terdapat library yang tidak disupport oleh handset yang kita running. misalnya Android SDK ada juga yang disertai google api. Jika kita running di device yang tidak disertai library tersebut maka pernyataan error ini akan keluar.
  2. Minimum SDK version tidak terpenuhi. Misalnya aplikasi kita di desain untuk android 2.2 Froyo tetapi kita menginstallnya di android 1.6 maka pesan tersebut juga akan muncul. Untuk mengubahnya tinggal lihat di manifest.
  3. Nah ini permasalahan yang ane alamin sendiri yaitu mendeklarasikan activity yang lebih dari satu di file manifest. Coba dicek kembali apakah activity yang kita deklarasikan di manifest ada yang lebih dari satu. Jika ya maka error ini akan muncul...

Senin, 13 Juni 2011

Menampilkan data mahasiswa C++ dengan menggunakan struct

Penggunaan struct di bahasa C++ memang sangat membantu dalam membuat object dengan tipe data yang berbeda - beda. Nah pada kesempatan ini ane ingin membagi bagaimana menggunakan struct yang digunakan untuk memanipulasi data yang ada. Di bawah ini adalah contoh dari penggunaan struct dengan menggunakan data mahasiswa sebagai objeknya . Pada contoh di bawah ini kita dapat menambahkan data dan menampilkan data yang telah diinput dan kita juga dapat melihat data yang paling maksimum dan minimum dari data tersebut langsung saja lihat kodenya sebagai berikut

#include <iostream>
#include <iomanip>
using namespace std;

struct mhs {
    char NIM[11];
    char NAMA[30];
    float NILAI;
};

typedef mhs mhsArr[50];

int main() {
    int jumlahsiswa, pilihan;
    mhsArr x;
    while (pilihan != 5) {
        cout << "----------------------------------------------------\n";
        cout << "MENU INPUT DATA SISWA\n";
        cout << "1. Masukan data\n";
        cout << "2. Lihat data\n";
        cout << "3. Tampilkan rata rata\n";
        cout << "4. Tampilkan siswa nilai tertinggi dan terendah\n";
        cout << "5. Keluar\n";
        cout << "----------------------------------------------------\n";
        cin >>pilihan;
        if (pilihan == 1) {
            cout << "Masukan jumlah siswa =";
            cin >> jumlahsiswa;
            for (int i = 0; i < jumlahsiswa; i++) {
                cout << "Siswa ke " << i + 1;
                cout << "\nNIM : ";
                cin >> x[i].NIM;
                cout << "NAMA: ";
                cin >> x[i].NAMA;
                cout << "NILAI : ";
                cin >> x[i].NILAI;
                cout << endl;
            }
        } else if (pilihan == 2) {
            cout << "\n |" << setw(13) << "NIM |";
            cout << setw(32) << "NAMA |" << setw(7) << "IPK |" << endl;
            cout <<"------------------------------------------------------------\n";
            for (int i = 0; i < jumlahsiswa; i++) {
                cout << " |" << setw(11) << x[i].NIM << " |";
                cout << setw(30) << x[i].NAMA << " |";
                cout << setw(5) << x[i].NILAI << " |" << endl;

            }
        } else if (pilihan == 3) {
            cout << "Rata - rata dari nilai data tersebut adalah=";
            int jumlah = 0;
            float rata;
            for (int i = 0; i < jumlahsiswa; i++) {
                jumlah += x[i].NILAI;
            }
            rata = jumlah / jumlahsiswa;
            cout << rata << "\n";
        } else if (pilihan == 4) {
            int max = x[0].NILAI, min =x[0].NILAI;
            int indexMax=0,indexMin=0;
            for (int i = 0; i < jumlahsiswa; i++) {
                if (max > x[i].NILAI){
                    max = x[i].NILAI;
                    indexMax=i;
                }
                if (min < x[i].NILAI){
                    min = x[i].NILAI;
                    indexMin=i;
                }
            }
            cout << "Siswa dengan nilai tertinggi adalah\n";
            cout << " |" << setw(11) << x[indexMax].NIM << " |";
            cout << setw(30) << x[indexMax].NAMA << " |";
            cout << setw(5) << x[indexMax].NILAI << " |" << endl;
            cout << "Siswa dengan nilai terendah adalah\n";
            cout << " |" << setw(11) << x[indexMin].NIM << " |";
            cout << setw(30) << x[indexMin].NAMA << " |";
            cout << setw(5) << x[indexMin].NILAI << " |" << endl;
        }

    }

}

Menghitung matriks dengan menggunakan bahaca C++

Ups kemaren dapat kerjaan tentang membuat program dengan menggunakan bahasa C++. Disini akan ane berikan program untuk menghitung matriks mulai dari perkalian, pertambahan, dan perkalian matriks. Untuk menggunakan ini cukup mudah tinggal di running aja programnya.

Langsung aja ni programnya..

#include <stdio.h>
#include <iostream>
#include <iomanip>

using namespace std;

int main() {
    int pilihan;

    int A[3][3], B[3][3], X[3][3], i, j, k;
    while (pilihan != 6) {
        cout << endl;
        cout << "-------------------------------\n";
        cout << "Menu operasi matrik 3x3\n";
        cout << "1. Input matrik\n";
        cout << "2. Tampil matrik\n";
        cout << "3. Penjumlahan matrik\n";
        cout << "4. Pengurangan matrik\n";
        cout << "5. Perkalian matrik\n";
        cout << "6. Keluar\n";
        cout << "Input pilihan ?\n";
        cout << "-------------------------------";
        cout << endl;
        cin >> pilihan;
        if (pilihan == 1) {
            /******* Masukkan matriks A *******/
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++) {
                    cout << "input data matrik A[" << i + 1 << "][" << j + 1 << "] : ";
                    cin >> A[i][j];
                }
            }
            /******** Masukkan matriks B ********/
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++) {
                    cout << "input data matrik B[" << i + 1 << "][" << j + 1 << "] : ";
                    cin >> B[i][j];
                }
            }
        } else if (pilihan == 2) {
            /******** Cetak isi matriks A ********/
            cout << "\n matrik A\n";

            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++)
                    //            printf("%6i", A[i][j]);
                    cout << setw(4) << A[i][j];
                cout << endl;
            }
            cout << endl;
            /******** Cetak isi matriks B *******/
            cout << "\n matrik B\n";
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++)
                    //            printf("%6i", B[i][j]);
                    cout << setw(4) << B[i][j];
                cout << endl;

            }

        } else if (pilihan == 3) {
            /******** Proses penjumlahan matriks A dan B ********/
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++) {
                    X[i][j] = A[i][j] + B[i][j];
                }
            }
            /******** Cetak hasil perkalian matriks A dan B *******/
            cout << "\n matrik Penjumlahan A+B\n";
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++)
                    cout << setw(4) << X[i][j];
                cout << endl;

            }
        } else if (pilihan == 4) {
            /******** Proses penjumlahan matriks A dan B ********/
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++) {
                    X[i][j] = A[i][j] - B[i][j];
                }
            }
            /******** Cetak hasil perkalian matriks A dan B *******/
            cout << "\n matrik Pengurangan A-B\n";
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++)
                    cout << setw(4) << X[i][j];
                cout << endl;

            }
        } else if (pilihan == 5) {
            /******** Proses perkalian matriks A dan B ********/
            /******** Cetak hasil perkalian matriks A dan B *******/
            cout << "\n matrik Perkalian AxB\n";
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++) {
                    X[i][j] = 0;
                    for (k = 0; k < 3; k++) {
                        X[i][j] += A[i][k] * B[k][j];
                    }
                }
            }
            for (i = 0; i < 3; i++) {
                for (j = 0; j < 3; j++)
                    cout << setw(4) << X[i][j];
                cout << endl;

            }


        }
    }
    cout << endl;
    return 0;
}


Moga bermanfaat.. selamat belajar

Jumat, 10 Juni 2011

Melakukan pertukaran data antar activity

Awalnya ane bingung konsep pertukaran data antar activity di Android. Setelah googling beberapa saat ane menemukan beberapa metode untuk pertukaran data antar Intent.. Nah setelah dicari cari ternyata ada Class Bundle  yang berfungsi sebagai media pesan antar activity nantinya. Nah bundle ini nantinya akan dibawa oleh Intent yang membawanya. Setelah kita berhasil mengirimkan data lewat Intent ini kita tinggal ambil Bundle lewat Intent pembawanya. Okeh langsung saja yah kita main ke codenya..

package com.myapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class KirimData extends Activity{
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  Bundle bundle=new Bundle();
  bundle.putInt("X_VALUE", 10);
  bundle.putString("TITLE", "Belajar bundle");
  Intent i=new Intent(this, TestActivity.class);
  i.putExtras(bundle);
  startActivity(i);
 }
}

Sedangkan untuk menerima datanya di Activity TerimaData

package com.myapp;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class TerimaData extends Activity{
 @Override
 protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main2);
  Intent i=getIntent();
  Bundle b=i.getExtras();
  String title=(String) b.get("TITLE");
  String xValue=b.getString("X_VALUE");
 }
}
Cukup mudah kan untuk melakukan pertukaran data antar activity. Nah tetapi ini masih ada kelemahannya yaitu tidak bisa mengirimkan object yang kompleks hanya data - data primitive saja seperti boolean, String, int, double dan data primitive lainnya. Nah untuk mengatasi masalah ini ada beberapa cara. Diantaranya memakai Parcelable tetapi lumayan ribet memakai cara ini, ane tidak akan membahas mengenai Parcelable tetapi ane ingin membahas metode yang lainnya. Salah satunya adalah mengirimkannnya ke Class Application yang ada di android.
Nah untuk memudahkan lihat contoh kode di bawah ini :


package com.myapp;

import java.util.List;

import android.app.Application;

public class MainApp extends Application {
 private List<String> data;

 public List<String> getData() {
  return data;
 }

 public void setData(List<String> data) {
  this.data = data;
 }
 
 
} 
Nah untuk mengeset nilainya tinggal panggil

MainApp ap=(MainApp) getApplication();
  ap.setData(data);

Nah sedangkan untuk mendapatkannya
MainApp ap=(MainApp) getApplication();
                List data=ap.getData();
  
Nah simple kan passing data antar activity di android..

Selamat belajar

Rabu, 08 Juni 2011

Ambil data dari server di android

Berhubung tugas akhir ane berhubungan dengan data dari server nah ane sedikit kasih tutorial nih mengenai cara mengambil data dari server menggunakan teknologi mobile terutama android. Hehe oke let's take a look...


For the fist time the material that you have to know is about webservice. What is the webservice silahkan cari sendiri di Internet ya. Nah pada dasarnya konsep fetching data ke server melalui teknologi mobile biasanya menggunakan webservice. Nah webservice inilah yang merupakan jembatan yang menghubungkan antara data kita yang ada di server dengan data kita yang mau kita fetch. Jadi data itu tidak bisa langsung ditransfer dari mysql ke aplikasi mobile client kita. Jadi kita harus persiapkan service dulu agar kita dapat bertukar data dengan server tersebut.

Nah untuk mekanisme pertukaran datanya biasanya menggunakan file yang bertipe .xml, atau json. Untuk mobile android sendiri ane saranin pake Json coz dari berbagai referensi yang ane baca Json lebih cepat parsing dan membutuhkan size data yang lebih sedikit dibandingkan dengan xml. Tetapi gapapa kalo make XML masih oke kita pake kok.

Sabtu, 04 Juni 2011

Membuat CRUD pertama di Aplikasi Java

CRUD ( Create Read Update Delete ) merupakan fungsi yang wajib ada dalam suatu aplikasi database. Bagi yang pertama kali belajar java, ane mau kasih sedikit ilmu mengenai cara membuat CRUD ini.

Konsep yang ane pake pada pembuatan aplikasi ini adalah dengan menggunakan konsep MVC. Apa itu MVC==> Model View Controller. Program dibagi menjadi beberapa modul antara lain adalah Model, View dan Controller. Model ini adalah representasi data yang akan kita mapping pada aplikasi nantinya. Nah untuk View adalah user interface yang akan dibuat untuk tampilan user. Sedangkan untuk controller adalah fungsi yang berguna untuk membangun aplikasi kita dimana fungsi yang ada disini merupakan proses kontrol terhadap alur kerja dari program kita. Low masih kurang jelas silahkan googling dengan keyword MVC..

Langsung aja tanpa basa - basi ane langsung kasih beberapa contoh coding yang ane buat. 

Nah ane ingin membuat fungsi CRUD dasar pada aplikasi java kita..
Oke langsung kita buat listener pertama dulu ya kita buat interfacenya...

import java.util.List;

/**
 *
 * @author Mr.Hands
 */
public interface Listener<E>  {
    public int update(E object );
    public int insert(E object);
    public int delete(E object);
    public List<E> getData();
}


Kamis, 02 Juni 2011

Mengirimkan Sms dengan Android Source Code / Mengambil nomor contact dari android

Nah pada kesempatan kali ini ane ingin berbagi ilmu lagi nih pada temen - temen yang ingin mendalami mengenai android. Nah pada tutorial kali ini akan ane berikan sedikit tutorial mengenai mengirimkan pesan di android. Pada dasarnya kita dapat mengirimkan pesan di android dengan mudah dengan memanfaatkan kelas SmsManager yang ada di android. Oke langsung saja kita desain layoutnya ya..



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:layout_width="fill_parent" android:layout_height="fill_parent"
 android:background="@drawable/back" android:orientation="vertical">
 <ImageView android:src="@drawable/header"
  android:layout_width="wrap_content" android:layout_height="wrap_content">
 </ImageView>
 <!-- layout untuk header -->
 <LinearLayout android:layout_width="fill_parent"
  android:layout_height="wrap_content" android:orientation="horizontal"
  android:layout_marginTop="20dip" android:layout_marginLeft="20dip">
  <!-- layout gambar home -->
  <ImageView android:layout_width="wrap_content"
   android:layout_height="wrap_content" android:src="@drawable/home"></ImageView>
  <TextView android:text="Main Menu / Generate Chart"
   android:layout_width="fill_parent" android:layout_height="wrap_content"
   android:textColor="#000000" android:textStyle="bold"
   android:textSize="17dip" android:id="@+id/title_caption"></TextView>
 </LinearLayout>
 <!-- layout untuk garis line -->
 <RelativeLayout android:layout_width="fill_parent"
  android:layout_height="wrap_content" android:background="@drawable/line_gradient"
  android:layout_marginTop="-15dip"></RelativeLayout>
 <RelativeLayout android:layout_width="fill_parent"
  android:layout_height="wrap_content" android:background="@drawable/line"
  android:layout_marginTop="20dip"></RelativeLayout>
 <ScrollView android:layout_width="fill_parent"
  android:layout_height="wrap_content">
  <LinearLayout android:layout_width="fill_parent"
   android:layout_height="wrap_content" android:orientation="vertical">
   <TextView android:text="Nomor HP" android:textColor="#000000"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
   <LinearLayout android:layout_width="fill_parent"
    android:layout_height="wrap_content" android:orientation="horizontal">
    <EditText android:text="" android:id="@+id/TextNoHP"
     android:layout_width="210dip" android:layout_height="wrap_content"></EditText>
    <ImageButton android:layout_width="wrap_content"
     android:id="@+id/button_add_contact" android:layout_height="wrap_content"
     android:src="@drawable/add_contact"></ImageButton>
    <ImageButton android:layout_width="wrap_content"
     android:id="@+id/button_send" android:layout_height="wrap_content"
     android:src="@drawable/sms"></ImageButton>
   </LinearLayout>
   <TextView android:text="Pesan" android:textColor="#000000"
    android:layout_width="wrap_content" android:layout_height="wrap_content"></TextView>
   <EditText android:text="" android:id="@+id/TextPesan"
    android:layout_width="fill_parent" android:minLines="4"
    android:layout_height="wrap_content"></EditText>
  </LinearLayout>
 </ScrollView>
</LinearLayout>