twitter
    Find out what I'm doing, Follow Me :)
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

Android Programlama Bundle Kullanımı


Android programlamada activiyler arası data geçişi için bundle kullanılır. Bundle yardımıyla bir activitye de mevcut olan data başka bir activitye gönderilebilir. Bir önceki yazımda edittext ten alınan numaranın aranması örnek uygulamasını yapmıştık . Bundle kullanımını öğrenmek için bu uygulama üzerinden değişiklik yapacağız. 

Örnek uygulamamız çalıştığında edittexte bir numara gireceğiz . Butona tıkladığımızda başka bir activity açılacak ve buradaki call butonuna tıkladığımızda bir önceki activityden gelen ve buradaki textviewda görünen numarayı arayacak. Bunun için öncelikle yeni bir xml ve java classı oluşturacağız . Bunlara other.xml ve other.java isimlerini verdim.

other.xml de bir adet textview ve butonumuzu ekliyoruz. Gerekli isimlendirmeleri yaptıktan sonra other.xml içeriği şu şekilde olur :

other.xml :


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/tvNumber"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="TextView" />

    <Button
        android:id="@+id/btnCall"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Dial" />

    </LinearLayout>


Bu işlemden sonra MainActiviy.java classımızda da aşağıdaki değişiklikleri yapıyoruz :

MainActivity.java :


package com.example.dialnumber;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

     EditText edtNumber ;
     Button btnDial ;
     private Intent intent;
     private Bundle bundle;

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

        edtNumber = (EditText)findViewById(R.id.edtNumber);
  btnDial = (Button)findViewById(R.id.btnDial);      


        btnDial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
     intent = new Intent("com.example.dialnumber.OTHER");
             bundle = new Bundle();
     bundle.putString("number",edtNumber.getText().toString());
     intent.putExtras(bundle);
     startActivity(intent);
}
});
     }

}



Other.java içeriği ise şu şekildedir :


package com.example.dialnumber;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class other  extends Activity {
TextView tvNumber ;
Button btnCall ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.other);
tvNumber = (TextView)findViewById(R.id.tvNumber);
btnCall = (Button)findViewById(R.id.btnCall);
Bundle datas = getIntent().getExtras();
tvNumber.setText(datas.getString("number"));
btnCall.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialNumber();
}
});
}
public void dialNumber(){
if (!tvNumber.getText().toString().equals("")){
try {
    Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+tvNumber.getText().toString()));
startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("Dialing Example", "Call failed");
}
}else {
Toast.makeText(getApplicationContext(),"Numara Giriniz",Toast.LENGTH_SHORT).show();
}
}
}




Örneğin mainactivityden other acitivitye bir data göndereceğiz . Bunun için Bundle değişkeni ve datanın gönderileceği bir intent oluşturulur. Daha sonra data herhangi bir keyword ile birlikte , örneğin datanın String türde olmasına göre putString komutuyla bundle a konulur. Bundle putExtras ile birlikte intente geçirilir. StartActivity ile de activity başlatılır. Gönderilecek datanın türüne göre String dışında birçok put komutu vardır.(ArrayList, Double ...)

Datanın alınacağı activityde ise intente aktarılan data get komutu ile alınır.

AndroidManifest.xml içeriği :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dialnumber"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.dialnumber.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>
        <activity
            android:name=".other"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="com.example.dialnumber.OTHER" />

                <category android:name="android.intent.category.DEFAULT" />
            </intent-filter>
        </activity>
    </application>

</manifest>


Bu şekilde bundle ile activityler arası geçiş yapılmaktadır. Uygulamamızı çalıştırırsak görüntüleri şu şekilde olur :
                  

MainActivitydeki Edittextten diğer activitydeki textview a numaranın aktarılması. ilk ekranda dial butonuna tıklandıgında diğer activitye geçiş yapılır. ikinci activityde dial butonuna tıklandıgında ise textviewda görülen numarayı arar.

Uygulamayı buradan indirebilirsiniz.



