Kamis, 05 Januari 2017

Koleksi Code Android

int array[] = {1,2,3};
Intent i = new Intent(A.this, B.class);
i.putExtra("numbers", array);
startActivity(i);

Bundle extras = getIntent().getExtras();
int[] arrayB = extras.getIntArray("numbers");


import java.util.Timer;
import java.util.TimerTask;

           long starttime = 0;
           Timer timer = new Timer();

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.xxx);

lihat();
final Handler h = new Handler(new Callback() {
@Override
public boolean handleMessage(Message msg) {
long millis = System.currentTimeMillis() - starttime;
int seconds = (int) (millis / 1000);
int minutes = seconds / 60;
seconds     = seconds % 60;
if (minutes >=0 && seconds >=20){selesai();}
                 
txtTimer.setText(String.format("Waktu Anda ini :"+"%d:%02d"+" (max=> 3:20)", minutes, seconds));
return false;
}
});

class firstTask extends TimerTask {
@Override
public void run() {h.sendEmptyMessage(0);}
};
starttime = System.currentTimeMillis();
timer.schedule(new firstTask(), 0,1000);
}// setContentView

  public void selesai(){
       new AlertDialog.Builder(this)
              .setTitle("Selesai Angka")
              .setMessage("Terimakasih... Anda Telah Melakukan tes TPA Angka")
              .setNeutralButton("Tutup", new DialogInterface.OnClickListener() {
                     public void onClick(DialogInterface dlg, int sumthin) {
                           finish();
                              timer.cancel();
                      timer.purge();
                           Intent  i= new Intent(soal_angka.this, hasil.class);
                           i.putExtra("nama", sNama);
                           i.putExtra("usia", sUsia);
                           i.putExtra("jk", sJK);
                           i.putExtra("record", record);
                           i.putExtra("kategori", "Tes Angka");
                           i.putExtra("jumbenar", String.valueOf(jumbenar));
                            startActivity(i);
                     }})
              .show();
    } 

int     o = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT;setRequestedOrientation(o);
int      o = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE;setRequestedOrientation(o);

Button
ImageView callImage = (ImageView) findViewById(R.id.pilGambar);
callImage.setOnClickListener(new View.OnClickListener() {
@Override
       public void onClick(View arg0) {
Intent  call= new Intent(getBaseContext(), registrasi.class);
              call.putExtra("pesan", "register");
              startActivity(call);                            }
      });
================================================================
Button btnTelp=(Button)findViewById(R.id.detCall);    
btnTelp.setOnClickListener(new View.OnClickListener() {
       public void onClick(View arg0) {
       String toDial="tel:"+telepon;
       startActivity(new Intent(Intent.ACTION_DIAL,Uri.parse(toDial)));
}});

Button btnMap=(Button)findViewById(R.id.detMap);      
btnMap.setOnClickListener(new View.OnClickListener() {
       public void onClick(View arg0) {
       Intent intent = new Intent(android.content.Intent.ACTION_VIEW,              Uri.parse("https://maps.google.com/maps?saddr="+myLati+","+myLongi+"&daddr="+latitude+","+longitude));                          
startActivity(intent);

}});

getData
       Intent call = this.getIntent();
       String pesan=call.getStringExtra("pesan");
public void loading(){
              new Thread() {
            public void run() {
                 try{Thread.sleep(5000);}
                 catch (Exception e) {}
                 Intent i = new Intent(MainActivity.this, menu.class);
                 startActivity(i); 
                 finish();
            }
       }.start(); 
    }
   
<ProgressBar android:id="@+id/progress_horizontal"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="200dip"
        android:layout_height="wrap_content"
        android:max="100"
        android:progress="50"
        android:secondaryProgress="75" />
===========================================================================================


ProgressDialog progressBar;
      private int progressBarStatus = 0;
      private Handler progressBarHandler = new Handler();
    public void LOADING100() {
            progressBar = new ProgressDialog(this);
            progressBar.setCancelable(true);
            progressBar.setMessage("File downloading ...");// STYLE_SPINNER
            progressBar.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
            progressBar.setProgress(0);
            progressBar.setMax(100);
            progressBar.show();
            progressBarStatus = 0;
            fileSize = 0;
           
            new Thread(new Runnable() {
                  public void run() {
                        while (progressBarStatus < 100) {
                              // process some tasks
                              progressBarStatus = doSomeTasks();
                              // your computer is too fast, sleep 1 second
                              try {Thread.sleep(1000);}
                              catch (InterruptedException e) {e.printStackTrace();}
                              // Update the progress bar
                              progressBarHandler.post(new Runnable() {
                                    public void run() {progressBar.setProgress(progressBarStatus);}});}
                        // ok, file is downloaded,
                        if (progressBarStatus >= 100) {
                              // sleep 2 seconds, so that you can see the 100%
                              try {Thread.sleep(2000);}
                              catch (InterruptedException e) {e.printStackTrace();}
                              progressBar.dismiss();
                        }}}).start();
      }          
      // file download simulator... a really simple
      public int doSomeTasks() {
            while (fileSize <= 1000000) {
            fileSize++;
                  if (fileSize == 100000) {return 10;}
                  else if (fileSize == 200000) {return 20;}
                  else if (fileSize == 300000) {return 30;}
                  // ...add your own
            }
            return 100;
      }    



public void setSplash(){
final ProgressDialog myProgressDialog = ProgressDialog.show(main.this, "Loading", "Mohon Tunggu...", true);
new Thread() {
  public void run() {
     try{Thread.sleep(5000);}
     catch (Exception e) {}
           Intent i = new Intent(main.this, Menu.class);
           myProgressDialog.dismiss();
          main.this.finish();
          startActivity(i); 
    } }.start(); 
}

marquee

<TextView
android:id="@+id/txtMarquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="selamat datang di aplikasi android "
android:textSize="14sp"
android:layout_x="3px"
android:layout_y="4px"
android:typeface="sans"
android:textColor="#0000ff"
android:background="#000000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>

void callMarquee(){
              Calendar cal = Calendar.getInstance();          
              int jam = cal.get(Calendar.HOUR);
              int menit= cal.get(Calendar.MINUTE);
              int detik= cal.get(Calendar.SECOND);

              int tgl= cal.get(Calendar.DATE);
              int bln= cal.get(Calendar.MONTH);
              int thn= cal.get(Calendar.YEAR);

              String stgl=String.valueOf(tgl)+"-"+String.valueOf(bln)+"-"+String.valueOf(thn);
              String sjam=String.valueOf(jam)+":"+String.valueOf(menit)+":"+String.valueOf(detik);
             
              TextView  txtMarquee=(TextView)findViewById(R.id.txtMarquee);
              txtMarquee.setSelected(true);
              String kata="Selamat Datang di Aplikasi Android  "+stgl+"/"+sjam+" #";
              String kalimat=String.format("%1$s",TextUtils.htmlEncode(kata));
              txtMarquee.setText(Html.fromHtml(kalimat+kalimat+kalimat)); 
       }

Play SONG:
MediaPlayer  mp = MediaPlayer.create(this, R.raw.lonely);
              if(!mp.isPlaying()){
                     mp.start();mp.setLooping(true);
                     Toast.makeText(this, "Play Lagu....",Toast.LENGTH_LONG).show();

Message
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.graphics.Matrix;
import android.app.AlertDialog;

public void keluar(){
new AlertDialog.Builder(this)
.setTitle("Menutup Aplikasi")
.setMessage("Terimakasih... Anda Telah Menggunakan Aplikasi Ini")
.setNeutralButton("Tutup", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
finish();
       }})
.show();
}

public void keluarYN(){
AlertDialog.Builder ad=new AlertDialog.Builder(formstuffkoleksi.this);
ad.setTitle("Konfirmasi");
ad.setMessage("Apakah benar ingin keluar?");
ad.setPositiveButton("OK",new OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which) {
keluar();
}});
             
ad.setNegativeButton("No",new OnClickListener(){
public void onClick(DialogInterface arg0, int arg1) {
}});
ad.show();
}

public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
keluarYN();
return true;
}
return super.onKeyDown(keyCode, event);
}   

Menu
public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 7, 0, "Aplikasi").setIcon(R.drawable.icon1);
        menu.add(0,  1, 0, "Setting").setIcon(R.drawable.icon2);
        menu.add(0, 2, 0, "Profil").setIcon(R.drawable.icon3);
        menu.add(0,  3, 0, "Keluar").setIcon(R.drawable.keluar);
       
 SubMenu subMenu = menu.addSubMenu("Mata Uang");//default 0
        subMenu.add(1, 4, 0, "Dolar").setChecked(true);
        subMenu.add(1, 5, 0, "Euro");
        subMenu.add(1, 6, 0, "Pounds");
        subMenu.setGroupCheckable(1, true, true);

        return true;
    }

public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case 2: Toast.makeText(this, "You clicked O",Toast.LENGTH_LONG).show();
return true;
case 3: Toast.makeText(this, "You Keluar",Toast.LENGTH_LONG).show();
return true;                     
case 4: item.setChecked(true);jenis="Dollar";
Toast.makeText(this, "You clicked on Dollar",Toast.LENGTH_LONG).show();
return true;
case 5: item.setChecked(true);jenis="Euro";
Toast.makeText(this, "You clicked on Euro",Toast.LENGTH_LONG).show();
return true;
case 6: item.setChecked(true);jenis="Pounds";
Toast.makeText(this, "You clicked on Pounds",Toast.LENGTH_LONG).show();
return true;
}
return false;
}

public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 1, 0, "Arsip").setIcon(R.drawable.keluar);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case 1:         
                Intent put= new Intent(getBaseContext(), listdataDB.class);                      
                startActivity(put);
                return true;
        }
        return false;
    }


AutoCompleteTextView

<
AutoCompleteTextView android:id="@+id/ltlahir" />

AutoCompleteTextView  actvTlahir = (AutoCompleteTextView) this.findViewById(R.id.ltlahir);
String[]pilPulau=new String[] {"Sumatera","Jawa","Kalimantan","Sulawesi","Maluku","Irian Jaya"};
ArrayAdapter<String> tlahir = new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line,pilPulau);
actvTlahir.setAdapter(tlahir);

spinner
<Spinner android:id="@+id/spinAgama" android:drawSelectorOnTop="true" android:layout_width="wrap_content" android:layout_height="wrap_content" />

String[]pilAgama={"Islam","Kristen","Hindu","Budha","Kepercayaan"};
Spinner mySpin = (Spinner) findViewById(R.id.spinAgama);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, pilAgama);
mySpin.setAdapter(adapter);
mySpin.setOnItemSelectedListener( new OnItemSelectedListener(){
public void onItemSelected(AdapterView<?> arg0,View arg1, int arg2, long arg3){
int index = mySpin.getSelectedItemPosition();
Toast.makeText(getBaseContext(),"Pilihan Anda : " + pilAgama[index], Toast.LENGTH_SHORT).show();}
public void onNothingSelected(AdapterView<?> arg0){}
});

