Selasa, 17 Januari 2017

Membuat Direction MultiPoint

package hu.pe.teguh.dkpp;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

import org.json.JSONArray;
import org.json.JSONObject;

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

import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v4.app.ActivityCompat;
import android.support.v4.app.FragmentActivity;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;

import hu.pe.teguh.dkpp.R;

public class MyDirection extends AppCompatActivity implements OnMapReadyCallback {
String[]arNama;
String[]arAlamat;
String[]arLati;
String[]arLongi;
int jhope=0;
String multipoint="";
private GoogleMap map;
ProgressDialog pDialog;
    List<LatLng> polyz;
    JSONArray array;
//http://maps.googleapis.com/maps/api/directions/json?origin=-6.354891,106.840940&destination=-6.330698,106.834229&sensor=false&mode=driving
String mylatitude="-6.346610";//18.4543467001058,-69.9294914999045
String mylongitude="106.730735";
String mylocation="-";
String nama="";
    double slat,slon;
   
    String mylatitude2="-6.3249106";
String mylongitude2="106.66045";
String mylocation2="-";
String nama2="-";

    double dlat,dlon;


class GetDirection extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MyDirection.this);
pDialog.setMessage("Loading route. Please wait...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}

protected String doInBackground(String... args) {
//https://www.google.co.id/maps/dir/-6.354891,+106.840940/-6.330698,+106.834229/@-6.3437727,106.8268826,15z/data=!3m1!4b1!4m10!4m9!1m3!2m2!1d106.84094!2d-6.354891!1m3!2m2!1d106.834229!2d-6.330698!3e0
//String stringUrl = "http://maps.googleapis.com/maps/api/directions/json?origin="+mylatitude+","+mylongitude+"&destination="+mylatitude+","+mylongitude+"&sensor=false&mode=driving";
//String stringUrl="http://maps.googleapis.com/maps/api/directions/json?origin=18.4543467001058,-69.9294914999045&destination=18.4804850999499,-69.932457299903&sensor=false&waypoints=18.4543467001058,-69.9294914999045|18.4543467001058,-69.9294914999045|18.4779706000118,-69.9026079000905|18.4794135999982,-69.8832237999886|";
//https://www.google.com/maps/dir"+mylatitude+",+"+mylongitude+"/"+mylatitude2+",+"+mylongitude2+"/@-6.3416659,106.8247612,15z/data=!4m9!4m8!1m3!2m2!1d106.831815!2d-6.351856!1m3!2m2!1d106.834229!2d-6.330698";

String stringUrl="http://maps.googleapis.com/maps/api/directions/json?origin="+slat+","+slon+"&destination="+dlat+","+dlon+"&sensor=false&waypoints="+multipoint;
Log.v("Multipoint",multipoint);
Log.v("stringUrl",stringUrl);
StringBuilder response = new StringBuilder();
try {
URL url = new URL(stringUrl);
HttpURLConnection httpconn = (HttpURLConnection) url.openConnection();
if (httpconn.getResponseCode() == HttpURLConnection.HTTP_OK) {
BufferedReader input = new BufferedReader(new InputStreamReader(httpconn.getInputStream()),8192);
String strLine = null;
while ((strLine = input.readLine()) != null) {
response.append(strLine);
}
input.close();
}

String jsonOutput = response.toString();
JSONObject jsonObject = new JSONObject(jsonOutput);
JSONArray routesArray = jsonObject.getJSONArray("routes");
JSONObject route = routesArray.getJSONObject(0);

JSONObject poly = route.getJSONObject("overview_polyline");
String polyline = poly.getString("points");
polyz = decodePoly(polyline);
} catch (Exception e) {}
return null;
}
protected void onPostExecute(String file_url) {
for (int i = 0; i < polyz.size() - 1; i++) {
LatLng src = polyz.get(i);
LatLng dest = polyz.get(i + 1);
Polyline line = map.addPolyline(new PolylineOptions()
.add(new LatLng(src.latitude, src.longitude), new LatLng(dest.latitude, dest.longitude))
.width(9).color(Color.rgb(0,0,255)).geodesic(true));
}
pDialog.dismiss();
}
}

