Tutorial Aplikasi Networking : Membuat Aplikasi Cuaca Terkini dengan API menggunakan Eclipse
Posted by A Bee Gaming at 22.20
Aplikasi networking adalah aplikasi yang lebih
menekankan pada transfer data dari server menuju client. Salah satunya
adalah dengan cara kita menggunakan API dari penyedia layanan untuk
mengirim data dari penyedia layanan tersebut menuju aplikasi kita.
Pada
kesempatan kali ini saya akan membuat aplikasi untuk melihat cuaca
terkini dari suatu kota di dunia dengan menggunakan API dari Open
Weather. Langkah – langkahnya sebagai berikut :
- Buat project baru. Klik tombol File > New > Android Application Project
- Selanjutnya beri nama project anda dengan nama AplikasiCuaca dan atur minimum, target, compile serta tema dari tipe android yang akan anda pakai nantinya. Jika selesai klik tombol Lakukan konfigurasi sesui keinginan anda, terus klik Next hingga terbentuk sebuah project.
- Masukkan gambar berikut pada package explorer > AplikasiCuaca > res > drawable
- Edit activity_main.xml pada package explorer > AplikasiCuaca > res > layout dan masukkan kode berikut
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:background="@drawable/background"
tools:context=".MainActivity" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginTop="35dp"
android:text=""
android:textAppearance="?android:attr/textAppearanceMedium" />
<EditText
android:id="@+id/lokasi"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBottom="@+id/textView1"
android:layout_alignParentRight="true"
android:hint="Inputkan Lokasi"
android:ems="10" />
<requestFocus />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:layout_marginTop="68dp"
android:text="@string/country"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_marginTop="19dp"
android:text="@string/temperature"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView3"
android:layout_below="@+id/textView3"
android:layout_marginTop="32dp"
android:text="@string/humidity"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:id="@+id/textView5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/textView4"
android:layout_below="@+id/textView4"
android:layout_marginTop="21dp"
android:text="@string/pressure"
android:textAppearance="?android:attr/textAppearanceSmall" />
<EditText
android:id="@+id/suhu"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView3"
android:layout_alignBottom="@+id/textView3"
android:layout_alignLeft="@+id/negara"
android:ems="10" />
<EditText
android:id="@+id/kelembapan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_above="@+id/textView5"
android:layout_alignLeft="@+id/lokasi"
android:ems="10" />
<Button
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/negara"
android:layout_below="@+id/lokasi"
android:onClick="open"
android:text="@string/weather"/>
<ImageView
android:id="@+id/gambarCuaca"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:adjustViewBounds="false"
android:src="@drawable/clear" />
<EditText
android:id="@+id/negara"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView2"
android:layout_alignBottom="@+id/textView2"
android:layout_alignLeft="@+id/kelembapan"
android:ems="10" />
<EditText
android:id="@+id/tekanan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignBaseline="@+id/textView5"
android:layout_alignBottom="@+id/textView5"
android:layout_alignLeft="@+id/kelembapan"
android:ems="10" />
<TextView
android:id="@+id/Jam"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="85dp"
android:text="01/01/2014 00:00:00 AM" />
</RelativeLayout>
- Buatlah pada file HandleJSON.java di package explorer > src > namapackage dan masukkan kode berikut
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.StringWriter;
import java.io.UnsupportedEncodingException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONObject;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserFactory;
import android.annotation.SuppressLint;
public class HandleJSON {
private String country = "country";
private Integer temperature = 0;
private String humidity = "humidity";
private String pressure = "pressure";
private String urlString = "null";
private String icon = "icon";
private String description ="description";
//private int suhu;
public volatile boolean parsingComplete = true;
public HandleJSON(String url){
this.urlString = url;
}
public String getCountry(){
return country;
}
public Integer getTemperature(){
temperature = temperature -273;
return temperature;
}
public String getHumidity(){
return humidity;
}
public String getPressure(){
return pressure;
}
public String getIcon(){
return icon;
}
public String getDescription(){
return description;
}
public void readAndParseJSON(String in){
try{
JSONObject reader = new JSONObject(in);
JSONObject sys = reader.getJSONObject("sys");
country = sys.getString("country");
JSONObject main = reader.getJSONObject("main");
temperature = main.getInt("temp");
pressure = main.getString("pressure");
humidity = main.getString("humidity");
JSONArray weather = reader.getJSONArray("weather");
JSONObject Weather = weather.getJSONObject(0);
icon = Weather.getString("icon");
description = Weather.getString("description");
parsingComplete = false;
}catch (Exception e){
e.printStackTrace();
}
}
public void fetchJSON(){
Thread thread = new Thread(new Runnable(){
public void run(){
try{
URL url = new URL(urlString);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setReadTimeout(10000/*miliseconds*/);
conn.setConnectTimeout(15000/*miliseconds*/);
conn.setRequestMethod("GET");
conn.setDoInput(true);
conn.connect();
InputStream stream = conn.getInputStream();
String data = convertStreamToString(stream);
readAndParseJSON(data);
stream.close();
}catch(Exception e){
e.printStackTrace();
}
}
});
thread.start();
}
private String convertStreamToString(java.io.InputStream is) {
// TODO Auto-generated method stub
java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
return s.hasNext() ? s.next() : "";
}
}
- Masukkan kode berikut pada package explorer > src > res > strings.xml
<resources>
<string name="app_name">AppCuaca</string>
<string name="action_settings">Settings</string>
<string name="hello_world">Hello world!</string>
<string name="location">Lokasi</string>
<string name="country">Negara</string>
<string name="temperature">Suhu</string>
<string name="humidity">Kelembaban</string>
<string name="pressure">Tekanan</string>
<string name="weather">Cuaca</string>
</resources>
- Masukkan kode berikut pada package explorer > src > namapackage > MainActivity.java
import java.util.Calendar;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
public class MainActivity extends Activity {
private String url1 = "http://api.openweathermap.org/data/2.5/weather?q=";
private EditText location, country, humidity, pressure,temperature;
private ImageView gambar;
private HandleJSON obj;
private TextView jam;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
location = (EditText)findViewById(R.id.lokasi);
country = (EditText)findViewById(R.id.negara);
temperature = (EditText)findViewById(R.id.suhu);
humidity = (EditText)findViewById(R.id.kelembapan);
pressure = (EditText)findViewById(R.id.tekanan);
jam = (TextView)findViewById(R.id.Jam);
gambar = (ImageView) findViewById(R.id.gambarCuaca);
}
@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;
}
public void open(View view){
String url = location.getText().toString();
String finalUrl = url1+url;
country.setText(finalUrl);
obj = new HandleJSON(finalUrl);
obj.fetchJSON();
while(obj.parsingComplete);
country.setText(obj.getCountry());
temperature.setText(String.valueOf(obj.getTemperature()+"°C"));
humidity.setText(obj.getHumidity()+" %");
pressure.setText(obj.getPressure()+" hPa");
jam.setText(getTime());
Imageicon(obj.getIcon());
}
public static String getTime()
{
SimpleDateFormat sdf1 = new SimpleDateFormat("d/M/yyyy h:m:s a");
Calendar calendar = Calendar.getInstance();
String strdate1 = sdf1.format(calendar.getTime());
return strdate1;
}
private void Imageicon (String image){
if(image.equals("01d")){
gambar.setImageResource(R.drawable.clear);
}
else if (image.equals("01n")){
gambar.setImageResource(R.drawable.ntclear);
}
else if (image.equals("02d")){
gambar.setImageResource(R.drawable.mostlysunny);
}
else if (image.equals("02n")){
gambar.setImageResource(R.drawable.ntmostlycloudy);
}
else if (image.equals("03d") ||image.equals("03n") ){
gambar.setImageResource(R.drawable.cloudy);
}
else if (image.equals("04d") || image.equals("04n") ){
gambar.setImageResource(R.drawable.fog);
}
else if (image.equals("09d") || image.equals("10d") || image.equals("09n") || image.equals("10n")){
gambar.setImageResource(R.drawable.chancerain);
}
else if (image.equals("11d") || image.equals("11n")){
gambar.setImageResource(R.drawable.chancetstorms);
}
else if (image.equals("13d") || image.equals("13n")){
gambar.setImageResource(R.drawable.chanceflurries);
}
}
}
- Modifikasi AndroidManifest.xml untuk koneksi internet
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.appcuaca"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.appcuaca.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>
- Setelah selesai coba kita running dan ambil file .apk di package explorer > bin kemudian instal di HP kita dan hasilnya akan seperti ini
SELAMAT MENCOBA :D
Tutorial Aplikasi Networking : Membuat Aplikasi Cuaca Terkini dengan API menggunakan Eclipse
2014-11-13T22:20:00+07:00
A Bee Gaming
Langganan:
Posting Komentar (Atom)