CheckBox
<CheckBox android:id="@+id/chkStatus" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Sudah Bekerja" />

final CheckBox chkStatus = (CheckBox) findViewById(R.id.chkStatus);
chkStatus.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if (((CheckBox) v).isChecked()) {Toast.makeText(getBaseContext(), "Status Selected", Toast.LENGTH_SHORT).show();}
else {Toast.makeText(getBaseContext(), "Status Not selected", Toast.LENGTH_SHORT).show();}
}
});


TAB
public class formTabStd2Lp2mAray extends TabActivity {
           /** Called when the activity is first created. */
           @Override
           public void onCreate(Bundle savedInstanceState) {
               super.onCreate(savedInstanceState);
               TabHost host = this.getTabHost();
              
                host.addTab(host.newTabSpec("one")
               .setIndicator("APLIKASI", getResources().getDrawable(R.drawable.icon1))
               .setContent(new Intent(this, profil.class)));
              
                Intent intentCari= new Intent().setClass(this, tentang.class);
                host.addTab(host.newTabSpec("two")
               .setIndicator("PENCARIAN")
               .setContent(intentCari));

               host.addTab(host.newTabSpec("three")
               .setIndicator("KOSAKATA")
               .setContent(new Intent(this, profil.class)));
             
       host.setCurrentTab(0);
           }
       }
LOAD WEB ASSET/URL
public class loadJqueryOL extends Activity {
    WebView webView;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        this.requestWindowFeature(Window.FEATURE_NO_TITLE);

        setContentView(R.layout.jquery);
        webView = (WebView) findViewById(R.id.webview);
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("file:///android_asset/jqueryoff.html");
        return;
    }


//letakkkan library di asset jg
//<link href="jquery.mobile-1.0.1.min.css" rel="stylesheet" type="text/css">
//<script src="jquery-1.6.4.min.js"></script>
//<script src="jquery.mobile-1.0.1.min.js"></script>

Web.xml
<?xml version="1.0" encoding="utf-8"?>
<WebView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/webview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:scrollbars="none" />


LIST

<?
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:background="#FFFFFF">
     <ListView
        android:id="@+id/listView"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent" />
</LinearLayout>


import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemSelectedListener;

public class listlp2maray extends Activity {
ListView s1;
int jd=0;
String[] arrKursus; 

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.list);

        jd=3;
        arrKursus=new String[jd];
        arrKursus[0]="PHP dan Mysql";
        arrKursus[1]="Desain Grafis";
        arrKursus[2]="Matlab Advance";
             
s1=(ListView)findViewById(R.id.listView);             
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item, arrKursus);
s1.setAdapter(adapter);

s1.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> a, View v, int p, long id) {
Toast.makeText(getBaseContext(), " Kursus pilihan Anda : " + arrKursus[p],Toast.LENGTH_LONG).show();     
              Intent i = new Intent(listlp2maray.this, listlp2maray.class);
              i.putExtra("kursus", arrKursus[p]);
              startActivity(i);
       } 
     });

s1.setOnItemSelectedListener(new OnItemSelectedListener(){
public void onNothingSelected(AdapterView<?> arg0) {}
@Override
public void onItemSelected(AdapterView<?> arg0, View arg1, int p,long arg3) {
Toast.makeText(getBaseContext(), " Kursus pilihan Anda : " + arrKursus[p],Toast.LENGTH_LONG).show();     
Intent i = new Intent(listlp2maray.this, listlp2maray.class);
i.putExtra("kursus", arrKursus[p]);
startActivity(i);
}
});
}
}
Load image dari drawable String



private void showImage() {
    String uri = "drawable/icon";
    // int imageResource = R.drawable.icon;
    int imageResource = getResources().getIdentifier(uri, null, getPackageName());
 
    ImageView imageView = (ImageView) findViewById(R.id.myImageView);
    Drawable image = getResources().getDrawable(imageResource);
    imageView.setImageDrawable(image);
}

Dial:
String toDial="tel:"+number.getText().toString();                                                            
startActivity(new Intent(Intent.ACTION_DIAL,Uri.parse(toDial)));

PROPERTIES
android:typeface="sans"
android:textColor="#ff00ff33"

inputType =phone
inputType =text

<EditText android:inputType="text|textEmailAddress"/>
<EditText android:inputType="number|numberSigned|numberDecimal"/>
<EditText android:inputType="date"/>
<EditText android:inputType="text|textMultiLine|textAutoCorrect"
android:minLines="3" android:gravity="top"/>
<DatePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />

<TimePicker
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" /> 

<activity       
android:theme="@android:style/Theme.Dialog"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"


http://maps.google.com/maps?saddr=-6.358464,106.829481&daddr=-6.316834,106.837378+to:-6.331337,106.834459+to:-6.326218,106.809912+to:-6.303184,106.839609

<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"
    tools:context=".MainActivity" >

<ScrollView
    android:layout_marginBottom="50dip"
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:background="#999999"
       >

<TableLayout>

<TableRow>   
  <TextView android:text="Selamat Datang" />
</TableRow>

<TableRow >  
    <ImageView android:id="@+id/myGambar" android:src="@drawable/info"/>
</TableRow>
   
<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">   
   <Button
        android:id="@+id/btnPlay"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/txtPesan"
        android:layout_marginTop="51dp"
        android:text="PlaySong" />
</TableRow>
       
<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">   
    <EditText android:layout_centerVertical="true"
       android:layout_centerHorizontal="true"
       android:id="@+id/edKonversi"
       android:layout_height="wrap_content"
       android:text="100"
       android:layout_width="wrap_content">
       </EditText>
</TableRow> 
<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView
        android:id="@+id/txtHasil"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="Hasil Konversi" />
</TableRow>   

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView
android:id="@+id/mainMarquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="selamat datang di aplikasi android "
android:textSize="14sp"
android:layout_x="3px"
android:layout_y="4px"
android:typeface="sans"
android:textColor="#0000ff"
android:background="#000000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>
</TableRow> 

</TableLayout>
</ScrollView>
</RelativeLayout>
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:layout_marginBottom="50dip"
       >

<TableLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="fill_parent"
  android:layout_height="wrap_content"
  android:stretchColumns="1"
  >

<TableRow android:id="@+id/TableRowmarquee" android:layout_width="wrap_content" android:layout_height="wrap_content">
<TextView
android:id="@+id/mainMarquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="selamat datang di aplikasi android "
android:textSize="14sp"
android:layout_x="3px"
android:layout_y="4px"
android:typeface="sans"
android:textColor="#0000ff"
android:background="#000000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>
</TableRow> 

      <TextView
        android:id="@+id/txtwellcome"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="10dp"
        android:text="Silakan isi form registrasi :"
        android:textAppearance="?android:attr/textAppearanceLarge" />
     
  <TableRow>
              <TextView android:text="Nama:" />
              <EditText android:id="@+id/lnama" />
  </TableRow>
  <TableRow>
              <TextView android:text="Tmp lahir:" />
              <AutoCompleteTextView android:id="@+id/ltlahir" />
  </TableRow>
       <TableRow>
              <TextView android:text="Tgl Lahir:" />
              <DatePicker
                  android:id="@+id/dpTglLahir"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
       </TableRow>
      
       <TableRow>
              <TextView android:text="Jenis_Kelamin:" />
                     <RadioGroup
                    android:layout_width="fill_parent"
                    android:layout_height="wrap_content"
                    android:orientation="vertical">
                    <RadioButton android:id="@+id/radPa"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Laki-laki"
                        android:checked="true" />
                    <RadioButton android:id="@+id/radPi"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:text="Perempuan" />
                  </RadioGroup>
       </TableRow>
      
       <TableRow>
       <TextView android:text="Telepon:" />
       <EditText android:id="@+id/ltelp" android:inputType ="phone" />
       </TableRow>
      
       <TableRow>
              <TextView android:text="Agama:" />
              <Spinner
                  android:id="@+id/spinAgama" android:drawSelectorOnTop="true"
                  android:layout_width="wrap_content"
                  android:layout_height="wrap_content" />
       </TableRow>
      
       <TableRow>
              <TextView android:text="Status:" />
                <CheckBox android:id="@+id/chkStatus"
                      android:layout_width="wrap_content"
                      android:layout_height="wrap_content"
                      android:text="Sudah Bekerja" />
       </TableRow>
      
       <TableRow>
              <TextView android:text="Alamat" />
              <EditText android:id="@+id/lalamat"
                  android:singleLine="false"
                     android:gravity="top"
                     android:lines="2"
                     android:scrollHorizontally="false"
                     android:maxLines="2"
                     android:maxWidth="200sp"
              />
       </TableRow>
      
           <ImageView
               android:id="@+id/pilGambar"
               android:layout_width="wrap_content"
               android:layout_height="140dp"
               android:background="@drawable/user"
               android:padding="10dp" />
        
              <TableRow>
               <Button android:id="@+id/btnClear"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Clear"
                android:visibility="visible"
              />  
               <Button android:id="@+id/btnSave"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Save"
              />
      
              </TableRow>
</TableLayout>
</ScrollView>
Detail.xml
<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"
    tools:context=".MainActivity" >
   
<ScrollView
    android:layout_marginBottom="50dip"
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:background="#999999"
       >

<TableLayout android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#fff">

<TextView
android:id="@+id/txtMarquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="14sp"
android:layout_x="3px"
android:layout_y="4px"
android:typeface="sans"
android:textColor="#0000ff"
android:background="#000000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>

    <ImageView
   android:id="@+id/myGambar"
   android:layout_centerHorizontal="true"
   android:src="@drawable/gunung"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   />
   
<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Kode Wisata:" />
      <TextView android:id="@+id/ikode_wisata" />
</TableRow>   

<TableRow android:id="@+id/TableRow10" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Nama Wisata:" />
      <TextView android:id="@+id/inama_wisata" />
</TableRow>   

<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Alamat :"/>
      <TextView android:id="@+id/ialamat" />
</TableRow>   

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Jarak :"/>
    <TextView android:id="@+id/ijarak" />      
</TableRow>   

<TableRow android:id="@+id/TableRow03" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Koordinat :"/>
      <TextView android:id="@+id/ikoordinat" />
</TableRow>   

<TableRow android:id="@+id/TableRow04" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Fasilitas :"/>
      <TextView android:id="@+id/iketerangan" />      
</TableRow>  

<TableRow android:id="@+id/TableRow05" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Catatan :"/>
      <TextView android:id="@+id/ideskripsi" />
</TableRow>  

<TableRow android:id="@+id/TableRow06" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Posisi Anda :"/>
      <TextView android:id="@+id/iposanda" />  
</TableRow>  