/* Method to decode polyline points */
private List<LatLng> decodePoly(String encoded) {
List<LatLng> poly = new ArrayList<LatLng>();
int index = 0, len = encoded.length();
int lat = 0, lng = 0;

while (index < len) {
int b, shift = 0, result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlat = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lat += dlat;

shift = 0;
result = 0;
do {
b = encoded.charAt(index++) - 63;
result |= (b & 0x1f) << shift;
shift += 5;
} while (b >= 0x20);
int dlng = ((result & 1) != 0 ? ~(result >> 1) : (result >> 1));
lng += dlng;

LatLng p = new LatLng((((double) lat / 1E5)), (((double) lng / 1E5)));
poly.add(p);
}
return poly;
}
   
    @SuppressLint("NewApi")
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mydirection);

//  gab=myLokasi2+"#"+myAlamat2+"#"+myLati2+"#"+myLongi2+"#@";
Intent call = this.getIntent();
String gab=call.getStringExtra("gab");
Log.v("GAB",gab);
String[]ar=gab.split("@");
jhope=ar.length;
if(jhope<2){Log.v("AR","AR Kurang");finish();}

arNama=new String[jhope];
arAlamat=new String[jhope];
arLati=new String[jhope];
arLongi=new String[jhope];

for(int j=0;j<jhope;j++){
String []mdata=ar[j].split("#");
if(mdata.length<3){
Log.v("MDATA","Mdata Kurang");finish();}
else {
arNama[j] = mdata[0];
arAlamat[j] = mdata[1];
arLati[j] = mdata[2];
arLongi[j] = mdata[3];
}
}
slat=Double.parseDouble(mylatitude);;
        slon=Double.parseDouble(mylongitude);
        try{
        slat=Double.parseDouble(arLati[0]);
        slon=Double.parseDouble(arLongi[0]);
mylocation=arAlamat[0];
nama=arNama[0];
        }
        catch(Exception e){}

dlat=Double.parseDouble(mylatitude2);;
dlon=Double.parseDouble(mylongitude2);
try{
dlat=Double.parseDouble(arLati[jhope-1]);
dlon=Double.parseDouble(arLongi[jhope-1]);
mylocation2=arNama[jhope-1]+","+arAlamat[jhope-1];
nama2=arNama[jhope-1];
}
catch(Exception e){}

SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
mapFragment.getMapAsync(this);


}

@Override
public void onMapReady(GoogleMap googleMap) {
multipoint="";
map = googleMap;
if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
// TODO: Consider calling
//    ActivityCompat#requestPermissions
// here to request the missing permissions, and then overriding
//   public void onRequestPermissionsResult(int requestCode, String[] permissions,
//                                          int[] grantResults)
// to handle the case where the user grants the permission. See the documentation
// for ActivityCompat#requestPermissions for more details.
return;
}

map.setMyLocationEnabled(true);

map.setMapType(GoogleMap.MAP_TYPE_TERRAIN);

map.getUiSettings().setZoomControlsEnabled(true);
map.getUiSettings().setCompassEnabled(true);
map.getUiSettings().setMyLocationButtonEnabled(true);

map.getUiSettings().setAllGesturesEnabled(true);

//map.setTrafficEnabled(true);
map.addMarker(new MarkerOptions().position(new LatLng(slat, slon)).title("Posisi Anda:"+nama).snippet(mylocation));
for(int j=1;j<jhope-1;j++) {
double mslat=Double.parseDouble(mylatitude);;
double mslon=Double.parseDouble(mylongitude);
String mmylocation="-";
String mnama="-";
//18.4543467001058,-69.9294914999045|18.4543467001058,-69.9294914999045|18.4779706000118,-69.9026079000905|18.4794135999982,-69.8832237999886|
try{
mslat=Double.parseDouble(arLati[j]);
mslon=Double.parseDouble(arLongi[j]);
mmylocation=arAlamat[j];
mnama=arNama[j];
multipoint+=arLati[j]+","+arLongi[j]+"|";
}
catch(Exception e){}

map.addMarker(new MarkerOptions().position(new LatLng(mslat, mslon)).title(mnama).snippet(mmylocation));
}
map.addMarker(new MarkerOptions().position(new LatLng(dlat, dlon)).title("Tujuan: "+nama2).snippet(mylocation2+"\nKoordinat:"+mylatitude2+","+mylongitude2));


