Sayfalar

Kategoriler

Android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Android etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

30 Ekim 2014 Perşembe

Android Web Servis Kullanıcı Adı ve Parola Ayarlama


Merhaba arkadaşlar,

Bu yazımda daha önce yayınlamış olduğum Android te web servis kullanımına ilişkin ek bir ilave yapacağım. Eğer servisimizde kullanıcı adı ve parola erişim kısıtı varsa bu durumda servisimizde SOAP header’ına bu parametreleri set etmemiz gerekecektir. Eğer Android te web servis kullanımı ile alakalı yazımı okumamışsanız buradan okumanızı tavsiye ederim çünkü kodları oradaki yapı üzerinden vereceğim.

Servis request değerimi oluşturup SoapSerializationEnvelope nesneme set ederken burada headerOut fonksiyonunu kullanarak kullanıcı adı ve parola değerlerimi set ediyorum. Bunun için önceki yazımda WebServiceCall.java sınıfımız içerisinde SetEnvelop() metodumda şu kodları ekliyoruz.


    protected void SetEnvelope() {
         
        try {
             
            // Creating SOAP envelope          
            envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
             
            //You can comment that line if your web service is not .NET one.
            envelope.dotNet = true;
            
            //header'a kullanıcı adı ve parola değerlerini set et
            envelope.headerOut = new Element[1]; 
            envelope.headerOut[0] = buildAuthHeader();
            
            envelope.setOutputSoapObject(request);
            androidHttpTransport = new AndroidHttpTransport(URL);
            androidHttpTransport.debug = true;
             
        } catch (Exception e) {
            System.out.println("Soap Exception---->>>" + e.toString());   
        }
    }
    
    
    private Element buildAuthHeader() {
        Element h = new Element().createElement(NAMESPACE, "AuthHeader");
        Element username = new Element().createElement(NAMESPACE, "Username");
        username.addChild(Node.TEXT, USERNAME);
        h.addChild(Node.ELEMENT, username);
        Element pass = new Element().createElement(NAMESPACE, "Password");
        pass.addChild(Node.TEXT, PASSWORD);
        h.addChild(Node.ELEMENT, pass);

        return h;
    }

Umarım faydalı olur, yardıma ihtiyacınız olduğunda yardımcı olabilirim.

Android Web Servis Kullanımı


Merhaba arkadaşlar, .net web servislerinin android te nasıl kullanılacağından bahsedeceğim.  Bunun için http://www.webservicex.net/ sitesinde sunulan ağırlık birimleri arası dönüşüm yapan basit bir servisi kullanacağız. Bu servis .net ile yazılmış web servisidir. Bunu bilmekte fayda var çünkü java ile yazılmış servislerin kullanımı biraz daha farklı.

Öncelikle Android de web servislerini kullanabilmemiz için ksoap2 kütüphanesine ihtiyaç var. Bu kütüphaneyi buradan indirerek projemize import ediyoruz. Bunun için önce indirdiğimiz .jar dosyamızı projemizde libs klasörünün altına kopyalayalım, ardından projemizin üzerine gelerek sağ tıklayıp Build Path > Add External Archives.. seçeneğini seçiyoruz. İndirdiğimiz ksopa2 jar’ını göstererek ekliyoruz.



Aşağıda kullanacağımız servisin açıklamalarını verdim. Uygulamada kullanacağımız servis değişkenleri şu şekilde.





NAMESPACE = “http://www.webserviceX.NET/
URL = “http://www.webservicex.net/ConvertWeight.asmx”
METHOD_NAME = “ConvertWeight”
SOAP_ACTION = NAMESPACE + METHOD_NAME 



Şimdi servisi uygulamamızda nasıl kullanacağımıza geçebiliriz. Ben basit bir uygulama ile servisten dönen cevabı bir text içerisinde göstereceğim. Siz kendi uygulamanıza göre uyarlarsınız. Proje structure olarak resimde verildiği şekliyle.















1) Öncelikle layout’umuzu oluşturalım. Ben servise parametre olarak geçeceğimiz değerleri alacağım 3 textbox ve servis çağrısı yapacağımız bir buton kullanıyorum ve servis cevabını gösterebileceğim bir label ekliyorum. 




    

    

    

    

    

    

    


2) Servis bağlantımı oluşturacağım WebServiceCall sınıfımı oluşturuyorum.  Bu sınıf içerisinde Soap requestimi oluşturuyor varsa gerekli request parametrelerimi, servis kullanıcı adı ve parolamı set ediyorum. Bu servisimizde kullanıcı adı ve parola istemediği için SOAP header 'ına müdahale etmedik. Ancak başka yazımda ele aldım. Buradan (Servis Kullanıcı Adı ve Parola Set Etme) servis header parametrelerinin nasıl set edileceğine ulaşabilirsiniz.