<TableRow android:id="@+id/TableRow06" android:layout_width="wrap_content" android:layout_height="wrap_content">   
  <Button android:id="@+id/btnDirection"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Go Direction"
                android:visibility="visible"
              />
</TableRow>   

</TableLayout>
</ScrollView>
</RelativeLayout>
Detail.java

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class detail extends Activity {
       String mylati="6.173174";
       String mylongi="106.825476";
       String myposisi="Kampus Universitas Gunadarma Kelapa Dua";
         String kode_wisata,nama_wisata,alamat,latitude,longitude,jarak,gambar,keterangan,deskripsi;
       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.detail);

        Intent io = this.getIntent();
        kode_wisata=io.getStringExtra("kode_wisata");
        nama_wisata=io.getStringExtra("nama_wisata");
        alamat=io.getStringExtra("alamat");
        latitude=io.getStringExtra("latitude");
        longitude=io.getStringExtra("longitude");
        jarak=io.getStringExtra("jarak");
        gambar=io.getStringExtra("gambar");
        keterangan=io.getStringExtra("keterangan");
        deskripsi=io.getStringExtra("deskripsi");
        mylati=io.getStringExtra("mylati");
        mylongi=io.getStringExtra("mylongi");
        myposisi=io.getStringExtra("myposisi");
       
        TextView txtKode=(TextView)findViewById(R.id.ikode_wisata);
        TextView txtNama=(TextView)findViewById(R.id.inama_wisata);
        TextView txtAlamat=(TextView)findViewById(R.id.ialamat);
        TextView txtKoordinat=(TextView)findViewById(R.id.ikoordinat);
        TextView txtJarak=(TextView)findViewById(R.id.ijarak);
        TextView txtKet=(TextView)findViewById(R.id.iketerangan);   
        TextView txtDes=(TextView)findViewById(R.id.ideskripsi);  
        TextView txtPos=(TextView)findViewById(R.id.iposanda);  
       
        txtKode.setText(kode_wisata);
        txtNama.setText(nama_wisata);
        txtJarak.setText(jarak+" Km");
        txtAlamat.setText(alamat);
        txtKoordinat.setText(latitude+","+longitude);
        txtKet.setText(keterangan);
        txtDes.setText(deskripsi);
        txtPos.setText(myposisi+" ("+mylati+","+mylongi+")");
       
        Button  btnmap=(Button)findViewById(R.id.btnDirection);
        btnmap.setOnClickListener(new View.OnClickListener() {
        public void onClick(View arg0) {
              Intent  i= new Intent(detail.this, map.class);
                     startActivity(i);                
        }}); 
    }
}

Inputnama.xml
<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"
    tools:context=".MainActivity" >
   
<ScrollView
    android:layout_marginBottom="50dip"
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:background="#999999"
       >

<TableLayout android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#fff">

<TextView
android:id="@+id/txtMarquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="14sp"
android:layout_x="3px"
android:layout_y="4px"
android:typeface="sans"
android:textColor="#0000ff"
android:background="#000000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>

<ImageView
   android:id="@+id/myGambar"
   android:layout_centerHorizontal="true"
   android:src="@drawable/user"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   />

<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Nama " />
      <EditText android:id="@+id/inama" />
</TableRow>   
<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Usia "/>
      <EditText android:id="@+id/iusia"  android:inputType="number|numberSigned|numberDecimal" />
</TableRow>   

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Jenis Kelamin"/>
     <RadioGroup
android:id="@+id/RadioGroup01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
                    
       <RadioButton android:text="Laki-laki"
       android:id="@+id/radPa"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:checked="true"
       android:textColor="#000">
       </RadioButton>
                          
       <RadioButton android:text="Perempuan"
       android:id="@+id/radPi"
       android:layout_width="wrap_content"
       android:textColor="#000"
       android:layout_height="wrap_content">
       </RadioButton>
</RadioGroup>       
</TableRow>   

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <Button android:id="@+id/iBatal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Batal"
  />
  <Button android:id="@+id/iOk"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="OK"
                android:visibility="visible"
              />
</TableRow>   

</TableLayout>
</ScrollView>
</RelativeLayout>
Inputnama.xml
<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"
    tools:context=".MainActivity" >
   
<ScrollView
    android:layout_marginBottom="50dip"
       xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="fill_parent"
       android:layout_height="wrap_content"
       android:background="#999999"
       >

<TableLayout android:id="@+id/TableLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:background="#fff">

<TextView
android:id="@+id/txtMarquee"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=""
android:textSize="14sp"
android:layout_x="3px"
android:layout_y="4px"
android:typeface="sans"
android:textColor="#0000ff"
android:background="#000000"
android:singleLine="true"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>


    <ImageView
   android:id="@+id/myGambar"
   android:layout_centerHorizontal="true"
   android:src="@drawable/user"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   />

   
<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Nama " />
      <EditText android:id="@+id/inama" />
</TableRow>   
<TableRow android:id="@+id/TableRow01" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Usia "/>
      <EditText android:id="@+id/iusia"  android:inputType="number|numberSigned|numberDecimal" />
</TableRow>   

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <TextView android:text="Jenis Kelamin"/>
     <RadioGroup
android:id="@+id/RadioGroup01"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
                    
       <RadioButton android:text="Laki-laki"
       android:id="@+id/radPa"
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:checked="true"
       android:textColor="#000">
       </RadioButton>
                          
       <RadioButton android:text="Perempuan"
       android:id="@+id/radPi"
       android:layout_width="wrap_content"
       android:textColor="#000"
       android:layout_height="wrap_content">
       </RadioButton>
</RadioGroup>       
</TableRow>   

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">   
      <Button android:id="@+id/iBatal"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="Batal"
  />
  <Button android:id="@+id/iOk"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:text="OK"
                android:visibility="visible"
              />
</TableRow>   

</TableLayout>
</ScrollView>
</RelativeLayout>

Inputnama.java

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.DialogInterface.OnClickListener;
import android.text.Html;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SubMenu;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

public class inputnama extends Activity {
                EditText txtnama,txtusia;
                RadioButton radPa,radPi;
                String jk="Laki-laki";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.inputnama);
        callMarquee();
       
        txtnama= (EditText) findViewById(R.id.inama);
        txtusia= (EditText) findViewById(R.id.iusia);
       
        radPa= (RadioButton) findViewById(R.id.radPa);
        radPa.setOnClickListener(new View.OnClickListener() {
                                                @Override
                                                public void onClick(View v) {
                                                jk="Laki-laki";
                                                }
                                });

        radPi= (RadioButton) findViewById(R.id.radPi);
        radPi.setOnClickListener(new View.OnClickListener() {
                                                @Override
                                                public void onClick(View v) {
                                                                jk="Perempuan";
                                                }
                                });
       
        Button btnOk= (Button) findViewById(R.id.iOk);
        btnOk.setOnClickListener(new View.OnClickListener() {
                                                @Override
                                                public void onClick(View v) {
                                                String nama=txtnama.getText().toString();
                                                String usia=txtusia.getText().toString();
                                                if(nama.length()<1){lengkapi("Nama");}
                                                else if(usia.length()<1){lengkapi("Usia");}
                                                else{
                                                Intent put= new Intent(getBaseContext(), soalsoal.class);
                                                                put.putExtra("nama", nama);
                                                                put.putExtra("usia", usia);
                                                                put.putExtra("jk", jk);
                                                                startActivity(put);
                                                }
                                                }
                                });
       
        Button btnBatal= (Button) findViewById(R.id.iBatal);
        btnBatal.setOnClickListener(new View.OnClickListener() {
                                                @Override
                                                public void onClick(View v) {
                                                                keluar();
                                                }
                                });
    }
   
    public void lengkapi(String item){
                new AlertDialog.Builder(this)
                                .setTitle("Lengkapi Data")
                                .setMessage("Silakan lengkapi data "+item)
                                .setNeutralButton("OK", new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dlg, int sumthin) {
                                                }})
                                .show();
    }
   
    public void keluar(){
                new AlertDialog.Builder(this)
                                .setTitle("Menutup Aplikasi")
                                .setMessage("Terimakasih... Anda Telah Menggunakan Aplikasi Ini")
                                .setNeutralButton("Tutup", new DialogInterface.OnClickListener() {
                                                public void onClick(DialogInterface dlg, int sumthin) {
                                                finish();
                                                }})
                                .show();
    }
    public void keluarYN(){
                AlertDialog.Builder ad=new AlertDialog.Builder(inputnama.this);
                ad.setTitle("Konfirmasi");
                ad.setMessage("Apakah benar ingin keluar?");
                ad.setPositiveButton("OK",new OnClickListener(){
                                                @Override
                                                public void onClick(DialogInterface dialog, int which) {
                                                                                keluar();
                                                                }});
               
                ad.setNegativeButton("No",new OnClickListener(){
                                                public void onClick(DialogInterface arg0, int arg1) {
                                                }});
                ad.show();
    }

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
                keluarYN();
                return true;
        }
    return super.onKeyDown(keyCode, event);
}   
    void callMarquee(){
                                Calendar cal = Calendar.getInstance();          
                                int jam = cal.get(Calendar.HOUR);
                                int menit= cal.get(Calendar.MINUTE);
                                int detik= cal.get(Calendar.SECOND);

                                int tgl= cal.get(Calendar.DATE);
                                int bln= cal.get(Calendar.MONTH);
                                int thn= cal.get(Calendar.YEAR);

String stgl=String.valueOf(tgl)+"-"+String.valueOf(bln)+"-"+String.valueOf(thn);
String sjam=String.valueOf(jam)+":"+String.valueOf(menit)+":"+String.valueOf(detik);
                               
TextView  txtMarquee=(TextView)findViewById(R.id.txtMarquee);
txtMarquee.setSelected(true);
String kata="Selamat Datang di Aplikasi Android ..Selamat Mengerjakan /"+stgl+"/"+sjam+" #";
String kalimat=String.format("%1$s",TextUtils.htmlEncode(kata));
txtMarquee.setText(Html.fromHtml(kalimat+kalimat+kalimat)); 
}
   
public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(0, 1, 0, "Arsip").setIcon(R.drawable.keluar);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case 1:         
                Intent put= new Intent(getBaseContext(), listdataDB.class);                      
                startActivity(put);
                return true;
        }
        return false;
    }
   
}


https://code.google.com/apis/console/
MainActivity.java
package com.lp2maray.ui;

import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.MarkerOptions;

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;

public class MainActivity extends FragmentActivity{
                private GoogleMap map;

                @Override
                protected void onCreate(Bundle savedInstanceState){
                                super.onCreate(savedInstanceState);
                                setContentView(R.layout.activity_main);
                                setupMap();
                }