EditTextten Girilen Numarayı Arama

Bu yazımda yaptığım lokasyon uygulamasında öğrendiğim bir uygulamayı anlatacağım . Bilindiği üzere android programlamada yaptığımız uygulamaları direkt olarak akıllı telefonlarımızda çalıştırabiliriz ve test edebiliriz. Bu yapacağımız uygulama bunun en güzel örneklerinden biri olacak. 

Şimdi uygulamamızı yapmak için bir proje oluşturalım : File --> New --> Project sekmesinden New Android Application seçilir ,Next butonuna tıklanır.


 Proje ismi verilir , daha sonraki çıkan ekranlardan Next diyerek en son finish butonuna tıklanır ve projemiz oluşturulur.

Örnek uygulamamızda EditText ten bir numara girilecek ve butona tıklandıgında bu numara aranacak. Bunun için öncelikle arayüze bir EditText ve Button elemanları ekleyelim.  Daha sonra kodlama kısmına başlayalım. Öncelikle arama yapmamız için gerekli olan permissionı ekleyelim :


AndroidManifest.xml içeriği : 
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.dialnumber"
    android:versionCode="1"
    android:versionName="1.0" >
    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.CALL_PHONE" />
    
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.dialnumber.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>


MainActivity.java classımız içerisinde kodlama kısmına geçelim . Arayüz elemanlarımızı oluşturup arama yapacak DialNumber methodumuzu ekleyelim :

MainActivity.java Classı içeriği :
package com.example.dialnumber;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
EditText edtNumber ;
Button btnDial ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
edtNumber = (EditText)findViewById(R.id.edtNumber);
btnDial = (Button)findViewById(R.id.btnDial);
btnDial.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dialNumber();
}
});
}
public void dialNumber(){
if (!edtNumber.getText().toString().equals("")){
try {
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:"+edtNumber.getText().toString()));
startActivity(callIntent);
} catch (ActivityNotFoundException activityException) {
Log.e("Dialing Example", "Call failed");
}
}else {
Toast.makeText(getApplicationContext(),"NumaraGiriniz",Toast.LENGTH_SHORT).sho w();
}
}
}


Bu işlemlerden sonra örnek uygulamamızı tamamlamış olduk. Uygulamayı çalıştırdıgımızda ekran görüntüleri şu şekilde olur :

                       


Numara girmeden butona tıkladıgımızda Numara giriniz uyarısını verir. Herhangi bir numara girip butona tıkladıgımızda ise arama yapar.

Örnek Uygulamayı buradan indirebilirsiniz.



Android Programlama Google Places Api Kullanımı


Yapılan lokasyon uygulamalarında çevrede bulunan restaurant, cafe, atm gibi günlük hayatta yer bilgilerine ihtiyaç duyduğumuz yerler listelenmekte , bunların haritada gösterilmesi ,detaylarının getirilmesi gibi işlevler bulunmaktadır. Bunları yapılabilmesi için google gerekli apileri sağlamaktadır. Daha önce Google Maps ile ilgili pi key alımı ve kullanımından bahsetmiştim. Şimdi ise restaurant ,cafe gibi yerlerin getirilmesini sağlayan Google Places Api den bahsedeceğim. Bu api ile Google'ın desteklediği birçok lokasyon türü ile arama işlemi gerçekleştirilmektedir.

Desteklenen lokasyon türlerinin listesi :
https://developers.google.com/places/documentation/supported_types

Ayrıca bu api ile birlikte çevrede bulunan yerler , bu yerlerin detay bilgileri gibi ek özellikler de getirilebilmektedir. (Bu yerler ile ilgili yönlerin çizilebilmesi için Google Maps in en az Version2 ile birlikte Google Directions Apinin kullanılması gerekmektedir.)

Lokasyonların getirilmesi için https://code.google.com/apis/console/# adresinden Places Api keyi alınır.Bu alınan key uygulamada kullanacaktır.

Şimdi Projemizi Oluşturalım:

Android Google Maps Apide Overlay Ekleme

Androidde Google Maps Apide istediğimiz yere overlay koymak isteyebiliriz. Örneğin maps.google.com da müze , şehir  gibi lokasyonlar girdiğimizde cevap olarak overlay ile gösterilirler. Buna benzer olarak istedğimiz yere overlay koyarak bu yerleri gösterme imkanımız vardır . Bunun için yeni bir proje oluşturalım.

Burada bir önceki yazıdaki işlemler yapılır. activity_main.xml de mapview elemanı  aldıgımız key ile birlikte tanımlanır.


Androidde Arayüz Tasarım Programları

Her yazılım geliştirme aşamasında olduğu gibi anroidde de arayüz tasarımının etkileyici ve kullanışlı olması çok önemlidir. Ancak androidde arayüz tasarımı yapmak pek de kolay değil. Arayüz tasarımının daha kolay yapılabilmesi için yardımcı programlar bulunmaktadır . Bu programlardan en tanınmışları MotoDev ve DroidDraw 'dur. Bize sağlanan bu yardımcı programlar da ücretsizdir.

Peki Bu Yardımcı Programlar Nasıl Kullanılır ?
Örneğin DroidDraw programını ele alalım.Öncelikle bu programı indirmemiz gerekir. Bunun için www.droiddraw.org sitesinden işletim sistemimize uygun sürümü indirelim. Bilgisayarımızda  indirdiğimiz dizin içersinde bu droiddraw kurulumunu yapalım. Kurulumu oldukça basittir.


Androidde Google Maps Uygulaması

Androidde Google Maps uygulaması yapabilmemiz için Maps Api Key alınması gerketiğini önceki yazımda anlatmıstım. Önceki yazıya buradan ulaşabilirsiniz. Google'da kaydımızı oluşturup fingerprint işlemini oluşturduktan sonra map uygulaması oluşturalım. Bunun için yeni bir android applicationı oluşturalım.

New  -->   Project  --> Android Application Project yolu izlendikten sonra proje bir isim verilir. Projeye uygun bir isim verildikten sonra Build SDK kısmının Google Api yi içerecek şekilde seçilmesi gerekmektedir.


Google Maps Uygulamaları İçin Map Api Key Alma

Android uygulamalarımızda google maps ' ten yararlanabiliriz. Android uygulamalarında google maps kullanabilmemiz için yapmamız gereken bazı işlemler bulunmaktadır. Uygulamalarımızda Google Maps kullanabilmek için MD5 certificate yani parmak izi sertifikamızı Google'a onaylatmamız gerekiyor.

Maps Api Key Nasıl Alınır ?


          1.  İlk olarak Java'yı kurduğumuz yerin yolunu alalım. Örneğin benim bilgisayarımda bu yol şöyle :                                   
               "C:\Program Files\Java\jdk1.7.0_13\bin"

          2.  Daha sonra Eclipse 'te Window -> Preferences->Android ->Build  e tıklayıp Default debug   keystore bölümündeki yolu alalım : "C:\Users\elvan\.android\debug.keystore"

Android Arayüz Bileşenleri - 1

Android Arayüz bileşenleri kullanıcı ile bilgi alışverişi yapılmasını sağlar. Kullanıcı ile programın iletişimini sağlar. Arayüz bileşenleri olarak buton , edittext ,textview, spinner, togglebuton ,listview gibi birçok eleman bulunmaktadır. Burada ise kullanıcıdan alınan bilgilerin button click ile Toast mesajı ile gösterilmesi gerçekleştirilecektir.

Yeni bir android projesi açalım. Bu projeyi Android 2.1 sürümünde açalım. Arayüzümüzde 2 adet EditText ,2 adet TextView , bir adet Button bulunacaktır. EditTextlerden birinde Ad Soyad bilgisi diğerinde ise E-mail bilgisi alınacaktır. Butona tıkladığımızda ise bize Toast mesajı ile girilen bilgileri gösterecektir.

main.xml içeriği ;