map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(slat, slon),13));
map.animateCamera(CameraUpdateFactory.zoomTo(13), 2000, null);
new GetDirection().execute();

}

}
++++++++

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="hu.pe.teguh.dkpp.MyDirection">
   
    <fragment
        android:id="@+id/map"
          android:layout_width="match_parent"
          android:layout_height="match_parent"
          android:name="com.google.android.gms.maps.SupportMapFragment"/>
       
</RelativeLayout>




Jumat, 23 Desember 2016

Android Code getRandom Unique and Range


int[]arRandom ;
jumsoal=10;

 void bacaRandom(){
     arRandom = uniqueRandomArray(jumsoal);
        for(int i = 0; i<jd; i++){
            Log.v("R",i+"."+arRandom[i]);
        }
    }
   
    public static int[] uniqueRandomArray(int n){
        int [] A = new int[n];
        for(int i = 0; i< A.length; ){
            if(i == A.length){
                break;
            }
            int b = (int)(Math.random() *n) + 1;
            if(f(A,b) == false){
                A[i++] = b;
            }
        }
        return A;
    }
    public static boolean f(int[] A, int n){
        for(int i=0; i<A.length; i++){
            if(A[i] == n){
                return true;
            }
        }
        return false;
    }

Android Code Soal-Soal

package com.example.soalsoal;


import java.io.InputStream;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;

import com.example.soalsoal.driver.XMLParser;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;

import android.content.res.Resources;
import android.content.res.Resources.NotFoundException;
import android.text.Html;
import android.text.TextUtils;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.Intent;
import android.graphics.drawable.Drawable;

public class soalsoal extends Activity {
RadioButton radA,radB,radC,radD;
String sNama="Fulan",sUsia="xx",sJK="Laki-laki",sCatatan="";
int ke=0,jumsoal=2,jumBenar=0;
int jd;
String[]arr_idsoal;
String[]arr_pertanyaan;
String[]arr_jawabA;
String[]arr_jawabB;
String[]arr_jawabC;
String[]arr_jawabD;
String[]arr_jawabBenar;
String[]arr_gambar;

static final String KEY_record = "soal";
public static final String KEY_pertanyaan = "pertanyaan";
public static final String KEY_jawabA = "jawabA";
public static final String KEY_jawabB = "jawabB";
public static final String KEY_jawabC = "jawabC";
public static final String KEY_jawabD = "jawabD";
public static final String KEY_jawabBenar = "jawabBenar";
public static final String KEY_gambar = "gambar";
public static final String KEY_idsoal = "idsoal";

ImageView imgGambar;
TextView txtTanya,txtTanyake;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.aplikasi);
     
        Intent i = this.getIntent();
        sNama=i.getStringExtra("nama");
        sUsia=i.getStringExtra("usia");
        sJK=i.getStringExtra("jk");
     
        callMarquee();
        callData();
       
        txtTanya= (TextView) findViewById(R.id.txtTanya);
        txtTanyake= (TextView) findViewById(R.id.txtTanyaKe);
        imgGambar= (ImageView) findViewById(R.id.myGambar);

     
        radA= (RadioButton) findViewById(R.id.radA);
        radA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cekJawaban("A");
ke=ke+1;
if(ke>=jumsoal){selesai();}
else{lihat();}
}
});

        radB= (RadioButton) findViewById(R.id.radB);
        radB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cekJawaban("B");
ke=ke+1;
if(ke>=jumsoal){selesai();}
else{lihat();}
}
});
        radC= (RadioButton) findViewById(R.id.radC);
        radC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cekJawaban("C");
ke=ke+1;
if(ke>=jumsoal){selesai();}
else{lihat();}
}
});
        radD= (RadioButton) findViewById(R.id.radD);
        radD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
cekJawaban("D");
ke=ke+1;
if(ke>=jumsoal){selesai();}
else{lihat();}
}
});
        lihat();
    }
 