                private void setupMap(){
                if (map == null){
                map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.maps)).getMap();
                if (map != null){
                map.addMarker(new MarkerOptions().position(new LatLng(-6.353868, 106.832845)).title("lp2m aray")
.snippet(“Halte Kampus UI Depok”)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));
                map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(-6.353868, 106.832845),10));
                  }
          }
     }
}
--------------------------------------------------------------
<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"       
    tools:context=".MainActivity" >
       <TextView           
           android:layout_width="wrap_content"        
           android:layout_height="wrap_content"              
           android:layout_centerHorizontal="true"            
           android:layout_centerVertical="true"              
           android:text="@string/hello_world" />
       <fragment           
           android:id="@+id/maps"       
           android:layout_width="match_parent"        
           android:layout_height="match_parent"              
           class="com.google.android.gms.maps.SupportMapFragment" />
</RelativeLayout>
----------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"      
    package="com.lp2maray.ui"     
    android:versionCode="1"      
    android:versionName="1.0" >
       <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />
<permission          android:name="com.example.tesmap.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>

<uses-permission android:name="com.example.tesmap.permission.MAPS_RECEIVE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-feature android:glEsVersion="0x00020000" android:required="true" />
<application        
           android:allowBackup="true"          
           android:icon="@drawable/ic_launcher"              
           android:label="@string/app_name"           
           android:theme="@style/AppTheme" >
              <!-- Google Maps API V2 -->
              <meta-data                
                  android:name="com.google.android.maps.v2.API_KEY"               
                  android:value="AIzaSyBB4xNonnjwaYlVWjofX1heCuJ97I3IsNA" />
              <activity                 
                  android:name="com.example.tesmap.MainActivity"                  
                  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>

public static void BubbleSort(){
                int j;
                boolean flag = true;   // set flag to true to begin first pass
                double temp=0.0;   //holding variable
                String stemp="";
                while ( flag ){
                       flag= false;    //set flag to false awaiting a possible swap
                       for( j=0;  j < jd -1;  j++ ){
                              if ( dJarak[ j ] > dJarak[j+1] ) {
                                      temp = dJarak[ j ];               
                                      dJarak[ j ] = dJarak[ j+1 ];
                                      dJarak[ j+1 ] = temp;
                                      
                                      stemp=arNama[j];
                                      arNama[ j ] = arNama[ j+1 ];
                                      arNama[ j+1 ] = stemp;
        
                                      flag = true;             
                              }
                       }
                 }
           }
==============================================================================================


LOAD URL IMAGE

new DownloadImageTask((ImageView) findViewById(R.id.dlGambar)).execute(arUrlFoto);


private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;

public DownloadImageTask(ImageView bmImage) {
    this.bmImage = bmImage;
}

protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
  InputStream in = new java.net.URL(urldisplay).openStream();
  mIcon11 = BitmapFactory.decodeStream(in);
  }
catch (Exception e) {Log.e("Error", e.getMessage());e.printStackTrace();}
    return mIcon11;
}

protected void onPostExecute(Bitmap result) {bmImage.setImageBitmap(result); }
}

=====================================================================

public static double hitJarak(double lat1, double lng1, double lat2, double lng2) {
           double earthRadius = 3958.75;
           double dLat = Math.toRadians(lat2-lat1);
           double dLng = Math.toRadians(lng2-lng1);
           double a = Math.sin(dLat/2) * Math.sin(dLat/2) +
                      Math.cos(Math.toRadians(lat1)) * Math.cos(Math.toRadians(lat2)) *
                      Math.sin(dLng/2) * Math.sin(dLng/2);
           double c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a));
           double dist = earthRadius * c;

           int meterConversion = 1609;
           double myjr=dist * meterConversion;
           return Math.floor(myjr/1000);
           } 
ImageView k1 = (ImageView) this.findViewById(R.id.cmdCari);
              k1.setOnClickListener(new View.OnClickListener() {
                     @Override
                     public void onClick(View arg0) {
                           String kata=txtCari.getText().toString();
                           String alamat="";
                           try {
                                  alamat="http://translate.google.com.tw/translate_a/t?client=t&hl=en&sl=id&tl=fr&ie=UTF-8&oe=UTF-8&multires=1&oc=1&otf=2&ssel=0&tsel=0&sc=1&q=" + URLEncoder.encode(kata, "UTF-8");
                           } catch (UnsupportedEncodingException e1) {
                                  // TODO Auto-generated catch block
                                  e1.printStackTrace();
                           }
                          
                           XMLParser parser = new XMLParser();
                           String xml=null;
                           try {
                                  xml = parser.getXmlFromUrl(alamat);
                                  String kal=translate(xml);
                                  txtHasil.setText(kal);
                           } catch (Exception e) {
                                  // TODO Auto-generated catch block
                                  e.printStackTrace();
                                  txtHasil.setText("err data ");
                           }     
                     }
              });
       }

       String translate(String result){
result = result.substring(2, result.indexOf("]]") + 1);
        StringBuilder sb = new StringBuilder();
        String[] splits = result.split("(?<!\\\\)\"");
        for(int i = 1; i < splits.length; i += 8)
            sb.append(splits[i]);
        return sb.toString().replace("\\n", "\n").replaceAll("\\\\(.)", "$1");
       }


Button  btnProses=(Button)findViewById(R.id.button1);
btnProses.setOnClickListener(new View.OnClickListener() {
public void onClick(View arg0) {
              myip=txtIp.getText().toString();
               Intent intent = new Intent("com.google.zxing.client.android.SCAN");
                   intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
                   startActivityForResult(intent, 0);   
       }});         
    }
   
     public void onActivityResult(int requestCode, int resultCode, Intent intent) {
               if (requestCode == 0) {
                     try{
                   if (resultCode == RESULT_OK) {
                      String contents = intent.getStringExtra("SCAN_RESULT");
                       String format = intent.getStringExtra("SCAN_RESULT_FORMAT");     
                       qr=contents;
                            XMLParser parser = new XMLParser();
                           String xml=null;
                            URL = myip+"/simonas/posisi.php?tn="+qr+"&ket=ok";
//Toast.makeText(menu.this,"URL:"+URL, Toast.LENGTH_LONG).show();                             
                           xml = parser.getXmlFromUrl(URL);        
                           if(xml.indexOf("Tiket")>=0){ pesan(xml); }
                     }
                   else if (resultCode == RESULT_CANCELED) {qr="";   batal();}
               }
               catch(Exception ee){ qr="";salah();}
               }
     }
map.addMarker(new MarkerOptions().position(new LatLng(alat, alon)).title("Posisi Anda").snippet(myCity).icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)));

String in(String p,String k){
String l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghipqrstuvwxyz0123456789!@#&%*()-_=:,.'?/$^ ";
       int pms=l.length();
       int pln=p.length();
    int ky=k.length();
      
              String        y =k;
              int m = pln%ky;
                     for( int i=1; i<pln/ky ; i++){k=k+y;}
                     k=k+k.substring(0,m);     
                     System.out.println("Key2 Text:\t"+k);
                     System.out.println("=============================================");
                    
String c=""
for (int j=0; j<pln; j++ ){
       char hsl=l.charAt((l.indexOf(k.charAt(j)) + l.indexOf(p.charAt(j)))%pms);
       c=c + l.charAt((l.indexOf(k.charAt(j)) + l.indexOf(p.charAt(j)))%pms);
       }
return c;
}
                    
//==================================================================================
String out(String p,String k){
String l="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#&%*()-_=:,.'?/$^ ";
       int pms=l.length();
       int cpr=p.length();
    int ky=k.length();
      
       String        y =k;
              int m = cpr%ky;
                     for( int i=1; i<cpr/ky ; i++){k=k+y;}
                     k=k+k.substring(0,m);     
String pl = "";           
for (int j=0; j<cpr; j++ ){
       char hsl=l.charAt(((l.indexOf(p.charAt(j)) - l.indexOf(k.charAt(j))) +pms )%pms);
       pl=pl + hsl;
       }     
return pl;
}





try {

        //set the download URL, a url that points to a file on the internet

        //this is the file to be downloaded

        URL url = new URL("http://somewhere.com/some/webhosted/file");



        //create the new connection

        HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();



        //set up some things on the connection

        urlConnection.setRequestMethod("GET");

        urlConnection.setDoOutput(true);



        //and connect!

        urlConnection.connect();



        //set the path where we want to save the file

        //in this case, going to save it on the root directory of the

        //sd card.

        File SDCardRoot = Environment.getExternalStorageDirectory();

        //create a new file, specifying the path, and the filename

        //which we want to save the file as.

        File file = new File(SDCardRoot,"somefile.ext");



        //this will be used to write the downloaded data into the file we created

        FileOutputStream fileOutput = new FileOutputStream(file);



        //this will be used in reading the data from the internet

        InputStream inputStream = urlConnection.getInputStream();



        //this is the total size of the file

        int totalSize = urlConnection.getContentLength();

        //variable to store total downloaded bytes

        int downloadedSize = 0;



        //create a buffer...

        byte[] buffer = new byte[1024];

        int bufferLength = 0; //used to store a temporary size of the buffer



        //now, read through the input buffer and write the contents to the file

        while ( (bufferLength = inputStream.read(buffer)) > 0 ) {

                //add the data in the buffer to the file in the file output stream (the file on the sd card

                fileOutput.write(buffer, 0, bufferLength);

                //add up the size so we know how much is downloaded

                downloadedSize += bufferLength;

                //this is where you would do something to report the prgress, like this maybe

                updateProgress(downloadedSize, totalSize);



        }

        //close the output stream when done

        fileOutput.close();



//catch some possible errors...

} catch (MalformedURLException e) {

        e.printStackTrace();

} catch (IOException e) {

        e.printStackTrace();

}

===============
Start Email-Activity with Preset Data (via Intents)

3 votes · 7 comments
This code starts the email activity with pre-set data. On the emulator it might get a "No application can perform this action" failure, although it works on a real phone. Code picked up on anddev
raw · 
copy
 · download
/* Create the Intent */

final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);



/* Fill it with Data */

emailIntent.setType("plain/text");

emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{"to@email.com"});

emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Subject");

emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, "Text");



/* Send it off to the Activity-Chooser */

context.startActivity(Intent.createChooser(emailIntent, "Send mail..."));

Display a progress dialog while computing

2 votes · 3 comments
This snippet creates a ProgressDialog and a thread to execute something with an unknown duration (web service as an example). When this "thing" finishes, a message is sent to the parent of the thread to stop the ProgessDialog.
raw · 
copy
 · download
final ProgressDialog dialog = ProgressDialog.show(this, "Title", "Message", true);

final Handler handler = new Handler() {

   public void handleMessage(Message msg) {

      dialog.dismiss();

      }

   };

Thread checkUpdate = new Thread() {  

   public void run() {

//

// YOUR LONG CALCULATION (OR OTHER) GOES HERE

//

      handler.sendEmptyMessage(0);

      }

   };

checkUpdate.start();

Prompt User Input with an AlertDialog

6 votes · 16 comments
This code creates an input-dialog with AlertDialog.Builder where a user can enter text in an EditText field and press on "Ok" and "Cancel".
raw · 
copy
 · download