package com.ahmetbz.usingwebservices;

import org.ksoap2.SoapEnvelope;
import org.ksoap2.serialization.PropertyInfo;
import org.ksoap2.serialization.SoapObject;
import org.ksoap2.serialization.SoapPrimitive;
import org.ksoap2.serialization.SoapSerializationEnvelope;
import org.ksoap2.transport.AndroidHttpTransport;
import org.kxml2.kdom.Element;
import org.kxml2.kdom.Node;

public class WebServiceCall {

    String NAMESPACE = "http://www.webserviceX.NET/";
    private String URL = "http://www.webservicex.net/ConvertWeight.asmx";
    String METHOD_NAME = "ConvertWeight";
    String SOAP_ACTION;
    SoapObject request = null, objMessages = null;
    SoapSerializationEnvelope envelope;
    AndroidHttpTransport androidHttpTransport;
     
    WebServiceCall() {
    }

    protected void SetEnvelope() {
         
        try {
             
            // Creating SOAP envelope          
            envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
             
            //You can comment that line if your web service is not .NET one.
            envelope.dotNet = true;
            
            envelope.setOutputSoapObject(request);
            androidHttpTransport = new AndroidHttpTransport(URL);
            androidHttpTransport.debug = true;
             
        } catch (Exception e) {
            System.out.println("Soap Exception---->>>" + e.toString());   
        }
    }
    
    // MethodName variable is define for which webservice function  will call
    public String getConvertedWeight(String weight, String fromUnit, String toUnit)
      {
         
        try {
            SOAP_ACTION = NAMESPACE + METHOD_NAME;
             
            //Adding values to request object
            request = new SoapObject(NAMESPACE, METHOD_NAME);
            

            //Adding Double value to request object
            PropertyInfo weightProp =new PropertyInfo();
            weightProp.setName("Weight");
            weightProp.setValue(weight);
            weightProp.setType(double.class);
            request.addProperty(weightProp);
             
            //Adding String value to request object
            request.addProperty("FromUnit", "" + fromUnit);
            request.addProperty("ToUnit", "" + toUnit);
            
            SetEnvelope();
             
            try {
                 
                //SOAP calling webservice
                androidHttpTransport.call(SOAP_ACTION, envelope);
                 
                //Got Webservice response
                SoapPrimitive response = (SoapPrimitive)envelope.getResponse();
 
                return response.toString();
                 
            } catch (Exception e) {
                // TODO: handle exception
                return e.toString();
            }
        } catch (Exception e) {
            // TODO: handle exception
            return e.toString();
        }
 
    }

}


3) Butona tıklayınca servis çağrısı yapacağım DotNetWebServiceActivity sınıfımda hazırladığım layottan servise göndereceğim parametreleri alıyorum ve servis çağrısını yaparak dönen değeri labelda gösteriyorum.

package com.ahmetbz.usingwebservices;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

public class DotNetWebServiceActivity extends Activity {

 @Override
 protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.mainlayout);
          
         final Button webserviceCallButton = (Button) findViewById(R.id.callServiceButton);
         final EditText weightEditText = (EditText) findViewById(R.id.weightEditText);
         final EditText fromUnitEditText = (EditText) findViewById(R.id.fromUnitEditText);
         final EditText toUnitEditText = (EditText) findViewById(R.id.toUnitEditText);
         final TextView webserviceResponse = (TextView) findViewById(R.id.serviceResponseTextView);
          
         webserviceCallButton.setOnClickListener(new OnClickListener() {
             public void onClick(View v) {
                  
                 webserviceResponse.setText("Requesting to server .....");
                  
                 //Create Webservice class object
                 WebServiceCall service = new WebServiceCall();
                  
                 // Initialize variables
                 String weight   = weightEditText.getText().toString();
                 String fromUnit = fromUnitEditText.getText().toString();
                 String toUnit   = toUnitEditText.getText().toString();
                  
                 //Call Webservice class method and pass values and get response
                 String aResponse = service.getConvertedWeight(weight, fromUnit, toUnit);  
                     
                 Log.i("AndroidExampleOutput", "----"+aResponse);
                  
                 webserviceResponse.setText("Service Response : "+aResponse);
             }
         });
       
 }

}


4) AndroidManifest.xml dosyamızda Activity’i kaydetmeyi ve internet iznini vermeyi unutmayalım.



    
 
    
        
            
                
                
            
        
    
 






Evet arkadaşlar, uygulamaızı çalıştırıp ilgili değerleri girdiğimizde sonucun döndüğünü görebiliriz.

28 Haziran 2013 Cuma

Android İlk Uygulama Oluşturmak

Merhabalar,

Daha önceki yazımda Windows için Android geliştirme ortam kurulumunu anlatmıştım. Ortam kurulumu olmayanlar yazıma buradan ulaşabilirler.
Bu yazımda Android ilk proje oluşturma ve android geliştirim ortamını tanımaya giriş yapacağım.