void cekJawaban(String pil){
if(arr_jawabBenar[ke].equals(pil)){
jumBenar=jumBenar+1;
sCatatan=sCatatan+"Soal ke-"+(ke+1)+" Benar\n";
Toast.makeText(getBaseContext()," Pilihan Anda "+pil+" : Benar!", Toast.LENGTH_LONG).show();
}
else{
sCatatan=sCatatan+"Soal ke-"+(ke+1)+" Salah\n";
Toast.makeText(getBaseContext()," Pilihan Anda "+pil+" : Salah!", Toast.LENGTH_LONG).show();
}
}  

void lihat(){  
    radA.setChecked(false);
    radB.setChecked(false);
    radC.setChecked(false);
    radD.setChecked(false);
    int ike=ke;
    txtTanya.setText((ke+1)+"."+arr_pertanyaan[ike]);
    radA.setText(arr_jawabA[ike]);
    radB.setText(arr_jawabB[ike]);
    radC.setText(arr_jawabC[ike]);
    radD.setText(arr_jawabD[ike]);
    txtTanyake.setText("Pertanyaan ke "+(ke+1) +" dari "+jumsoal+" pertanyaan !");
//     imgGambar.setImageResource(arGambar[ike]);
        String uri = null;
        int imageResource = R.drawable.no_image;
     
        uri="drawable/"+arr_gambar[ike];
        Drawable image = null;
        try {
            imageResource=getResources().getIdentifier(uri, null, getPackageName());
            image=getResources().getDrawable(imageResource);
} catch (NotFoundException e) {
uri = "drawable/no_image";
imageResource = getResources().getIdentifier(uri, null, getPackageName());
image=getResources().getDrawable(imageResource);
e.printStackTrace();
}
        imgGambar.setImageDrawable(image);
    }

    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 void selesai(){
    new AlertDialog.Builder(this)
.setTitle("Hasil QUIZ")
.setMessage("Yth: "+sNama+"\nUsia:"+sUsia+" thn\nSkor anda : "+jumBenar+" Point")
.setNeutralButton("INFO SKOR", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dlg, int sumthin) {
finish();
Intent put= new Intent(getBaseContext(), hasil.class);
put.putExtra("nama", sNama);
put.putExtra("usia", sUsia);
put.putExtra("jk", sJK);
put.putExtra("nilai", String.valueOf(jumBenar));
put.putExtra("catatan", sCatatan);
startActivity(put);
}})
.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(soalsoal.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 callData(){
    ArrayList<HashMap<String, String>> recordsList = new ArrayList<HashMap<String, String>>();
XMLParser parser = new XMLParser();
String xml=null;


InputStream in_s=null;
try {
Resources res = getResources();
      in_s = res.openRawResource(R.raw.xml_soal);
      byte[] b = new byte[in_s.available()];
      in_s.read(b);
      xml=new String(b);
      }
catch (Exception e) {xml=null;}

/*
Utils ip=new Utils();
String myip=ip.getIP();
String URL = myip+"produk/xml_produk.php";
xml = parser.getXmlFromUrl(URL);
*/

Document doc = parser.getDomElement(xml);
NodeList nl = doc.getElementsByTagName(KEY_record);
jd=nl.getLength();
arr_idsoal=new String[jd];
arr_pertanyaan=new String[jd];
arr_jawabA=new String[jd];
arr_jawabB=new String[jd];
arr_jawabC=new String[jd];
arr_jawabD=new String[jd];
arr_jawabBenar=new String[jd];
arr_gambar=new String[jd];

for (int j = 0; j < jd; j++) {
HashMap<String, String> map = new HashMap<String, String>();
Element e = (Element) nl.item(j);
String l_idsoal=parser.getValue(e, KEY_idsoal);if(l_idsoal.length()<1){l_idsoal="-";}arr_idsoal[j]=l_idsoal;
String l_pertanyaan=parser.getValue(e, KEY_pertanyaan);if(l_pertanyaan.length()<1){l_pertanyaan="-";}arr_pertanyaan[j]=l_pertanyaan;
String l_jawabA=parser.getValue(e, KEY_jawabA);if(l_jawabA.length()<1){l_jawabA="-";}arr_jawabA[j]=l_jawabA;
String l_jawabB=parser.getValue(e, KEY_jawabB);if(l_jawabB.length()<1){l_jawabB="-";}arr_jawabB[j]=l_jawabB;
String l_jawabC=parser.getValue(e, KEY_jawabC);if(l_jawabC.length()<1){l_jawabC="-";}arr_jawabC[j]=l_jawabC;
String l_jawabD=parser.getValue(e, KEY_jawabD);if(l_jawabD.length()<1){l_jawabD="-";}arr_jawabD[j]=l_jawabD;
String l_jawabBenar=parser.getValue(e, KEY_jawabBenar);if(l_jawabBenar.length()<1){l_jawabBenar="-";}arr_jawabBenar[j]=l_jawabBenar;
String l_gambar=parser.getValue(e, KEY_gambar);if(l_gambar.length()<1){l_gambar="-";}arr_gambar[j]=l_gambar;

map.put(KEY_idsoal, l_idsoal);
map.put(KEY_pertanyaan, l_pertanyaan);
map.put(KEY_jawabA, l_jawabA);
map.put(KEY_jawabB, l_jawabB);
map.put(KEY_jawabC, l_jawabC);
map.put(KEY_jawabD, l_jawabD);
map.put(KEY_jawabBenar, l_jawabBenar);
map.put(KEY_gambar, l_gambar);
recordsList.add(map);
}
    }
}