AlertDialog.Builder alert = new AlertDialog.Builder(this);



alert.setTitle("Title");

alert.setMessage("Message");



// Set an EditText view to get user input 

final EditText input = new EditText(this);

alert.setView(input);



alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() {

public void onClick(DialogInterface dialog, int whichButton) {

  String value = input.getText();

  // Do something with value!

  }

});



alert.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

  public void onClick(DialogInterface dialog, int whichButton) {

    // Canceled.

  }

});



alert.show();

Send a notification

1 vote · 1 comment
Useful for your threads, as they can't access the display interface.
raw · 
copy
 · download
protected void sendnotification (String title, String message) {

   String ns = Context.NOTIFICATION_SERVICE;

   NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns);

 

   int icon = R.drawable.icon;

   CharSequence tickerText = message;

   long when = System.currentTimeMillis();



   Notification notification = new Notification(icon, tickerText, when);



   Context context = getApplicationContext();

   CharSequence contentTitle = title;

   CharSequence contentText = message;

   Intent notificationIntent = new Intent(this, AndroToDo.class);

   PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0);



   notification.flags = Notification.FLAG_AUTO_CANCEL;

   notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);

   mNotificationManager.notify(NOTIFICATION_ID, notification);

}

Latitude and Longitude of a place

1 vote · 0 comments
One can know the latitude and longitude of a place if know the place name.
raw · 
copy
 · download
//---geo-coding---

Geocoder geoCoder = new Geocoder(this, Locale.getDefault());

try {

List<Address> addresses = geoCoder.getFromLocationName(

empire state building”, 5);

String add = “”;

if (addresses.size() > 0) {

p = new GeoPoint(

(int) (addresses.get(0).getLatitude() * 1E6),

(int) (addresses.get(0).getLongitude() * 1E6));

mc.animateTo(p);

mapView.invalidate();

}

} catch (IOException e) {

e.printStackTrace();

}

Post a tweet on Twitter

3 votes · 5 comments
This code authenticates and posts a tweet on Twitter. Written by Davanum Srinivas
raw · 
copy
 · download
package org.apache.twitter;



import android.app.Activity;

import android.content.Intent;

import android.net.http.RequestQueue;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.EditText;

import org.apache.commons.codec.binary.Base64;



import java.io.ByteArrayInputStream;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Map;



/**

 * Initial screen with edit box for tweets and

 * a web view to display the tweets from friends

 */

public class TwitterClient extends Activity {



    static final int GET_LOGIN_INFORMATION = 1;



    WebView webView;

    RequestQueue requestQueue;

    String authInfo;



    /**

     * Called with the activity is first created.

     */

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        setContentView(R.layout.main);



        // Set the initial text

        webView = (WebView) findViewById(R.id.webView);

        webView.loadData(

                "Please click on setup and enter your twitter credentials",

                "text/html", "utf-8");



        // When they click on the set up button show the login screen

        Button button = (Button) findViewById(R.id.setup);

        button.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Intent intent = new Intent(TwitterClient.this, TwitterLogin.class);

                startSubActivity(intent, GET_LOGIN_INFORMATION);

            }

        });



        // When they click on the Tweet! button, then get the

        // text in the edit box and send it to twitter

        final Activity activity = this;

        Button button2 = (Button) findViewById(R.id.update);

        button2.setOnClickListener(new View.OnClickListener() {

            public void onClick(View v) {

                Log.i("http", "Update clicked");

                Map headers = new HashMap();

                if (authInfo == null) {

                    return;

                }

                headers.put("Authorization", "Basic " + new String(Base64.encodeBase64(authInfo.getBytes())));

                EditText user = (EditText) findViewById(R.id.updateText);

                String text = null;

                try {

                    text = "status=" + URLEncoder.encode(user.getText().toString(), "UTF-8");

                    Log.i("http", "with " + text);

                } catch (UnsupportedEncodingException e) {

                    Log.e("http", e.getMessage());

                }

                byte[] bytes = text.getBytes();

                ByteArrayInputStream baos = new ByteArrayInputStream(bytes);

                // See Twitter API documentation for more information

                // http://groups.google.com/group/twitter-development-talk/web/api-documentation

                requestQueue.queueRequest(

                        "https://twitter.com/statuses/update.xml",

                        "POST", headers, new MyEventHandler2(activity), baos, bytes.length, false);

            }

        });



        // Start a thread to update the tweets from friends every minute

        requestQueue = new RequestQueue(this);

        Thread t = new Thread(new MyRunnable(this));

        t.start();

    }



    protected void onActivityResult(int requestCode, int resultCode,

                                    String data, Bundle extras) {

        if (requestCode == GET_LOGIN_INFORMATION && resultCode == RESULT_OK) {

            // Save the user login information

            authInfo = data;

        }

    }



}

Network connectivity changes

1 vote · 0 comments
This snippets configures listening for connectivity events (wifi, 3g) on and off
raw · 
copy
 · download
//put this in your activity, service, or whatever



private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {

        @Override

        public void onReceive(Context context, Intent intent) {



            boolean isWifiConnected = false;

            boolean isMobileConnected = false;



            ConnectivityManager connMgr = (ConnectivityManager) 

                    context.getSystemService(Context.CONNECTIVITY_SERVICE);



            NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);



            if(networkInfo != null)

            isWifiConnected = networkInfo.isConnected();



            networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);



            if(networkInfo != null)

            isMobileConnected = networkInfo.isConnected();      



            Log.d("network status", "wifi == " + isWifiConnected + " and mobile == " + isMobileConnected);



        }

    };



//registering the receiver from activity, service



registerReceiver(mConnReceiver, 

           new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));



//or 



context.registerReceiver(mConnReceiver, 

           new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); //where context it's a Context class object





//manifest 



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

Basic service example in android

2 votes · 0 comments
Service -A Service is an application component representing either an application's desire to perform a longer-running operation while not interacting with the user or to supply functionality for other applications to use.
Difference between a Thread , service and asynchronous task
1) Service is like an Activity but has no interface. Probably if you want to fetch the weather for example you won't create a blank activity for it, for this you will use a Service.
2) A Thread is a Thread, probably you already know it from other part. You need to know that you cannot update UI from a Thread. You need to use a Handler for this, but read further.
3) An AsyncTask is an intelligent Thread that is advised to be used. Intelligent as it can help with it's methods, and there are two methods that run on UI thread, which is good to update UI components
Continue Reading
raw · 
copy
 · download
public class ServiceDemoActivity extends Activity implements OnClickListener {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        findViewById(R.id.start).setOnClickListener(this);

        findViewById(R.id.stop).setOnClickListener(this);

    }



    private Intent inetnt;

    @Override

    public void onClick(View v) {

        switch (v.getId()) {

        case R.id.start:

            

            inetnt=new Intent(this,ServiceExample.class);

            startService(inetnt);

            break;

        case R.id.stop:

            

            inetnt=new Intent(this,ServiceExample.class);

            stopService(inetnt);

            break;

        }

    }

    

    @Override

    protected void onResume() {

        super.onResume();

    }

    

    @Override

    protected void onDestroy() {

        super.onDestroy();

//        

    }

}

Using C-style printf format strings to include variables in strings.xml

2 votes · 0 comments
Variables can be included in the strings defined in strings.xml using the C-style printf '%' syntax. This is because getString passes the string through java.util.Formatter.
In the example above, getString substitutes %d for the integer 10 in the string message.
This tip was taken from Bram Borggreve's blog ( bVirtual.nl ).
raw · 
copy
 · download
// In strings.xml



<string name="unread_messages">You have %d unread messages</string>



// In Java code



String message = getString(R.string.unread_messages, 10);

Kill You Application

5 votes · 5 comments
If you want to completely kill your application, rather than just finish the activity then either of the above snippets will do.
Thanks to sammyF on #android for the second way, which is shorter but probably less of an official way to do it.
raw · 
copy
 · download
/* Way one */

android.os.Process.killProcess(android.os.Process.myPid())



/* Way Two */

System.exit(0);

Check if SD card is present

2 votes · 0 comments
Sometimes we need to know whether an SD card is present or not. So here is a check to see if an SD card is present. It returns true if the SD card is present and writable, false otherwise. first posted on anddev by MrSnowflake
raw · 
copy
 · download
public static boolean isSdPresent() {

    return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED);

}

Webview load from assets

1 vote · 0 comments
Load your website from assets folder and display it in WebView
raw · 
copy
 · download
public class ViewWeb extends Activity {

WebView webview;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.webview);



webview = (WebView) findViewById(R.id.webView1);

webview.loadUrl("file:///android_asset/index.html");

}

}

Get installed Applications with Name, Package Name, Version and Icon

9 votes · 10 comments
This helper function retrieves all installed apps with the application name, package name, version-number and -code as well as the icons. The method getPackages() returns an ArrayList with all the apps.
raw · 
copy
 · download
class PInfo {

    private String appname = "";

    private String pname = "";

    private String versionName = "";

    private int versionCode = 0;

    private Drawable icon;

    private void prettyPrint() {

        Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);

    }

}



private ArrayList<PInfo> getPackages() {

    ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */

    final int max = apps.size();

    for (int i=0; i<max; i++) {

        apps.get(i).prettyPrint();

    }

    return apps;

}



private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {

    ArrayList<PInfo> res = new ArrayList<PInfo>();        

    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);

    for(int i=0;i<packs.size();i++) {

        PackageInfo p = packs.get(i);

        if ((!getSysPackages) && (p.versionName == null)) {

            continue ;

        }

        PInfo newInfo = new PInfo();

        newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();

        newInfo.pname = p.packageName;

        newInfo.versionName = p.versionName;

        newInfo.versionCode = p.versionCode;

        newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());

        res.add(newInfo);

    }

    return res; 

}

Open URL in android

1 vote · 0 comments
To open the url in android
raw · 
copy
 · download
String url = "url"; 

Intent intent1 = new Intent(Intent.ACTION_VIEW);

intent1.setData(Uri.parse(url));

startActivity(intent1);

Non-Blocking Web-Request

8 votes · 11 comments
This code fetches content from the web without blocking the UI (runs in the background in a Thread). Once finished, it posts a Handler that is picked up by the UI as soon as possible.
raw · 
copy
 · download
import java.io.BufferedInputStream;

import java.io.InputStream;

import java.net.URL;

import java.net.URLConnection;

import org.apache.http.util.ByteArrayBuffer;



public class Iconic extends Activity {

    private String html = "";

    private Handler mHandler;



    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mHandler = new Handler();