Yeni Proje Oluşturmak


  1. File -> New -> Project seçimini yapıyoruz.
  2. Android klasörü altında Android Project seçeneğini işaretleyip Next’e tıklıyoruz.
  3. Karşımıza gelen ekrandan proje detaylarımızı giriyoruz.




  • Project name proje adımız
  • Package name kullandığımız java paketimiz.
  • Application name ise uygulamamıza isim vermemizi sağlar.

Burada dikkat etmeniz gereken husus; paket ismini verirken standart com.deneme... ya da com.example... gibi paket isimleri vermeniz durumunda uygulamanızı android markete yükleyemiyorsunuz, bilginize.

SDK seçiminde de dikkat etmeniz gereken En yeni sdk android’in sahip olduğu tüm fonksiyonları kullanmaya olanak sağlar. Fakat uygulamamızı indirecek kullanıcıların kullandığımız sdk sürümüne veya daha üstüne sahip olmalıdır. Bu nedenle ne kadar düşük sdk kullanımı o kadar fazla kullanıcı demektir. Tabi bu durum projenin gelişimini etkilemeyecek düzeyde ve stratejik olarak alınacak bir karardır.

Proje ismi ve SDK seçiminden sonra devam ettiğimizde uygulama icon'u nu seçiyoruz ve devam ediyoruz.


  • Create Activity ise ilk çalışacak sınıfı oluşturur.
Blank Activity seçip devam ediyoruz.








Bu ekranda uygulamamız açıldığında çalışacak Activity class'ı ismini ve uygulama açıldığında kullanılacak ekran görüntüsü(layout) ismini giriyoruz ve Finish diyoruz.Eğer Create Activity’yi seçtiyseniz ADT eklentimiz Activity’yi genişleten bir class’ı  içeren bir proje yaratacaktır. Proje Hello World uygulmasını otomatik olarak içerir.

Projemizi oluşturduk. Şimdi bir dizin yapısına göz atalım.

  • src/ :
Activity (işlem) dosyalarımız ve kaynak dosyalarımız (.java dosyaları) bu dizinde tutulur.
  • gen/ :
ADT tarafından oluşturulan java dosyaları (R.java) bu dizinde tutulur.
  • assets/ :
Bu klasör boştur. Dosyalarınızı, verilerinizi bu dizinde tutabilir ve daha sonra “AssetManager” ile okuyabilirsiniz
  • bin/ :
Çıktı dizinidir. “.apk” dosyamız bu dizinde oluşturulmaktadır.
  • res/ :
Görüntü dosyalarını (ikon,logo vs.), kullanıcı arayüzünü, string değerlerini, tanımlamaları, menüleri, animasyon dosyalarını vs. tutar.
  • AndroidManifest.xml :
Bu dosya uygulamamız hakkındaki bilgileri (izinler, yayıncı, sürüm vs.) ve bileşenleri içerir.

Başlangıç Yapılandırması

Başlangıç yapılandırmalarını kullanarak Çalıştırılıcak proje ve aktivite , kullanılacak sanal makine ve emülatör, Girdi / Çıktı ayarlarını belirleyebiliriz. Uygulamamızı test etmek amacıyla farklı başlangıç yapılandırmaları tanımlayabiliriz. 
1) Run menüsünden Run Configurations’ı seçin.
2) Project Type List’ten Android Application'a sağ tıklayıp new'i seçin.

3) Yapılandırma ayarlarımız için bir isim girelim.
4) Evet ilk resimde göründüğü gibi Android sekmemizdeki ayarları yaptık. Burada uygulamamızın ilk açıldığında çalışacak aktivitemizin seçimini görebiliriz. Default şuan için.
5)Target sekmesine geçiyoruz ve önceden oluşturduğumuz bir sanal makine’yi seçiyoruz.

Android SDK kendinden bir sanal makine içermez. Emülatörü kullanarak uygulamamızı çalıştırmak için bir sanal makine yaratmalıyız. Eğer resimdeki gibi listede sanal makineniz yok ise yeni sanal makine yaratmak için Manage’ e tıklayın. Ve yeni sanal makine oluşturun.

Daha sonra Commen sekmemizden isteğe bağlı özellikleri ayarlıyoruz. Son olarak apply’ a tıklayalım ve yapılandırmamızı kaydedelim.






Evet proje başlatmayı tamamladık. Şu an çalıştırdığınızda Emülator başlatılır ve main.xml layout'u içeriğini uygulamnızda görürsünüz.Kod içeriğini önümüzdeki yazılarda inceliyor olacağız.Sonraki yazılarda görüşmek üzere.

24 Haziran 2013 Pazartesi

Android SDK Kurulumu