====================
aplikasi.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">

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">
    
<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>
</TableRow>  

<TableRow android:id="@+id/TableRow04" android:layout_width="wrap_content" android:layout_height="wrap_content">
    <ImageView 
   android:id="@+id/myGambar" android:layout_centerHorizontal="true"
   android:src="@drawable/user"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   />
</TableRow>
    
<TableRow android:id="@+id/TableRow00" android:layout_width="wrap_content" android:layout_height="wrap_content">
      <TextView
        android:id="@+id/txtTanya"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="1.Apakah Anda mengalami gejala Pusing2" />
</TableRow>    


<RadioGroup 
android:id="@+id/RadioGroup01" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content">
<RadioButton android:text="A. Pilihan A" 
android:id="@+id/radA" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content"
android:textColor="#000">
</RadioButton>
<RadioButton android:text="B. Pilihan B" 
android:id="@+id/radB" 
android:layout_width="wrap_content" 
android:textColor="#000" 
android:layout_height="wrap_content">
</RadioButton>
<RadioButton android:text="C. Pilihan C" 
android:id="@+id/radC" 
android:layout_width="wrap_content" 
android:textColor="#000" 
android:layout_height="wrap_content">
</RadioButton>
<RadioButton android:text="D. Pilihan D" 
android:id="@+id/radD" 
android:layout_width="wrap_content" 
android:textColor="#000" 
android:layout_height="wrap_content">
</RadioButton>
</RadioGroup>

<TableRow android:id="@+id/TableRow02" android:layout_width="wrap_content" android:layout_height="wrap_content">
      <TextView
        android:id="@+id/txtTanyaKe"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Pertanyaan ke-1" />
</TableRow>    

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


+++++
Soal Angka + Timer
package com.example.app_tpa;

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

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.os.Handler.Callback;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.Intent;
import android.view.Menu;

import android.view.View;
import android.widget.ImageView;
import android.widget.RadioButton;
import android.widget.TextView;
import android.widget.Toast;

public class soal_angka extends Activity {
String sNama="Fulan",sUsia="xx",sJK="Laki-laki",sCatatan="";
 long starttime = 0;
   Timer timer = new Timer();
int jd=0;
String[]arTanya;
String[]arA;
String[]arB;
String[]arC;
String[]arD;
String[]arE;
String[]arBenar;
int ke=0;
int jumbenar=0;
String record="";

TextView txtTanya,txtTanyaKe,txtTimer;
RadioButton radA,radB,radC,radD,radE;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.soal_angka);
  Intent i = this.getIntent();
       sNama=i.getStringExtra("nama");
       sUsia=i.getStringExtra("usia");
       sJK=i.getStringExtra("jk");
     