        checkUpdate.start();

    }



    private Thread checkUpdate = new Thread() {

        public void run() {

            try {

                URL updateURL = new URL("http://iconic.4feets.com/update");

                URLConnection conn = updateURL.openConnection();

                InputStream is = conn.getInputStream();

                BufferedInputStream bis = new BufferedInputStream(is);

                ByteArrayBuffer baf = new ByteArrayBuffer(50);



                int current = 0;

                while((current = bis.read()) != -1){

                    baf.append((byte)current);

                }



                /* Convert the Bytes read to a String. */

                html = new String(baf.toByteArray());

                mHandler.post(showUpdate);

            } catch (Exception e) {

            }

        }

    };



    private Runnable showUpdate = new Runnable(){

        public void run(){

            Toast.makeText(Iconic.this, "HTML Code: " + html, Toast.LENGTH_SHORT).show();

        }

    };

}

Check for Updates Once a Day

5 votes · 19 comments
This code checks for updates of the Activity once a day and in the background. If an update (higher version than current) is found, it opens a Dialog and asks the user to open the market.
raw · 
copy
 · download
public class Test extends Activity {

    private Handler mHandler;



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.front);

        mHandler = new Handler();

        

        /* Get Last Update Time from Preferences */

        SharedPreferences prefs = getPreferences(0);

        lastUpdateTime =  prefs.getLong("lastUpdateTime", 0);

        

        /* Should Activity Check for Updates Now? */

        if ((lastUpdateTime + (24 * 60 * 60 * 1000)) < System.currentTimeMillis()) {



            /* Save current timestamp for next Check*/

            lastUpdateTime = System.currentTimeMillis();            

            SharedPreferences.Editor editor = getPreferences(0).edit();

            editor.putLong("lastUpdateTime", lastUpdateTime);

            editor.commit();        



            /* Start Update */            

            checkUpdate.start();

        }

    }

    

    /* This Thread checks for Updates in the Background */

    private Thread checkUpdate = new Thread() {

        public void run() {

            try {

                URL updateURL = new URL("http://my.company.com/update");                

                URLConnection conn = updateURL.openConnection(); 

                InputStream is = conn.getInputStream();

                BufferedInputStream bis = new BufferedInputStream(is);

                ByteArrayBuffer baf = new ByteArrayBuffer(50);

                

                int current = 0;

                while((current = bis.read()) != -1){

                     baf.append((byte)current);

                }



                /* Convert the Bytes read to a String. */

                final String s = new String(baf.toByteArray());         

                

                /* Get current Version Number */

                int curVersion = getPackageManager().getPackageInfo("your.app.id", 0).versionCode;

                int newVersion = Integer.valueOf(s);

                

                /* Is a higher version than the current already out? */

                if (newVersion > curVersion) {

                    /* Post a Handler for the UI to pick up and open the Dialog */

                    mHandler.post(showUpdate);

                }                

            } catch (Exception e) {

            }

        }

    };



    /* This Runnable creates a Dialog and asks the user to open the Market */ 

    private Runnable showUpdate = new Runnable(){

           public void run(){

            new AlertDialog.Builder(Test.this)

            .setIcon(R.drawable.icon)

            .setTitle("Update Available")

            .setMessage("An update for is available!\\n\\nOpen Android Market and see the details?")

            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int whichButton) {

                            /* User clicked OK so do some stuff */

                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:your.app.id"));

                            startActivity(intent);

                    }

            })

            .setNegativeButton("No", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int whichButton) {

                            /* User clicked Cancel */

                    }

            })

            .show();

           }

    };    

}

Gallery widget with remote Images

1 vote · 3 comments
This code-snippet loads the Gallery widget with remote images from a webserver. Found on anddev
raw · 
copy
 · download
/** == XML Layout ==

 *

 * <?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"

 *     >

 * <Gallery id="@+id/gallery"

 *         android:layout_width="fill_parent"

 *         android:layout_height="wrap_content"

 *         android:gravity="bottom"

 * />

 * </LinearLayout>

 *  

 */



package org.anddev.android.galleryexample;



import java.io.BufferedInputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.URL;

import java.net.URLConnection;



import android.app.Activity;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.Gallery;

import android.widget.ImageView;



public class GalleryExample extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        setContentView(R.layout.main);



        /* Find the gallery defined in the main.xml

         * Apply a new (custom) ImageAdapter to it. */

        ((Gallery) findViewById(R.id.gallery))

               .setAdapter(new ImageAdapter(this));

    }



    public class ImageAdapter extends BaseAdapter {

     /** The parent context */

        private Context myContext;



        /** URL-Strings to some remote images. */

        private String[] myRemoteImages = {

               "http://www.anddev.org/images/tiny_tutheaders/weather_forecast.png",

               "http://www.anddev.org/images/tiny_tutheaders/cellidtogeo.png",

               "http://www.anddev.org/images/tiny_tutheaders/droiddraw.png"

        };

       

        /** Simple Constructor saving the 'parent' context. */

        public ImageAdapter(Context c) { this.myContext = c; }



        /** Returns the amount of images we have defined. */

        public int getCount() { return this.myRemoteImages.length; }



        /* Use the array-Positions as unique IDs */

        public Object getItem(int position) { return position; }

        public long getItemId(int position) { return position; }



        /** Returns a new ImageView to

         * be displayed, depending on

         * the position passed. */

        public View getView(int position, View convertView, ViewGroup parent) {

            ImageView i = new ImageView(this.myContext);



            try {

                    /* Open a new URL and get the InputStream to load data from it. */

                    URL aURL = new URL(myRemoteImages[position]);

                    URLConnection conn = aURL.openConnection();

                    conn.connect();

                    InputStream is = conn.getInputStream();

                    /* Buffered is always good for a performance plus. */

                    BufferedInputStream bis = new BufferedInputStream(is);

                    /* Decode url-data to a bitmap. */

                    Bitmap bm = BitmapFactory.decodeStream(bis);

                    bis.close();

                    is.close();

                    /* Apply the Bitmap to the ImageView that will be returned. */

                    i.setImageBitmap(bm);

               } catch (IOException e) {

                    i.setImageResource(R.drawable.error);

                    Log.e("DEBUGTAG", "Remtoe Image Exception", e);

               }

           

            /* Image should be scaled as width/height are set. */

            i.setScaleType(ImageView.ScaleType.FIT_CENTER);

            /* Set the Width/Height of the ImageView. */

            i.setLayoutParams(new Gallery.LayoutParams(150, 150));

            return i;

        }



        /** Returns the size (0.0f to 1.0f) of the views

         * depending on the 'offset' to the center. */

        public float getScale(boolean focused, int offset) {

          /* Formula: 1 / (2 ^ offset) */

            return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));

        }

    }

}

Enable and Disable WiFi

2 votes · 0 comments
The WifiManager can be used to enable and disable wifi. Where 'enabled' is a boolean. Found on damonkohler.com
raw · 
copy
 · download
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

wifi.setWifiEnabled(enabled);

Network connectivity changes

1 vote · 0 comments
This snippets configures listening for connectivity events (wifi, 3g) on and off
raw · 
copy
 · download
//put this in your activity, service, or whatever



private BroadcastReceiver mConnReceiver = new BroadcastReceiver() {

        @Override

        public void onReceive(Context context, Intent intent) {



            boolean isWifiConnected = false;

            boolean isMobileConnected = false;



            ConnectivityManager connMgr = (ConnectivityManager) 

                    context.getSystemService(Context.CONNECTIVITY_SERVICE);



            NetworkInfo networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI);



            if(networkInfo != null)

            isWifiConnected = networkInfo.isConnected();



            networkInfo = connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);



            if(networkInfo != null)

            isMobileConnected = networkInfo.isConnected();      



            Log.d("network status", "wifi == " + isWifiConnected + " and mobile == " + isMobileConnected);



        }

    };



//registering the receiver from activity, service



registerReceiver(mConnReceiver, 

           new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION));



//or 



context.registerReceiver(mConnReceiver, 

           new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); //where context it's a Context class object





//manifest 



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

Sending SMS with SmsManager

1 vote · 0 comments
It's easy to send SMS Messages using the SmsManager
raw · 
copy
 · download
SmsManager m = SmsManager.getDefault();

String destination = "06761122334";

String text = "Hello, Jenny!";

m.sendTextMessage(destination, null, text, null, null);

Scan for Wireless Networks

1 vote · 2 comments
Scan for wireless networks in the current area. first posted on anddev by nas061000
raw · 
copy
 · download
package com.android.wifitester;



import java.util.List;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.net.wifi.ScanResult;

import android.net.wifi.WifiManager;

import android.os.Bundle;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.TextView;



public class WifiTester extends Activity {

    TextView mainText;

    WifiManager mainWifi;

    WifiReceiver receiverWifi;

    List<ScanResult> wifiList;

    StringBuilder sb = new StringBuilder();

    

    public void onCreate(Bundle savedInstanceState) {

       super.onCreate(savedInstanceState);

       setContentView(R.layout.main);

       mainText = (TextView) findViewById(R.id.mainText);

       mainWifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

       receiverWifi = new WifiReceiver();

       registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

       mainWifi.startScan();

       mainText.setText("\\nStarting Scan...\\n");

    }



    public boolean onCreateOptionsMenu(Menu menu) {

        menu.add(0, 0, 0, "Refresh");

        return super.onCreateOptionsMenu(menu);

    }



    public boolean onMenuItemSelected(int featureId, MenuItem item) {

        mainWifi.startScan();

        mainText.setText("Starting Scan");

        return super.onMenuItemSelected(featureId, item);

    }



    protected void onPause() {

        unregisterReceiver(receiverWifi);

        super.onPause();

    }



    protected void onResume() {

        registerReceiver(receiverWifi, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));

        super.onResume();

    }

    

    class WifiReceiver extends BroadcastReceiver {

        public void onReceive(Context c, Intent intent) {

            sb = new StringBuilder();

            wifiList = mainWifi.getScanResults();

            for(int i = 0; i < wifiList.size(); i++){

                sb.append(new Integer(i+1).toString() + ".");

                sb.append((wifiList.get(i)).toString());

                sb.append("\\n");

            }

            mainText.setText(sb);

        }

    }

}

Method for enable disable wifi

1 vote · 0 comments
Enable disable wifi with this method ;)
Add permission ;)
raw · 
copy
 · download
public boolean enableWIFI()

    {

        WifiManager wifiManager = (WifiManager) this.getSystemService(Context.WIFI_SERVICE);

        if(wifiManager.isWifiEnabled()){

            if(wifiManager.setWifiEnabled(false))

                return true;

          }else{

            if(wifiManager.setWifiEnabled(true))

                return true;

        }

        return false;

        

}

Get My Phone Number

2 votes · 3 comments
Gets the phone number the app is running on. It needs a permission so add the line uses-permission android:name="android.permission.READ_PHONE_STATE" to the manifest.xml
raw · 
copy
 · download
        private String getMyPhoneNumber(){

        TelephonyManager mTelephonyMgr;

        mTelephonyMgr = (TelephonyManager)

                getSystemService(Context.TELEPHONY_SERVICE); 

        return mTelephonyMgr.getLine1Number();

        }



        private String getMy10DigitPhoneNumber(){

                String s = getMyPhoneNumber();

                return s.substring(2);

        }