Merhabalar,


Bu yazımda Android programlamaya yeni giriş yapan arkadaşlar için Eclipse geliştirim ortamı ve Android SDK kurulumu anlatımı adına olacaktır.İlerleyen yazılarım da daha detaylı örneklerle devam ediyor olacağım anlatımlarıma.


1)Eclipse Kurulumu
Bilgisayarında Eclipse olmayan arkadaşlar bağlantıyı kullanarak Eclipse'nin son sürümünü indirebilirler.
 İndirme işlemi sonrası sıkıştırılmış dosya içerisinden dosyaları herhangi bir diskinizde Eclipse klasörü oluşturun ve altına taşıyın.Eclipse kurulum istemeyecektir. eclipse.exe uygulama dosyasını çalıştırmanız yetecektir. Tabi Eclipse ile çalışmak için Java jdk'ları bilgisayarınız da kurulu olmalıdır. Bu jdk'lar bilgisayarında olmayan arkadaşlar buradan Java Platform (JDK)'yı indirebilirler. Öncelikle JDK'yı kurmanızı öneririm eğer daha önce kurmamışsanız.
JDK kurulumundan sonra Eclipse'i de indirip eclipse.exe'i çalıştıralım. Eclipse ilk açılışta çalışmalarınızı nereye kaydetmek istediğinizi sorar. Çalışmaları kaydedeceğiniz dizini seçin.

2) Android SDK Kurulumu

Şimdi sıra Android SDK'sını indirmede. Linki tıklayarak android geliştirim ortamını indirelim.

  
İndirdikten sonra Eclipse'i kurduğunuz aynı dizine bir de android_sdk klasörü oluşturun ve altına indirdiğiniz sıkıştırılmış arşiv içerisindeki dosyaları çıkartın.




Ortamları kurma işlemlerinden sonra sırasıyla aşağıdaki adımları yapacağız.

1) Şimdi Eclipse'i açtıktan sonra, Help > Install New Software yolunu takip ediyoruz.

2) Daha sonra çıkan pencerede “Add” butonuna tıklıyoruz.
3) Yukarıdaki resimdeki gibi Name için “ADT Plugin” yazıyoruz. Location’a ise “https://dl-ssl.google.com/android/eclipse/” yazıyoruz ve “OK” butonuna basıyoruz.

4) “Work with” kısmını kontrol ediyoruz ve ayrıca “Developer Tools” kutucuğunu seçiyoruz. Daha sonra “Next” butonuna tıklıyoruz.

5) İndirilen dosyaları gösteren yukarıdaki pencere çıkıyor. Bir kere daha “Next” butonuna tıklıyoruz. Daha sonra lisans anlaşmasını onaylayıp “Finish” butonuna tıklıyoruz ve daha sonra yüklemeler başlıyor. 

Bu sırada aşağıdaki gibi bir uyarı penceresi çıkacaktır, bunada OK deyip indirme işlemini bekliyoruz.
Yükleme işlemi bitince “Restart Now” butonuna tıklıyoruz ve “Eclipse” yeniden başlıyor.

6) Daha sonra Window >> Preferences yolunu takip ediyoruz. Daha sonra sol menüden “Android”e tıklıyoruz.

Çıkan pencerede Browse diyerek Android SDK'yı kurduğunuz dizini gösteriyorsunuz ve OK diyorsunuz.
7) Daha sonra Window >> Android SDK and AVD Manager yolunu takip ediyoruz. Daha sonra sol menüden “Available packages”i açıyoruz. “Android Repository”yi yanındaki ok işaretini tıklayarak açıyoruz.
Burada çalışmayı yapacağınız Android versiyonunu seçin yükleyin.Dilerseniz bütün paketleri indirebilirsiniz. Ancak biraz uzun sürüyor bilginize :). Şimdilik çalışacağınız paketleri seçip daha sonra ihtiyaç duydukça aynı adımları izleyerek diğer paketleride indirebilirsiniz.

8) Daha sonra aynı pencereden “Virtual devices” sekmesine geçiyoruz. “New” butonuna tıklıyoruz ve açılan pencerede çalışmanızı deneybileceğiniz Android emülatör bilgilerini isteyen bir form açılıyor.Burada cihazınıza bir ad veriyorsunuz ve versiyonunu seçiyorsunuz.Sonra Create AVD diyoruz.

9) Daha sonra Android SDK and AVD Manager >> Virtual Devices sekmesinden yarattığımız AVDyi seçip “Start” daha sonra “Launch”a tıkladığımızda biraz bekledikten sonra Virtual Device’ın açıldığını görebilirsiniz.

Android programlama için Windows çalışma ortamlarını kurduk Artık uygulamalrımızı geliştirmeye başlayabiliriz. Sonraki Android Uygulama Geliştirme yazımda görüşmek üzere.