callSoal();

txtTanya=(TextView)findViewById(R.id.txtTanya);
txtTanyaKe=(TextView)findViewById(R.id.txtTanyaKe);
txtTimer=(TextView)findViewById(R.id.txtTimer);

radA=(RadioButton)findViewById(R.id.radA);
radA.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(soal_angka.this, "Anda memilih A",Toast.LENGTH_LONG).show();
if(arBenar[ke].equalsIgnoreCase("A")){record=record+"Soal No. "+(ke+1)+" Jawaban Anda A: Benar\n";jumbenar=jumbenar+1;}
else{record=record+"Soal No. "+(ke+1)+" Jawaban Anda A: Salah\n";}

ke=ke+1;
lihat();
}});  
radB=(RadioButton)findViewById(R.id.radB);
radB.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(soal_angka.this, "Anda memilih B",Toast.LENGTH_LONG).show();
if(arBenar[ke].equalsIgnoreCase("A")){record=record+"Soal No. "+(ke+1)+" Jawaban Anda B: Benar\n";jumbenar=jumbenar+1;}
else{record=record+"Soal No. "+(ke+1)+" Jawaban Anda B: Salah\n";}

ke=ke+1;
lihat();
}});  
radC=(RadioButton)findViewById(R.id.radC);
radC.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(soal_angka.this, "Anda memilih C",Toast.LENGTH_LONG).show();
if(arBenar[ke].equalsIgnoreCase("A")){record=record+"Soal No. "+(ke+1)+" Jawaban Anda C: Benar\n";jumbenar=jumbenar+1;}
else{record=record+"Soal No. "+(ke+1)+" Jawaban Anda C: Salah\n";}

ke=ke+1;
lihat();
}});  
radD=(RadioButton)findViewById(R.id.radD);
radD.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(soal_angka.this, "Anda memilih D",Toast.LENGTH_LONG).show();
if(arBenar[ke].equalsIgnoreCase("A")){record=record+"Soal No. "+(ke+1)+" Jawaban Anda D: Benar\n";jumbenar=jumbenar+1;}
else{record=record+"Soal No. "+(ke+1)+" Jawaban Anda D: Salah\n";}

ke=ke+1;
lihat();
}});  
radE=(RadioButton)findViewById(R.id.radE);
radE.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View arg0) {
Toast.makeText(soal_angka.this, "Anda memilih E",Toast.LENGTH_LONG).show();
if(arBenar[ke].equalsIgnoreCase("A")){record=record+"Soal No. "+(ke+1)+" Jawaban Anda E: Benar\n";jumbenar=jumbenar+1;}
else{record=record+"Soal No. "+(ke+1)+" Jawaban Anda E: Salah\n";}

ke=ke+1;
lihat();
}});  
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);
}
    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();
    }
   