Change phone mode to silent, vibrate, normal

2 votes · 1 comment
This code will allow you to change your phone modes accordingly.
raw · 
copy
 · download
AudioManager am;

am= (AudioManager) getBaseContext().getSystemService(Context.AUDIO_SERVICE);



//For Normal mode

am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);



//For Silent mode

am.setRingerMode(AudioManager.RINGER_MODE_SILENT);



//For Vibrate mode

am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);

Open Wifi Settings

3 votes · 1 comment
Open wifi settings :)
raw · 
copy
 · download
                                final Intent intent = new Intent(Intent.ACTION_MAIN, null);

                                intent.addCategory(Intent.CATEGORY_LAUNCHER);

                                final ComponentName cn = new ComponentName("com.android.settings", "com.android.settings.wifi.WifiSettings");

                                intent.setComponent(cn);

                                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

                                startActivity( intent);

Enable and Disable WiFi

2 votes · 0 comments
The WifiManager can be used to enable and disable wifi. Where 'enabled' is a boolean. Found on damonkohler.com
raw · 
copy
 · download
WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);

wifi.setWifiEnabled(enabled);

Open mobile data setting

1 vote · 0 comments
Open mobile data settings
raw · 
copy
 · download
final  Intent intent=new Intent(Settings.ACTION_DATA_ROAMING_SETTINGS);

intent.addCategory(Intent.CATEGORY_LAUNCHER);

 final ComponentName cn = new ComponentName("com.android.phone","com.android.phone.Settings");

intent.setComponent(cn);

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

startActivity(intent);

Check airplane mode and roaming in current moment

2 votes · 0 comments
Check airplane mode and roaming in current moment.
raw · 
copy
 · download
// Get roaming state from telephony manager

public Boolean isRoaming(Context context) {

  TelephonyManager telephonyManager = 

      (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

  return telephonyManager.isNetworkRoaming();

}



// Get airplane mode state from system settings

public boolean isAirplaneMode(Context context) {

  int settingValue;

  try {

    settingValue = Settings.System.getInt(

        context.getContentResolver(), Settings.System.AIRPLANE_MODE_ON);

    return settingValue != 0;

  } catch (SettingNotFoundException e) {

    return false; 

  }

}

Check for Updates Once a Day

5 votes · 19 comments
This code checks for updates of the Activity once a day and in the background. If an update (higher version than current) is found, it opens a Dialog and asks the user to open the market.
raw · 
copy
 · download
public class Test extends Activity {

    private Handler mHandler;



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.front);

        mHandler = new Handler();

        

        /* Get Last Update Time from Preferences */

        SharedPreferences prefs = getPreferences(0);

        lastUpdateTime =  prefs.getLong("lastUpdateTime", 0);

        

        /* Should Activity Check for Updates Now? */

        if ((lastUpdateTime + (24 * 60 * 60 * 1000)) < System.currentTimeMillis()) {



            /* Save current timestamp for next Check*/

            lastUpdateTime = System.currentTimeMillis();            

            SharedPreferences.Editor editor = getPreferences(0).edit();

            editor.putLong("lastUpdateTime", lastUpdateTime);

            editor.commit();        



            /* Start Update */            

            checkUpdate.start();

        }

    }

    

    /* This Thread checks for Updates in the Background */

    private Thread checkUpdate = new Thread() {

        public void run() {

            try {

                URL updateURL = new URL("http://my.company.com/update");                

                URLConnection conn = updateURL.openConnection(); 

                InputStream is = conn.getInputStream();

                BufferedInputStream bis = new BufferedInputStream(is);

                ByteArrayBuffer baf = new ByteArrayBuffer(50);

                

                int current = 0;

                while((current = bis.read()) != -1){

                     baf.append((byte)current);

                }



                /* Convert the Bytes read to a String. */

                final String s = new String(baf.toByteArray());         

                

                /* Get current Version Number */

                int curVersion = getPackageManager().getPackageInfo("your.app.id", 0).versionCode;

                int newVersion = Integer.valueOf(s);

                

                /* Is a higher version than the current already out? */

                if (newVersion > curVersion) {

                    /* Post a Handler for the UI to pick up and open the Dialog */

                    mHandler.post(showUpdate);

                }                

            } catch (Exception e) {

            }

        }

    };



    /* This Runnable creates a Dialog and asks the user to open the Market */ 

    private Runnable showUpdate = new Runnable(){

           public void run(){

            new AlertDialog.Builder(Test.this)

            .setIcon(R.drawable.icon)

            .setTitle("Update Available")

            .setMessage("An update for is available!\\n\\nOpen Android Market and see the details?")

            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int whichButton) {

                            /* User clicked OK so do some stuff */

                            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=pname:your.app.id"));

                            startActivity(intent);

                    }

            })

            .setNegativeButton("No", new DialogInterface.OnClickListener() {

                    public void onClick(DialogInterface dialog, int whichButton) {

                            /* User clicked Cancel */

                    }

            })

            .show();

           }

    };    

}

Get installed Applications with Name, Package Name, Version and Icon

9 votes · 10 comments
This helper function retrieves all installed apps with the application name, package name, version-number and -code as well as the icons. The method getPackages() returns an ArrayList with all the apps.
raw · 
copy
 · download
class PInfo {

    private String appname = "";

    private String pname = "";

    private String versionName = "";

    private int versionCode = 0;

    private Drawable icon;

    private void prettyPrint() {

        Log.v(appname + "\t" + pname + "\t" + versionName + "\t" + versionCode);

    }

}



private ArrayList<PInfo> getPackages() {

    ArrayList<PInfo> apps = getInstalledApps(false); /* false = no system packages */

    final int max = apps.size();

    for (int i=0; i<max; i++) {

        apps.get(i).prettyPrint();

    }

    return apps;

}



private ArrayList<PInfo> getInstalledApps(boolean getSysPackages) {

    ArrayList<PInfo> res = new ArrayList<PInfo>();        

    List<PackageInfo> packs = getPackageManager().getInstalledPackages(0);

    for(int i=0;i<packs.size();i++) {

        PackageInfo p = packs.get(i);

        if ((!getSysPackages) && (p.versionName == null)) {

            continue ;

        }

        PInfo newInfo = new PInfo();

        newInfo.appname = p.applicationInfo.loadLabel(getPackageManager()).toString();

        newInfo.pname = p.packageName;

        newInfo.versionName = p.versionName;

        newInfo.versionCode = p.versionCode;

        newInfo.icon = p.applicationInfo.loadIcon(getPackageManager());

        res.add(newInfo);

    }

    return res; 

}

Getting the Type of File as String

1 vote · 2 comments
Get the Type of a File.
raw · 
copy
 · download
ContentResolver cR = context.getContentResolver();

MimeTypeMap mime = MimeTypeMap.getSingleton();

String type = mime.getExtensionFromMimeType(cR.getType(uri));

Open URL in android

1 vote · 0 comments
To open the url in android
raw · 
copy
 · download
String url = "url"; 

Intent intent1 = new Intent(Intent.ACTION_VIEW);

intent1.setData(Uri.parse(url));

startActivity(intent1);

WebView: Activate JavaScript and Open Links Inside

1 vote · 2 comments
This code activates JavaScript for a given WebView, and opens new link inside the WebBiew, not in the Browser.
raw · 
copy
 · download
public class WebViewTest extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);



        /* Set the Content View */

        setContentView(R.layout.main);

        

        /* Get the WebView */

        WebView wv1 = (WebView) findViewById(R.id.wv1);

        

        /* Activate JavaScript */

        wv1.getSettings().setJavaScriptEnabled(true);

        

        /* Prevent WebView from Opening the Browser */

        wv1.setWebViewClient(new InsideWebViewClient());

    }

    

    /* Class that prevents opening the Browser */

    private class InsideWebViewClient extends WebViewClient {

        @Override

        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            view.loadUrl(url);

            return true;

        }

    }

}

How to pass a dynamic URL to a Webview Activity

1 vote · 0 comments
I don't really know if this way is correct, but it's simple and works (:
raw · 
copy
 · download
// ActivityOne

@Override

public void onCreate(Bundle icicle) {

        super.onCreate(icicle);

        final Context context = this;

        // ...

        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,       long arg3) {

                Intent intent = new Intent(context, WebViewActivity.class);

                intent.setData(Uri.parse("http://www.androidsnippets.com"));

                startActivity(intent);

        }

        // ...

}



// WebViewActivity

@Override

public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.web_view); 

        webView = (WebView) findViewById(R.id.web_view);

        webView.getSettings().setJavaScriptEnabled(true);

        webView.loadUrl(this.getIntent().getDataString());

}

Open URL in android

1 vote · 0 comments
To open the url in android
raw · 
copy
 · download
String url = "url"; 

Intent intent1 = new Intent(Intent.ACTION_VIEW);

intent1.setData(Uri.parse(url));

startActivity(intent1);

WebView: Activate JavaScript and Open Links Inside

1 vote · 2 comments
This code activates JavaScript for a given WebView, and opens new link inside the WebBiew, not in the Browser.
raw · 
copy
 · download
public class WebViewTest extends Activity {

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);



        /* Set the Content View */

        setContentView(R.layout.main);

        

        /* Get the WebView */

        WebView wv1 = (WebView) findViewById(R.id.wv1);

        

        /* Activate JavaScript */

        wv1.getSettings().setJavaScriptEnabled(true);

        

        /* Prevent WebView from Opening the Browser */

        wv1.setWebViewClient(new InsideWebViewClient());

    }

    

    /* Class that prevents opening the Browser */

    private class InsideWebViewClient extends WebViewClient {

        @Override

        public boolean shouldOverrideUrlLoading(WebView view, String url) {

            view.loadUrl(url);

            return true;

        }

    }

}

Non-Blocking Web-Request

8 votes · 11 comments
This code fetches content from the web without blocking the UI (runs in the background in a Thread). Once finished, it posts a Handler that is picked up by the UI as soon as possible.
raw · 
copy
 · download
import java.io.BufferedInputStream;

import java.io.InputStream;

import java.net.URL;

import java.net.URLConnection;

import org.apache.http.util.ByteArrayBuffer;



public class Iconic extends Activity {

    private String html = "";

    private Handler mHandler;



    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        mHandler = new Handler();