void lihat(){
if(ke>=jd){selesai();}
else{
txtTanya.setText("   No."+(ke+1)+"    "+arTanya[ke]);
radA.setText(arA[ke]);
radB.setText(arB[ke]);
radC.setText(arC[ke]);
radD.setText(arD[ke]);
radE.setText(arE[ke]);
txtTanyaKe.setText("    Pertanyaan ke "+(ke+1)+" dari "+jd +" pertanyaan ");
}
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

void callSoal(){
jd=20;
arTanya=new String[jd];
arA=new String[jd];
arB=new String[jd];
arC=new String[jd];
arD=new String[jd];
arE=new String[jd];
arBenar=new String[jd];

arTanya[0]="19 adalah berapa persennya dari 380 ?";
arA[0]="0,5%";
arB[0]="5%";
arC[0]="0,05%";
arD[0]="0,15%";
arE[0]="5,5%";
arBenar[0]="B";

arTanya[1]="8,0049 : 0,0015";
arA[1]="5336,6";
arB[1]="533,66";
arC[1]="53,366";
arD[1]="53366";
arE[1]="533,55";
arBenar[1]="A";

arTanya[2]="0,012 : 3";
arA[2]="0,04";
arB[2]="0,0004";
arC[2]="0,4";
arD[2]="0,040";
arE[2]="0,0040";
arBenar[2]="E";

arTanya[3]="Seri Angka : 75 97 60 92 45 selanjutnya ....";
arA[3]="87";
arB[3]="78";
arC[3]="102";
arD[3]="75";
arE[3]="54";
arBenar[3]="E";

arTanya[4]="32/9 : 0,75";
arA[4]="6/16";
arB[4]="3";
arC[4]="3,5";
arD[4]="29";
arE[4]="16/6";
arBenar[4]="";

arTanya[5]="0,875 : 5/2";
arA[5]="0,35";
arB[5]="0,55";
arC[5]="0,53";
arD[5]="0,25";
arE[5]="2,65";
arBenar[5]="";

arTanya[6]="0,31 x 0,31";
arA[6]="0,0691";
arB[6]="0,0661";
arC[6]="0,0991";
arD[6]="0,0971";
arE[6]="0,0961";
arBenar[6]="";

arTanya[7]="3/8 dari 40% adalah ?";
arA[7]="0,15";
arB[7]="0,11";
arC[7]="16%";
arD[7]="15,5%";
arE[7]="0,13";
arBenar[7]="";

arTanya[8]="54 adalah 27% dari ?";
arA[8]="190";
arB[8]="210";
arC[8]="200";
arD[8]="300";
arE[8]="127";
arBenar[8]="";

arTanya[9]="2,00486 x 0,5";
arA[9]="1,000243";
arB[9]="1,00243";
arC[9]="1,0243";
arD[9]="1,00234";
arE[9]="1,00253";
arBenar[9]="";

arTanya[10]="Seri angka 75 97 60 92 45 selanjutnya ";
arA[10]="87";
arB[10]="78";
arC[10]="102";
arD[10]="75";
arE[10]="54";
arBenar[10]="";

arTanya[11]="Seri angka 17 21 23 27 selanjutnya ";
arA[11]="31";
arB[11]="33";
arC[11]="32";
arD[11]="29";
arE[11]="25";
arBenar[11]="";

arTanya[12]="Seri angka 1 5 9 2 6 10 3 selanjutnya ";
arA[12]="6-11-4";
arB[12]="7-11-4";
arC[12]="7-12-5";
arD[12]="6-12-3";
arE[12]="8-11-5";
arBenar[12]="";

arTanya[13]="Seri angka -4 -3 0 5 12 selanjutnya ";
arA[13]="21";
arB[13]="19";
arC[13]="17";
arD[13]="15";
arE[13]="23";
arBenar[13]="";

arTanya[14]="Seri angka 22 26 23 27 24 selanjutnya ";
arA[14]="26";
arB[14]="27";
arC[14]="28";
arD[14]="31";
arE[14]="22";
arBenar[14]="";

arTanya[15]="Seri angka 3 8 15 20 27 selanjutnya ";
arA[15]="30";
arB[15]="33";
arC[15]="35";
arD[15]="34";
arE[15]="32";
arBenar[15]="";

arTanya[16]="Seri huruf e h a j m b selanjutnya ";
arA[16]="p s";
arB[16]="p t";
arC[16]="o q";
arD[16]="o r";
arE[16]="o s";
arBenar[16]="";

arTanya[17]="Seri huruf z v r selanjutnya ";
arA[17]="m";
arB[17]="o";
arC[17]="t";
arD[17]="l";
arE[17]="n";
arBenar[17]="";

arTanya[18]="Seri huruf a c f j o selanjutnya ";
arA[18]="p";
arB[18]="t";
arC[18]="v";
arD[18]="u";
arE[18]="z";
arBenar[18]="";

arTanya[19]="Seri huruf c i o selanjutnya ";
arA[19]="t";
arB[19]="v";
arC[19]="u";
arD[19]="w";
arE[19]="h";
arBenar[19]="";


}
}



Android Code InputNama

<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>


package com.lp2maray.com.soalsoal;

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;
    }
    String getTime(){
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);
String gb=stgl+", "+sjam +" WIB";
return gb;
}
}