        checkUpdate.start();

    }



    private Thread checkUpdate = new Thread() {

        public void run() {

            try {

                URL updateURL = new URL("http://iconic.4feets.com/update");

                URLConnection conn = updateURL.openConnection();

                InputStream is = conn.getInputStream();

                BufferedInputStream bis = new BufferedInputStream(is);

                ByteArrayBuffer baf = new ByteArrayBuffer(50);



                int current = 0;

                while((current = bis.read()) != -1){

                    baf.append((byte)current);

                }



                /* Convert the Bytes read to a String. */

                html = new String(baf.toByteArray());

                mHandler.post(showUpdate);

            } catch (Exception e) {

            }

        }

    };



    private Runnable showUpdate = new Runnable(){

        public void run(){

            Toast.makeText(Iconic.this, "HTML Code: " + html, Toast.LENGTH_SHORT).show();

        }

    };

}

Executing a HTTP POST Request with HttpClient

31 votes · 25 comments
This code executes a HTTP POST request with org.apache.http.client.HttpClient. Could be used in combination with "Non-Blocking Web Requests".
raw · 
copy
 · download
public void postData() {

    // Create a new HttpClient and Post Header

    HttpClient httpclient = new DefaultHttpClient();

    HttpPost httppost = new HttpPost("http://www.yoursite.com/script.php");



    try {

        // Add your data

        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

        nameValuePairs.add(new BasicNameValuePair("id", "12345"));

        nameValuePairs.add(new BasicNameValuePair("stringdata", "AndDev is Cool!"));

        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));



        // Execute HTTP Post Request

        HttpResponse response = httpclient.execute(httppost);

        

    } catch (ClientProtocolException e) {

        // TODO Auto-generated catch block

    } catch (IOException e) {

        // TODO Auto-generated catch block

    }

} 

Convenient messaging between threads

2 votes · 3 comments
The present snippet came up, when I struggled with messaging between different threads. The documentation for the event loop (Looper, Handler and HandlerThread) is not that clear, at least for me. The idea is to use a static thread-safe instance for emitting messages to other components even when they are running in different threads. You can use a simple addressing mechanism or safely broadcast your message to all subscribed components. This could be useful when you are dealing for example with a rendering thread, that needs to communicate with your state machine(s), which in turn needs to broadcast state changes (which was my case).
import android.os.Handler;

import android.os.HandlerThread;

import android.os.Message;

import android.os.Handler.Callback;

import android.util.Log;



/**

 * The transceiver provides a convenient way to decorate an instance with receive and transmit capabilities.

 * It can (and this is encouraged) be used with the {@link Broker} instance.

 * The naming thing is not part of the Transeiver's functionality, but may be useful while debugging.

 * This class can be used for subclassing or as a "has-a"-relation, as it is possible to set

 * an arbitrary {@link Callback } listener.

 *

 */

public class Transceiver {

        private String mName="Transceiver"; 

        private static int ID=0;

        

        private HandlerThread mHandlerThread;

        private Handler mHandler;

        

        // delegates the messages, when no proprietary callback 

        // is associated with the transeiver

        private class HandlerListener implements Callback{ 

                

                @Override

                public boolean handleMessage(Message msg) {

                        return Transceiver.this.handleMessage(msg);

                }

                

        }

        

        /**

         * Creates a transceiver with an automatically generated name

         */

        public Transceiver(){

                mName = new String("Transceiver(" + ++ID + ")");

                create(new HandlerListener());

        }

        

        /**

         * Creates a transceiver with arbitrary name

         * @param name

         */

        public Transceiver(String name){

                ++ID;

                mName = name;

                create(new HandlerListener() );

        }

        

        /**

         * Creates a transceiver with arbitrary name and an own listener

         * @param name a custom name

         * @param l your own listener

         */

        public Transceiver(String name, Callback l){

                ++ID;

                mName = name;

                create(l);

        }

        

        

        private void create(Callback l){

                mHandlerThread = new HandlerThread(getName());

                mHandlerThread.start();

                Log.d(mName, "Waiting for looper...");

                // we need to wait (blocking) to get the looper instance

                while(!mHandlerThread.isAlive()) {};  

                mHandler = new Handler(mHandlerThread.getLooper(), l);

                Log.d(mName, "Ready");

        }

        

        /**

         * @return The name of this transceiver

         */

        public final String getName() { return mName; }

        

        /** 

         * @return Its internal handler

         */

        public final Handler getHandler() { return mHandler; }



        /**

         * The callback method for received messages. You can override it, when deriving from Transceiver.

         * @param msg the message

         * @return true, if the message was handled.

         */

        public boolean handleMessage(Message msg) { return false; }

}



// ------------------------------- BROKER -----------------------------------------





import java.util.ArrayList;

import android.os.Handler;

import android.os.Message;





/**

 * The broker is a kind of repository for {@link Handler} instances. It provides a simple and very convenient mechanism to 

 * establish communication between different handlers. Just subscribe a handler instance and use the returned address with 

 * this Broker. This class is thread safe, of course.

 * Usage example:

 * <code>

 * this.MyCompAddr = Broker.instance.subscribe( new Handler() );

 * // or, when using transceiver

 * this.MyRendererAddr = Broker.instance.subscribe( new MyTransceiver("Renderer").getHandler() );

 * [...]

 * // how to send messages

 * Message m = Message.obtain();

 * m.what = 1; // could be an identifier or op-code or whatever you want

 * Bundle b= new Bundle(); // or use more complex (key,value)-pairs.

 * b.putString("data", "Any Data");

 * m.setData(b);

 * Broker.instance.post(this.MyRendererAddr, m);

 * </code>

 *

 */

public class Broker {

        

        /**

         * The static instance.

         */

        public static Broker instance=new Broker(); 

        private ArrayList<Handler> mHandler;

        

        private Broker()

        {

                mHandler = new ArrayList<Handler> ();

        }



        

        /**

         * Subscribe a handler, so you can send messages easily to it.

         * Mind there is no check for doubled subscription.

         * @param h The handler

         * @return The "address" for the handler

         * @see {@link unsubscribe() }

         */

        public synchronized int subscribe(Handler h){

                ArrayList<Handler> hl=mHandler;

                hl.add(h);

                return hl.size()-1;

        }

        

        /**

         * Unsubscribes a handler. Invalid addresses are ignored 

         * @param address

         */

        public synchronized void unsubscribe(int address){

                if(isAddressValid(address))

                        mHandler.remove(address);

        }

        

        protected synchronized final boolean isAddressValid(int address){

                ArrayList<Handler> h=mHandler;

                return (!h.isEmpty() && address >= 0 && address < h.size() );

        }

        

        /**

         * Post a message to addressed receiver.

         * @param address

         * @param m

         * @return true, if address exists, i.e. message could be delivered

         */

        public synchronized boolean post(int address, Message m){

                ArrayList<Handler> h=mHandler;

                if(!isAddressValid(address))

                        return false;

                

                h.get(address).sendMessage(Message.obtain(m));

                return true;

                

        }

        

        /**

         * Sends a message to all connected handler

         * @param m The message

         * @return The number of notified handler, e.g. send messages.

         */

        public synchronized int broadcast(Message m)    {

                ArrayList<Handler> h=mHandler;

                int n=h.size();

                for(int i=0; i<n; ++i)

                {

                        h.get(i).sendMessage(Message.obtain(m));                

                }               

                return n;

        }

}



// ------------------------------------------------------------------------------------

// Some implementation examples

// ------------------------------------------------------------------------------------



/**

* a place where I store my addresses.

* Read-only access to once set addresses is thread-safe!

*/ 

public class AddressPool {

        public static int Subsystem1,Subsystem2,MyActivity;

}



// ## extending Transceiver (is-a-relation) ##



public class Subsystem2 extends Transceiver {

        public final static String TAG="Subsystem2";

        public final static int WHAT = 3862; // a magic number

        

        public boolean handleMessage(Message m){

                

                switch(m.what){

                case Subsystem1.WHAT:

                        Log.i(TAG,"Received message from " + Subsystem1.TAG);

                        // attention: when answering we need a new message

                        Message msg= Message.obtain(m);

                        Broker.instance.post(AddressPool.Subsystem1, msg);

                        break;

                case MyActivity.WHAT:

                        Log.i(TAG,"Received message from " + MyActivity.TAG );

                        break;

                }

                return true;

        }

}





// ## wrapping/using Transceiver (has-a-relation) ##



package com.o1.android;



import java.util.Timer;

import java.util.TimerTask;



import com.o1.android.util.message.Broker;

import com.o1.android.util.message.Transceiver;



import android.os.Bundle;

import android.os.Handler;

import android.os.HandlerThread;

import android.os.Message;

import android.os.Handler.Callback;

import android.util.Log;



public class Subsystem1 extends TimerTask implements Callback{

        public final static String TAG="Subsystem1";

        public final static int WHAT = 175; // any identifier 

        private Transceiver mTransceiver;

        private int mMyAddress=-1;

        private Timer mTimer;

        

        public Subsystem1(){

                mTransceiver = new Transceiver(TAG, this);

                mTimer = new Timer("SubsystemTimer");

                

        }



        public void onStart(){

                mMyAddress = Broker.instance.subscribe(mTransceiver.getHandler());

                // we use a timer to asynchronously post messages

                mTimer.schedule(this, 0, 125);

        }

        

        public void onQuit(){

                mTimer.cancel();

                Broker.instance.unsubscribe(mMyAddress);

        }

        

        public final int getBrokerAddress() { return mMyAddress; }

                

        @Override

        public boolean handleMessage(Message m) {

                switch(m.what){

                case Subsystem2.WHAT:

                        Log.i(TAG,"Received message from " + Subsystem2.TAG);

                        break;

                case MyActivity.WHAT:

                        Log.i(TAG,"Received message from " + MyActivity.TAG);

                        break;

                }

                // immediate response/delegate with a copy of our message

                Broker.instance.post(AddressPool.MyActivity, Message.obtain(m)); 

                return true;

        }



        @Override

        public void run() {

                Message m= new Message();

                m.what=WHAT;            

                Broker.instance.post(AddressPool.MyActivity, m);  

        }

}





// ## connecting activities ##



public class MyActivity extends Activity implements Callback {



     private Subsystem1 mSubsystem1;

     //... other member fields



    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        /*

        * We have different types of transceiver implementations.

        * One as "has" (subsystem1) and the other as "is"-relation.  

        */

        mSubsystem1 = new Subsystem1();

        AddressPool.Subsystem2 = Broker.instance.subscribe(new Subsystem2().getHandler());

        // additionally, we can use activities (or other components with loopers)

        // mind that our activity implements Callback

        AddressPool.MyActivity = Broker.instance.subscribe(new Handler(this));

        // ... your stuff, e.g. a button that triggers messages



    } 



    @Override

    public void onStart(){

        super.onStart();

        mSubsystem1.onStart();

        AddressPool.Subsystem1 = mSubsystem1.getBrokerAddress();

    }



    @Override 

    public void onDestroy(){

        super.onDestroy();

        mSubsystem1.onQuit();

    }

    

        

    @Override

    public boolean handleMessage(Message msg) {

       // handle your messages here             

    }
 
http://www.androidsnippets.com/convenient-messaging-between-threads



Tidak ada komentar:

Posting Komentar