Jump to content

umutbsl

Üye
  • Posts

    235
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by umutbsl

  1. Android uygulamanıza uzaktan bildirim test vs göndermek için bir çok servis mevcut fakat ingilizce ve birçoğu paralı turkcell'in servisi bedava hemde ingilizce üye oluyoruz http://push.turkcell.com.tr/ 

    bunu indirip uygulamamıza entegre ediyoruz sonra push.turkcell.com.tr den bildirim ve testlerimizi gönderiyoruz

    https://github.com/Turkcell/PushNotification_android_sdk

     

     

    Turkcell Push SDK Android Entegrasyon Kılavuzu Giriş

    Turkcell Push SDK sayesinde Android uygulamalarınıza kolayca push bildirimlerini alabilme yeteneğini kazandırabilirsiniz. Bu doküman da bir Android uygulamasına Turkcell Push SDK entegrasyonunun nasıl yapılacağı anlatılmıştır.

    SDK’nın Projeye Library Project Olarak Eklenmesi

    Turkcell Push SDK’nın dağıtımı Android Library Project olarak yapılmaktadır. Source codelar derlenmiş olarak libs klasörünün altında bulunmaktadır. minSdkVersion olarak API Level 8kullanılmaktadır. Bunun sebebi google-play-services_lib library’sinin minSdkVersion olarak API Level 8’i kullanmasıdır.

    SDK’nın bir uygulama eklenmesinin klasik bir Android Library Projesinin projeye eklenmesinden bir farkı yoktur. İlk önce Library’i eklemek istediğimiz projenin üzerine gelip sağ tıklıyoruz. Açılan pencereden projenin Properties’ine giriyoruz. Projenin properties’ine girdikten sonra solda bulunanAndroid tabına geliyoruz. Bu tabın en altında bulunan Add butonuna basıyoruz. Açılan penceredenPushNotificationSDK’yı bulup seçip Ok butonuna tıklıyoruz. Burada önemli olan projemiz ile library’inin aynı dosya dizininde bulunması gerektiğidir. Yoksa library eklemede problemlerle karşılaşılabilir. Ekledikten sonra Ok butonuna basıp Properties penceresini kapatıyoruz. Library projesini başarılı bir şekilde ekledikten sonra kendi uygulamamız içinde bulunan project.propertiesdosyasının en altına manifestmerger.enabled = true ifadesini ekliyoruz. Bunu yapmamızın sebebi library projesi içinde bulunan AndroidManifest.xml dosyası içinde bulunan değerlerin bizim uygulamamız içinde bulunan AndroidManifest.xml dosyası ile derleme esnasında birleştirilmesini sağlamaktır.

    PROJECT.PROPERTIES
    
    # This file is automatically generated by Android Tools.
    # Do not modify this file -- YOUR CHANGES WILL BE ERASED!
    #
    # This file must be checked in Version Control Systems.
    #
    # To customize properties used by the Ant build system edit
    # "ant.properties", and override values to adapt the script to your
    # project structure.
    #
    # To enable ProGuard to shrink and obfuscate your code, uncomment this (available properties: sdk.dir, user.home):
    #proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
    
    # Project target.
    target=android-18
    android.library.reference.1=../PushNotificationSDK
    manifestmerger.enabled=true

    Turkcell Push Server Üzerinde Uygulamanın Oluşturulması

    Uygulamanıza Turkcell Push SDK entegrasyonu yapabilmeniz için öncelikle Push Server üzerinde uygulama kaydı oluşturmalısınız. Bir Android uygulamasını Push Server’a kaydetmek için aşağıdaki bilgiler ile Push Server sorumlusuna başvurmanız gerekmektedir.

    Alan İsmi

    Alan Açıklaması

    Uygulama Adı

    Push Server üzerinde uygulamanıza vermek istediğiniz isim. Uygulamanızın birden fazla platformda yer alabileceğini düşünerek uygulama isminde platform adına da yer vermek faydalı olabilir.

    Güvenlik Anahtarı

    Turkcell PushServer tarafından otomatik oluşturulan bir SecretKey

    GCM Api Key

    https://cloud.google.com/console#/project sitesi üzerinden açılmış bir projenin Google Cloud Messaging for Android Api’sini enable ettikten sonra alınan API KEY değeri

    Örnek değer aşağıdakine benzer bir değer:
    AIzaSyCOb-sAb6yIydP3xVvL_Kmd1cTcXvmq27w

    Paket Adı

    Library Projenin eklendiği uygulamanın paket adı

    Bu bilgiler ile birlikte uygulamanız oluşturulduğunda size Turkcell Android SDK Uygulama Numarasıbilgisi iletilecektir.

    AndroidManifest Tanımlamaları

    Uygulamamızın atılan push mesajlarından haberdar olabilmesi için AndroidManifest.xml dosyası içine bazı tanımlamaların yapılması gerekmektedir.

    İlk önce eklememiz gereken kısım uygulama izinleridir. Bunu aşağıdaki şekilde yapıyoruz. Aşağıdapaketadı şeklinde yazılan yere kendi uygulamamızın paket adını yazmamız gerekmektedir.

    <permission
    android:name="paketadı.permission.C2D_MESSAGE" android:protectionLevel="signature" />
    
    <uses-permission
    android:name="paketadı.permission.C2D_MESSAGE" />
    
    <uses-permission
    android:name="paketadı.pushnotification.RECEIVER" />
    
    <permission
    android:name="paketadı.pushnotification.RECEIVER" android:protectionLevel="signature" />

    İzinleri ekledikten sonra aşağıdaki receiver tanımlamalarını eklememiz gerekmektedir. Aşağıda paketadı ile belirtilen yerlere yine uygulamamızın paket adı bilgisini yazmamız gerekmetedir.eklediğimizpaket ile belirtilen yere de PushNotificationReceiver sınıfını uygulamamızda hangi paketin altına koyduysak oranın dizin adını vermemiz gerekmektedir. Atılan push mesajları PushNotificationSDK tarafından bu sınıfa gönderilecektir.

    <receiver android:name="tr.com.turkcellteknoloji.pushnotificationsdk.GcmBroadcastReceiver"
    android:permission="com.google.android.c2dm.permission.SEND" >
    <intent-filter>
    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
    <category android:name="paketadı" />
    </intent-filter>
    </receiver>
    
    <receiver
    android:name="eklediğimizpaket.PushNotificationReceiver" android:permission="paketadı.pushnotification.RECEIVER" >
    
    <intent-filter>
    <action android:name="tr.com.turkcellteknoloji.pushnotificationsdk.RECEIVER" />
    
    <category android:name="paketadı" />
    </intent-filter>
    </receiver>

    Örnek PushNotificationReceiver sınıfı aşağıdaki gibi olabilir. Burada collapse_key parametresi ile atılan push mesajın içeriğine ulaşılabilir. from parametresi ile atılan push mesajın hangi serverdan geldiğinin id’sine ulaşılabilir. Bu ID aslında bizim register olurken kullandığımız senderId parametresi ile aynıdır(SenderID sonraki kısımlarda anlatılacaktır). Bu parametrelerin haricinde uygulama bazında tanımlanan payload(PushServer sorumluları tarafından sizin isteğiniz doğrultusunda oluşturulabilir) parametrelerine aşağıdaki şekilde keylerini vererek ulaşabiliriz.

    public class PushNotificationReceiver extends BroadcastReceiver {
    
    private NotificationManager mNotificationManager;
    public static final int NOTIFICATION_ID = 1;
    
    String message;
    
    @Override
    public void onReceive(Context context, Intent intent) {
    
    /** All push message containts this values */
    message = intent.getStringExtra("collapse_key");
    Log.d("PushNotificationReceiver", "message:" + message);
    Log.d("PushNotificationReceiver", "from:" + intent.getStringExtra("from"));
    
    /** Sample Key Values (First, these must be added from Turkcell push server) */
    Log.d("PushNotificationReceiver", "key:" + "video, " + "value:" + intent.getStringExtra("video"));
    Log.d("PushNotificationReceiver", "key:" + "image, " + "value:" + intent.getStringExtra("image"));
    Log.d("PushNotificationReceiver", "key:" + "www, " + "value:" + intent.getStringExtra("www"));
    
    /** Show Sample Notification*/
    
    mNotificationManager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
    
    PendingIntent contentIntent = PendingIntent.getActivity(context, 0,
    new Intent(context, MainActivity.class), 0);
    
    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
    context).setSmallIcon(R.drawable.ic_launcher)
    .setContentTitle("GCM Notification")
    .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
    .setContentText(message);
    
    mBuilder.setContentIntent(contentIntent);
    mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build());
    }
    
    }

    SDK Fonksiyonları

    Turkcell Push SDK’nın en önemli sınıfı NotificationManager sınıfıdır. İşlemlerin hemen hepsi bu sınıfın üzerindeki static Instance özelliği üzerinde yapılmaktadır.

    Ayarların Atanması

    NotificationManager sınıfı üzerindeki fonksiyonlar çağırılmadan önce bu sınıfın gerekli bilgiler ile hazırlanması gerekmektedir. NotificationManager sınıfı init metodu aracılığıyla gerekli bilgileri kabul etmektedir. Ayarlar NotificationSettings sınıfı içerisinde tutulmaktadır. Örnek kullanımı aşağıdaki gibidir.

    /* Initialize PushNotification SDK */
    NotificationSettings notificationSettings = new NotificationSettings();
    notificationSettings.setApplicationId(DEFAULT_APP_ID); notificationSettings.setSecretKey(DEFAULT_SECRET_KEY);
    notificationSettings.setSenderId(DEFAULT_SENDER_ID);
    
    /* initalize optional parameter these are not necessarry */
    notificationSettings.setCustomId("customId");
    notificationSettings.setGenericParam("resolution768x480");
    
    try {
    NotificationManager.getInstance().init(this, notificationSettings);
    } catch (Exception e) {
    e.printStackTrace();
    }

    Buradaki ApplicationIdSecretKey ve SenderID değerleri belirtilmesi zorunlu alanlardır. Bu alanların boş olması durumunda init metodunda exception oluşacaktır.

    NotificationSettings nesnesi ile sağlayabileceğiniz değerler ve açıklamaları aşağıdaki tabloda gösterilmiştir.

    Alan Adı

    Açıklaması

    Zorunlu mu?

    ApplicationId

    PushServer üzerinde uygulamanız oluşturulduğunda size iletilen ApplicationId değeri.

    Evet

    SecretKey

    PushServer üzerinde uygulamanızın oluşturulması için oluşturup yetkili kişiye bildirdiğiniz SecretKey değeri.

    Evet

    SenderID

    SenderID parametresi Google Cloud Console’da oluşturulan projenin id’sidir. Örnek aşağıdaki url’deki kalın yazıyla belirtilmiş parametre

    https://cloud.google.com/console#/project/838411778420

    Evet

    CustomId

    Token dışında bir tanımlayıcı ID ile register olarak, yine bu ID üzerinden push atılabilmesini sağlayan parametre. (Ör: bir cihazı birden çok authenticate olmuş kullanıcının kullanbildiği durumlarda, kullanıcının değişmesi durumunda yeni bir kayıt göndermek üzere kullanılabilir)

    Hayır

    GenericParameter

    Kayıt olurken kullanılacak herhangi bir tanımlayıcı parametre.

    Hayır

    Kayıt Olma veya Var Olan Kaydı Silme

    NotificationManager nesnesine gerekli ayarlar sağlandıktan sonra Push bildirimleri alabilmek için yapılması gereken ilk işlem kayıt olmaktır. Push Server’a kayıt olmak içinNotificationManager.register metodu çağırılmalıdır. Register metodu içine RegistrationResultCallback tipinde bir listener almaktadır. Bu listener’ın 3 tane metodu bulunmaktadır. Bunlar onSuccessonFailed ve onAlreadyRegistered metodlarıdır. Örnek kullanım aşağıdaki gibi olmalıdır. Bu metotların adında anlaşılacağı üzere başarılı kayıt işlemi gerçekleştiği zaman onSuccess metodu, başarısız bir kayıt işlemi gerçekleştiği zaman onFailed metodu, bu uygulama önceden kayıt olmuşsa onAlreadyRegistered metodu çalışmaktadır.

    Not: onSuccess ve onFailed metotları RegistrationResultCallback dışındaki bütün listenerlarda ortak olan metotlardır. Bu metotların adı onSuccess ve onFailed metotlarıdır. Bütün işlemlerde hata alınması durumunda detaylı bilgi onFailed metodunun parametresi olan Exception sınıfınıngetMessage metodundan alınabilir.

    try {
    NotificationManager.getInstance().register(registrationResultCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
    }
    
    private RegistrationResultCallback registrationResultCallback = new RegistrationResultCallback() {
    @Override
    public void onSuccess(RegistrationResult result) {
    Log.v(TAG, "Registration success");
    Toast.makeText(getActivity(), "Registration success", Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "Registration failed:" + e.toString());
    Toast.makeText(getActivity(), e.toString(), Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onAlreadyRegistered() {
    Log.v(TAG, "Application already registered");
    Toast.makeText(getActivity(), "Application already registered", Toast.LENGTH_LONG).show();
    }
    };Kayıt olmanın yanısıra bir uygulama push bildirimleri almayı kesmek de isteyebilir. Bunu yapmak içinNotificationManager.unregister metodunun çağrılması gerekmektedir. Unregister metoduUnregistrationResultCallback tipinde bir listener almaktadır. Bu listenerın 2 tane metodu bulunmaktadır.try {
    NotificationManager.getInstance().unregister(unRegistrationResultCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
    }
    
    private UnRegistrationResultCallback unRegistrationResultCallback = new UnRegistrationResultCallback() {
    public void onSuccess(UnregistrationResult result) {
    Log.v(TAG, "Unregistration success");
    Toast.makeText(getActivity(), "Unregistration success:", Toast.LENGTH_LONG).show();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "Unregistration failed:" + e.getMessage());
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
    }
    };

    Bildirim Kategori Listesinin Alınması

    Push Server uygulama bazlı Push bildirim kategorileri oluşturma yeteneği sağlamaktadır. Bu yetenek sayesinde uygulamalar sadece belirli kategorilerdeki bildirimlere abone olabilmektedir. Örneğin bir haber uygulamasında kullanıcı sadece Spor kategorisindeki bildirimleri almak isteyebilir. Uygulamada mevcut kullanılabilir bildirim kategori listesini almak için NotificationManager.getCategories metodu çağırılmalıdır. Bu metotda parametre olarak GetCategoriesCallback tipinde bir listener almaktadır. Örnek bir kod bloğu aşağıdaki gibidir.

    try {
    NotificationManager.getInstance().getCategories(getCategoriesCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    private GetCategoriesCallback getCategoriesCallback = new GetCategoriesCallback() {
    @Override
    public void onSuccess(CategoryListQueryResult result) {
    Log.v(TAG, "getCategoriesCallback success");
    result.getCategories();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "getCategoriesCallback fail:" + e.getMessage());
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    };

    Bu callback sınıfının onSuccess metodunda bulunan CategoryListQueryResult sınıfının içindeCategory listesi tutulmaktadır. Category listesine getCategories metodu ile ulaşılabilir. Category sınıfının içinde sadece category’nin ismi bulunmaktadır. Bu isme de getCategoryName metodu ile ulaşılabilir.

    Bildirim Kategorisine Abone Olma

    Uygulama için tanımlanmış bildirim kategori listesi alındıktan sonra kullanıcıya bu kategorilere abone olabileceği bir arayüz sunabilirsiniz. Kullanıcıyı herhangi bir kategoriye abone yapmak içinNotificationManager.subscribeToCategory metodunu çağırmalısınız. Metot parametre olarakCategory nesnesi ve SubscribeToCategoryResultCallback tipinde listener almaktadır. Örnek bir kod bloğu aşağıdaki gibidir.

    try {
    NotificationManager.getInstance().subscribeToCategory(new Category("spor"), subscribeToCategoryResultCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    private SubscribeToCategoryResultCallback subscribeToCategoryResultCallback = new SubscribeToCategoryResultCallback() {
    
    @Override
    public void onSuccess(CategorySubscriptionResult result) {
    Log.v(TAG, "SubscribeToCategoryResultCallback success desc:" + result.getResultDescription());
    Toast.makeText(getActivity(), "Category subscription successful", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "SubscribeToCategoryResultCallback fail desc:" + e.getMessage());
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    };

    Başarılı cevap olarak CategorySubscriptionResult tipinde bir nesne dönmektedir. İsteğin açıklamasıgetResultDescription metodundan alınabilir.

    Bildirim Kategorisi Aboneliğini Kaldırma

    Kullanıcının herhangi bir bildirim kategorisine olan aboneliğini kaldırmak içinNotificationManager.unSubscribeFromCategory metodu çağırılmalıdır. Metot parametre olarakCategory nesnesi ve UnsubscribeFromCategoryResultCallback tipinde listener almaktadır. Örnek bir kod bloğu aşağıdaki gibidir.

    try {
    NotificationManager.getInstance().unsubscribeFromCategory(getItem(position), unsubscribeFromCategoryResultCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    private UnsubscribeFromCategoryResultCallback unsubscribeFromCategoryResultCallback = new UnsubscribeFromCategoryResultCallback() {
    
    @Override
    public void onSuccess(CategorySubscriptionResult result) {
    Log.v(TAG, "UnsubscribeFromCategoryResultCallback success desc:" + result.getResultDescription());
    Toast.makeText(getActivity(), "Category unsubscription successful", Toast.LENGTH_SHORT).show();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "UnsubscribeFromCategoryResultCallback fail desc:" + e.getMessage());
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    };

    Başarılı cevap olarak CategorySubscriptionResult tipinde bir nesne dönmektedir. İstediğin açıklaması getResultDescription metodundan alınabilir.

    Bildirim Kategorisi Aboneliklerinin Alınması

    Kullanıcın abone olduğu bildirim kategorilerinin listesini almak içinNotificationManager.getCategorySubscriptions metodunu çağırmalıdır. Metot parametre olarakGetCategorySubscriptionCallback tipinde bir listener almaktadır. Örnek bir kullanım aşağıdaki gibidir.

    try {
    NotificationManager.getInstance().getCategorySubscriptions(getCategorySubscriptionCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    
    private GetCategorySubscriptionCallback getCategorySubscriptionCallback = new GetCategorySubscriptionCallback() {
    
    @Override
    public void onSuccess(CategoryListQueryResult result) {
    Log.v(TAG, "getCategoriesCallback success");
    result.getCategories();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "getCategoriesCallback fail:" + e.getMessage());
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    };

    Bu fonksiyon da GetCategories metodu ile aynı tipte nesne dönmektedir. Metot geri dönüşleri aynıdır.

    Bildirim Geçmişinin Alınması

    Kullanıcıya o zamana kadar iletilmiş olan bildirim listesini almak içinNotificationManager.getNotificationHistory metodu çağırılmalıdır. Metot parametre olarak sayfa sayısı ve bir sayfadaki bildirim sayısını alır. Aşağıdaki örnek kod bloğunda her biri 15 bildirimden oluşan bildirim geçmişi sayfalarından ikinci sayfa isteniyor. Ayrıca 3. bir parametre olarak daGetNotificationHistoryResultCallback tipinde bir listener almaktadır. Örnek kod bloğu aşağıdaki gibidir.

    try {
    NotificationManager.getInstance().getNotificationHistory(2, 15, getNotificationHistoryResultCallback);
    } catch (Exception e) {
    e.printStackTrace();
    Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
    
    private GetNotificationHistoryResultCallback getNotificationHistoryResultCallback = new GetNotificationHistoryResultCallback() {
    
    @Override
    public void onSuccess(NotificationHistoryResult result) {
    Log.v(TAG, "GetNotificationHistoryResultCallback success");
    notificationHistoryResult.getNotificationMessages();
    }
    
    @Override
    public void onFailed(Boolean connectionError, Exception e) {
    Log.v(TAG, "GetNotificationHistoryResultCallback fail");
    }
    };

    Bu listenerın onSuccess metoduna NotificationHistoryResult tipinde bir nesne vardır. Bildirimlere bu nesne üzerindeki getNotificationMessages metodu ile ulaşabilirsiniz. Bu metot NotificationMessagetipinde bir liste döner. NotificationMessage sınıfının içinde bulunan getContent() metodu ile atılan push mesajının içeriğine ulaşabilirsiniz. getId metodu ile atılan push mesajının id’sine ulaşabilirsiniz.getCreatedDate metodu ile atılan push mesajının ne zaman atıldığı bilgisine ulaşabilirsiniz.getPayloadParams metodu ile push mesajında gönderilen payLoad parametrelerine ulaşabilirsiniz. Bu metot cevap olarak bir HashMap döner. Bu HashMap tipindedir. Atılan key ve value değerlerine aşağıdaki şekilde ulaşılabilirsiniz.

    HashMap<String, String> payloadParameters = notificationHistoryResult.getNotificationMessages().get(position).getPayLoadParams();
    if (payloadParameters != null) {
    String keyValuePairs = "";
    for(Entry<String, String> entry : payloadParameters.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
    keyValuePairs += key + ":" + value + "\n";
    }
    }

    Kullanım Klavuzu

  2. 101 i yazmadım direk 201 den girelim başka günler inş 301 401 ileri seviye paylaşırız

     

    Android Cihazlar ve Android İşletim Sistemi Üzerine Genel Bilgiler

     

    Android, akıllı telefon ve tablet PC gibi mobil cihazlar için geliştirilmiş Linux tabanlı bir işletim sistemidir. Google tarafından desteklenen Open Handset Alliance organizasyonu tarafından geliştirilmiştir. Google ilk yatırım masraflarını karşıladığı Android’i 2005 yılında satın aldı. Şirket daha sonra Apache Lisansı altında Android’in açık kaynak (open source) olarak dağıtımını yaptı. Bugüne kadar Android’in çeşitli sürümleri farklı adlarla piyasaya sürüldü:

    • Android 1.0 (API level 1)
    • Android 1.1 (API level 2)
    • Android 1.5 Cupcake (API level 3)
    • Android 1.6 Donut (API level 4)
    • Android 2.0 Eclair (API level 5)
    • Android 2.0.1 Eclair (API level 6)
    • Android 2.1 Eclair (API level 7)
    • Android 2.2–2.2.3 Froyo (API level 8)
    • Android 2.3–2.3.2 Gingerbread (API level 9)
    • Android 2.3.3–2.3.7 Gingerbread (API level 10)
    • Android 3.0 Honeycomb (API level 11)
    • Android 3.1 Honeycomb (API level 12)
    • Android 3.2 Honeycomb (API level 13)
    • Android 4.0–4.0.2 Ice Cream Sandwich (API level 14)
    • Android 4.0.3–4.0.4 Ice Cream Sandwich (API level 15)
    • Android 4.1 Jelly Bean (API level 16)
    • Android 4.2 Jelly Bean (API level 17)
    • Android 4.3 Jelly Bean (API level 18)
    • Android 4.4 KitKat (API level 19)
    • Android L (API level 20)

    Google Play

    Google tarafından yönetilen Google Play, Android cihazların uygulama ve oyunlara ulaşabileceği çevrim içi bir markettir. Buradan, çoğu zaman geliştiricilerin tercihleri doğrultusunda ülkelere göre yayınlanan oyun ve uygulamalara erişilebilir. Android cihazlar üzerinden Google Play uygulamasıyla ya da Google Playsitesinden erişilebilir.

     

    google-playe-uygulama-yukleme

     

    Google Play, üzerinde yer alan uygulamaları kategorilerine göre ayırarak kullanıcılara sunar. Ana sayfasında en çok satılan ve talep gören uygulamalara yer verir. Ayrıca "Editörün Seçimi" gibi yeni bir kategorilendirmeye daha da gitmiştir. Yukarıdaki resimde yer alan arama kutusuna ilgilendiğimiz bir konuyu ya da geliştirici firma adını girerek kolayca arama yapabiliriz. Bir uygulamayı seçtiğimizde aşağıdaki uygulama detay sayfasına yönlendiriliriz.

     

    google-playe-uygulama-yukleme

     

    Bir uygulamanın ayrıntı sayfasına girdiğimizde, uygulamanın adını, hemen altında geliştiricisini görürüz.Yükle düğmesine tıkladığımızda uygulama Google hesabımıza bağlı Android cihazlarımıza gönderilir.

    Uygulama detay sayfasında aşağı doğru ilerlediğimizde, uygulama içi görselleri bulabiliriz. Görsellerin hemen altında geliştirici tarafından yapılan açıklamalara ve uygulamayı indiren kullanıcıların yorumlarını görme şansımız var. Kullanıcılar çok çeşitli amaçlarla da yorumlar yapabilirler.

     

    google-playe-uygulama-yukleme

     

    Detay sayfasında daha aşağıya indiğimizde uygulamaya dair ek bilgiler karşımıza çıkar. Burada uygulamanın hangi sürümde olduğu, boyutu ve hedef Android sürümleri görülebilir. Burada yer alan geliştirici bağlantı sayfaları ise, geliştiriciye ulaşabilmeniz açısından, geliştirici tarafından paylaşılan sayfalardır. Sayfanın sonunda ise benzer uygulamalar ve bu geliştiricinin diğer uygulamalarına da bakabilirsiniz.

     

    google-playe-uygulama-yukleme


    Android Mimarisi ve Sistem Özellikleri

    Android, Open Handset Alliance, Google ve özgür yazılım topluluğu tarafından geliştirilen bir mobil işletim sistemidir. Bu işletim sisteminin parçaları çekirdek (kernel), sistem kütüphaneleri, uygulama geliştirme çatıları (frameworks) ve yerleşik temel uygulamalardan oluşmaktadır. Android mimarisi aşağıdaki gibidir.

    ekran_resmi_2014-03-22_11.50.26.png

    Bu yapıyı ayrı ayrı incelemek geliştirici adaylarının üzerinde çalıştıkları yapıyı anlamaları bakımından faydalı olacak.

      İşletim Sistemi (Linux çekirdek)

    ekran_resmi_2014-03-22_11.51.45.png

    Android, Linux çekirdeğini (kernel) kullanır. Linux çekirdeğine Android için eklenen kod parçacıkları ve kütüphaneler Genel Kamu Lisansı'na sahipken, diğer bileşenler üretici firmalarına kendi kapalı ROM'larını oluşturmalarına izin verecek ama yine özgür bir şekilde Apache Lisansı ile dağıtılmaktadır.

    Linux çekirdeğinin doğrudan kaynak sağladığı yapılar security (güvenlik), memory ve process (hafıza ve süreç) kontrolü, dosyalama ve bağlantı için I/O işlemleri ve cihaz sürücüleridir. Çekirdekte Android için özelleştirilmiş başlıca alanlar ise güç kontrolü, paylaşılan hafıza, low memory killer ve süreçler arası iletişim içindir. 

      Kütüphaneler (Libraries)

    ekran_resmi_2014-03-22_11.53.02.png

    Mimarinin diğer önemli yapısı olan kütüphaneler bölümünde C ile yazılmış sistem kütüphaneleri, internet tarayıcısı (browser) motorlarının çalışması için Webkit, görüntüleme kontrolünü yapan Surface Manager, grafik işlemleri için OpenGL, ses ve video işlemleri için gereken Media Freamwork, veri yapıları kontrolü ve düzenlenmesi için SQLite gibi yapılar bulunur. 

     

    Android Runtime 

    ekran_resmi_2014-03-22_11.54.17.png

    Bu bölüm Linux çekirdeğindeki kütüphanelerin java ile birleştiği bölümdür. İki önemli bileşeni vardır. Bunlar temel Java kütüphaneleri ve Dalvik Sanal (virtual) Makinesi'dır. Bu yapılar hakkında detaylı bilgileri ilerleyen eğitim içeriklerinde bulacaksınız. Burada Dalvik Sanal Makinesi'ne kısaca değinelim:

    • Dalvik Sanal Makinası: Uygulamalar Dalvik Sanal Makinesi tarafından çalıştırılır. Temel çalışma mekanizmasını anlamak Android projelerinin yaşam döngüsünü anlamak açısından önemlidir. Java ile yazılan uygulamalar alınır, Java kodları derlenerek bytecode dosyalarına çevrilir. Bu dosyalar dex dosyasına çevrilerek Dalvik Sanal Makinesi'nin çalıştıracağı şekle sokar. Dalvik ortamı düşük işlemci gücü, az RAM ve sınırlı batarya koşullarına göre tasarlanmıştır. 

    Not: Dalvik her ne kadar mobil odaklı ve kısıtlı kaynaklarla çalışabilecek bir yapı olsa da, bazı alanlarda iyileştirilmesi gereken ve zamanın şartlarına göre tasarlanmış, artık yavaş yavaş eskiyen bir runtime. Google bunun farkında olduğu için yaklaşık 2 yıldır yeni bir runtime üzerinde çalışıyor, ismi ART yani Android Runtime. Dalvik'ten çok farklı bir bir çalışma yapısına sahip olan ART hakkında ayrıntılı bir blog yazısına buradanulaşabilirsiniz.

    Eğitimin ilerleyen bölümlerinde uygulama çatılarını (application freamwork) adım adım anlatacağız. Şimdiden herkese bu yeni dünyada başarılar diliyoruz :).


    ADT Geliştirme Ortamı'nın Oluşturulması

     

    Android uygulamaları çoğunlukla Java dili kullanılarak geliştirildiğinden, Google uygulama geliştirme platformu olarak Java dünyasında oldukça popüler bir IDE olan Eclipse platformunu yeğlemektedir. Üzerine eklenen modüllerle Java dünyasında neredeyse her türlü uygulama geliştirme çatısına (framework) destek veren Eclipse, Google’ın Android eklentisi kullanılarak Android uygulama geliştirmeye uygun hale getirilebilir.

     

    NOT : Eclipse sürekli güncellenen bir IDE olduğundan bu sayfada yer alan ekran görüntüleri ve sürüm numaraları güncel sürümlerden farklılık gösterebilir.

     

     

    İşletim sisteminize uygun Eclipse tabanlı Android Geliştirme Ortamını (ADT) buradan indirebilirsiniz.

     

    adtdownload.png

     

    Not: Eclipse IDE'sinin ilk açılışı biraz zaman alabilir. Bu açılış ve kullanım süreleri, özellikle emülatör kullanımı sırasında, bilgisayarınızın donanımına bağlıdır.

     

    http://developer.android.com/sdk/index.html


    Android NDK

     

    Android Native Development Kit (NDK), Android platformuna Native uygulamalar yazabilmeniz için hazırlanmıştır. Android platformunda uygulamalar büyük çoğunlukta Java dili kullanılarak yazılır ancak Android belirli oranda Native (C/C++) desteği de sağlamaktadır. Bu yüzden ilerleyen anlatımlar için indirilmesi zorunlu değildir.

    Android eğitimlerinde daha çok Java tabanlı uygulama geliştirmeyi tercih etmemizin en önemli nedeni native uygulama geliştirmenin Android platformunda görece zorluğu ve performansa etkisidir. Android NDK, C kütüphaneleriyle yazılmıştır. ARM ve x86 platformlarını destekler. Derleyici olarak GCC kullanır. Java ortamından farklı olarak Android NDK, komut satırı araçlarıyla çalışır ve hata ayıklama, oluşturma ve çalıştırma işlemleri de yine komut satırı üzerinden yürütülür. Bazı üçüncü parti araçlarda ise Eclipse ve Visual Studio eklentileri bulunmaktadır.
     

    android-ndk

    IDE'nin Tanıtılması ve Android Bileşenlerinin Eklenmesi

     

    Bir önceki derste nasıl yüklendiğini gördüğümüz Eclipse IDE'sini biraz daha yakından inceleyelim:

     

    Eclipse yüklenmesi tamamlandıktan sonra Google’ın Android geliştiriciler için yazdığı Eclipse eklentilerini kurmamız gerekir. Bunun için Help > Install New Software yolunu kullanarak eklenti yükleme penceresini açtıktan sonra Add... seçeneğine tıklayalım. Karşımıza aşağıdaki pencere gelecektir.

    Burada yeni yükleme yapmak için isim (Name) kısmına “Android”, konum (Location) kısmına ise https://dl-ssl.google.com/android/eclipse/ adresini girelim.

    eclipse-cdt-3.png

     

    OK tuşuna bastıktan sonra Eclipse belirtilen adresi sorgulayacak ve bulduğu paketleri listeleyecektir.

    p3_0.png

     

    Burada bütün paketleri seçip Next düğmesine tıklayalım. Sonraki pencerede bizden lisans onaylamamız isteyecek.

    3.-idenin-tanitilmasi

     

    Gerekli onayı verdikten sonra Finish düğmesine tıklayarak yüklemeyi başlatalım. Bu aşamada dosyalar indirilmeye başlar. Dosyalar yüklendikten sonra Eclipse’ı tekrar başlattığımızda üst pencerede Android ile ilgili iki simge görüntülenir.

    3.-idenin-tanitilmasi

     

    Soldaki simgeye tıklayarak Android SDK Manager’ı başlatalım ve bize gerekli Android paketlerini indirmeye hazırlanalım.

    p7_0.png

     

    Bu ekranda bugüne kadar Google ve Android projesini destekleyen firmalar tarafından yayınlanmış her türlü geliştirme aracına erişebiliriz. Listeden uygulamamıza uygun Android versiyonunu seçerek indirme işlemini başlatabiliriz. Dilersek birden fazla sürüm yükleyerek uygulamamızın değişik Android sürümlerinde nasıl çalışacağını da takip edebiliriz. Gerekli paketleri seçtikten sonra Install Packages seçeneğiyle yüklemeyi başlatabiliriz.

    Yükleme bittikten sonra Android Virtual Device Manager adlı uygulamayı başlatarak kendimize bir sanal cihaz tanımlamamız gerekir.

    Tanımlayacağımız sanal cihaz, seçtiğimiz işletim sistemi sürümüne göre bir Android işletim sistemi başlatır ve gerçek bir cihazda çalışır gibi bütün fonksiyonları denememize olanak tanır. Bu ekrandaki Newseçeneğiyle yeni bir cihaz tanımlayalım.

     

    addnewvirtual.png

     

    Yukarıda yer alan örnekte, Android 4.1 sürümünü kullanan ve 512 MB harici diske sahip bir sanal makina tanımladık. Ayarlarımız bittiğinde Create AVD düğmesine tıklayarak sanal makinamızı yaratalım.

    p9_0.png

    Sanal cihazı tanımladıktan sonra Start düğmesine basarak artık Android Emülatörü'nü başlatabiliriz. (Android Emülatör'ünün çalışması ilk seferde uzun sürebilir.)

    p10_0.png


    DDMS

     

    DDMS (Dalvik Debug Monitor Server) bilgisayarınıza bağlı bulunan Android cihazları ve o anda çalışan simulatörleri takip edebileceğiniz bir Eclipse eklentisidir. DDMS sayesinde cihaz üzerinde çalışan uygulamaları görüntüleyebilir, cihazın dosya sistemine müdahale edebilir, sahte konum gönderebilir ve ekran görüntüleri alabiliriz. DDMS ekranına ulaşmak için Eclipse içinde Window > Open Perspectiveseçeneğinden DDMS’yi seçmeniz gerekir.

    p13_0.png

    DDMS ekranının sol tarafında o anda bilgisayara bağlı bulunan cihazları görüntüleyebiliriz. Ekranın alt tarafında ise daha önceki bölümde anlattığımız LogCat konsolu bulunmaktadır. Sağ üst kısımda cihaza ait detaylı bilgileri alacağımız bir ekran yer alır. Şimdi bu ekranları inceleyelim.

    Cihaz ekranında listelenmiş cihazlardan birine tıkladığımızda cihazın üzerinde o anda çalışan bütün uygulamaları ve bu uygulamaların tükettiği bellek miktarını görüntüleyebiliriz. Burada bir uygulamayı seçtiğimizde yukarıdaki düğmeleri kullanarak uygulamayla ilgili çeşitli kontrollere erişebiliriz. Buradaki düğmeler;

    • Debug : Eğer çalışan uygulamanın açık kodu Eclipse’de mevcutsa uygulamayı bu seçenekle debugmodunda çalıştırabiliriz. Bu şekilde uygulamanın adım adım çalışmasını kod üzerinden takip etme olanağına sahip oluruz.
    • Update Heap : Uygulamanın harcadığı bellek tüketimini görmemizi sağlar.
    • Dump HPROF File : Uygulamanın CPU ve bellek tüketimini gözlemlememizi sağlayan bir dosya oluşturur. 
    • Cause GC : Bir Garbage Collection başlatır.
    • Stop Process : Uygulamayı durdurur.
    • Update Threads : Çalışan Thread bilgisini günceller.
    • Screen Capture : Cihazdan ekran görüntüsü almamızı sağlar.

     

    Diğer ekrandaki tablara da göz atalım:

    • Threads : Uygulamada o anda çalışan bütün Thread’leri görmemizi sağlar. Bunun için gözlemlemek istediğimiz uygulamayı seçip Update Threads butonuna tıklamamız gerekir. Böylece çalışanThread’ler listelenecektir.

     

    5.-ddms

     

    • Heap : Uygulamanın bellek tüketimini ayrıntılı bir şekilde görmemizi sağlar. Tüketimini görmek istediğimiz uygulamayı seçerek Update Heap düğmesine tıklayıp ardından Cause GC düğmesine tıklayarak bellek tüketimini görüntüleyebiliriz.

     

    p15_0.png

     

    • Allocation Tracker : Bu seçenek uygulamanın çalışması sırasında belleğin ne derece tükedildiğini gerçek zamanlı izlememizi sağlar.
       

    p16_0.png

     

    • Network Statistics : Android 4.0 ve sonrası sürümlerin yüklü olduğu cihazlarda kullanabileceğimiz bu özellik sayesinde işletim sisteminin yaptığı bütün internet kullanım trafiğini görüntüleyebiliriz.
    • File Explorer : Cihazın dosya sistemine buradan göz atabiliriz. Her türlü uygulama dosyası ve diğer dosyalar listelenecektir.
    • Emulator Control : Cihaz üzerinde gerçekleştirmek istediğimiz sanal işlemleri burada yapabiliyoruz. Örneğin cihaza sanal bir SMS atabilir, GPS’e koordinat gönderebilir, hatta bir simulatöre telefon çağrısı gelmiş görüntüsü sağlayabilirz. Bu şekilde uygulamalarınızdaki fonksiyonları deneme şansı elde ederiz.
       

    p17_0.png


    Logcat

     

    LogCat, Android Developer Tools ile birlikte gelen ve uygulamaların log çıktılarını okuyup incelemenize yarayan basit bir geliştirici aracıdır. Uygulamanızın kodunda, geliştirme aşamasında akışı takip etmek için sadece sizin görebileceğiniz notlar bırakabilirsiniz. İşte bu notlara, log denir.

    Eclipse'te LogCat'e ulaşabilmek için LogCat isimli view'ı etkinleştirmiş olmalısınız. Bir uygulamayı derleyip çalıştırmak istediğinizde eğer LogCat bölmesi açık değilse Eclipse size açma önerisinde bulunacaktır. Elle açıp kapatmak için Window > Show View > Other menüsüne girip açılan pencereden LogCat'i seçmelisiniz:

    EdzAJHK.png

    Bu işlemin ardından LogCat bölmesi Eclipse'in alt tarafına yerleşecektir.

     

    Basit log işlemi

    Bir Android uygulamasında, hata takibini kolaylaştırmak için notlar/loglar bırakırken basitçe

    Log.i("Bilgi""Internet baglantisi kuruldu");

    ya da

    Log.w("Dikkat""Parola uc kez yanlis girildi");

    gibi metotlar kullanılır. Log.i'nin (info) bilgi, Log.w'nin (warning) tehlike mesajı gereken durumlarda kullanılması, LogCat bölmesinde fark edilmelerini kolaylaştırır. Bunun dışında da log türleri vardır:

    • (Log.v) verbose: gerekli gereksiz tüm bilgiler
    • (Log.d) debug: hata ayıklamaya dönük, metodun ya da sınıfın gidişatına ilişkin bilgiler
    • (Log.e) error: hata oluşan yerlere ilişkin bilgiler

    Şimdi uygulamamızın içinde bir bölme işlemi yapalım ve tüm değerleri biz verelim. Bir sayıyı 0'a bölmeye çalışacağımız zaman hataya sebep olacağımız için bunu da log mesajlarından takip edelim:

    //Dosya Adı: MainActivity.java
     
    @Override
    public void onCreate(Bundle savedInstanceState){
     
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
     
    Log.i("LogDeneme", "Kullanıcı arayüzü oluşturuldu.");
     
    try {
    int c = 7 / 0;
    } catch (Exception hata) {
    Log.e("LogDeneme", "Ciddi bir hata oluştu: " + hata.getLocalizedMessage());
    }
    }

    Bu uygulamayı çalıştırdığımızda LogCat bölmesi şöyle görünecektir:

    b8NUuGK.png

    Gördüğünüz gibi farklı seviyelerdeki log mesajları farklı renklendirildi. Bilgi içeren log mesajları yeşil, hata içerenler kırmızı renkte yazı tipiyle ekrana basıldı.

    Soldaki Saved Filters bölümüyle log mesajlarını dinlemek istediğimiz uygulamaya veya etiketlere has süzgeçler oluşturup, sadece o kurallara uyan mesajların görüntülenmesini sağlayabilirsiniz. Uygulamanın çalıştığı cihaza ilişkin koşulsuz tüm mesajları görebilmek için "All messages" öğesine tıklayabilirsiniz.

    Sağdaki bölmedeki ayrıntılara değinelim:

    • Level: Log mesajlarının seviyesini içeriyor. Info, Error, Debug ve Warning seviyesinde farklı mesajlar farklı renklerde gösteriliyor.
    • Time: Verilen log mesajının tam olarak ne zaman verildiğini gösteren sütun.
    • PID: Çalışan uygulamanın process ID değeri. Bu ID değeri Android'te uygulamaya has bir değerdir.
    • TID: Uygulamaya bağlı çalışan thread ID değeri. Bazen bir uygulamanın içinde birden fazla thread (iş parçacığı) ile işlem yapılır ve farklı thread'lere ait log mesajları bu sütuna bakarak anlaşılır.
    • Application: Uygulamanın paket adının yazılı olduğu kısım. Birden çok uygulamaya ait log mesajlarının incelendiği durumlarda kullanışlı olur.
    • Tag: Geliştirici kişinin hata mesajına verdiği etiketin yer aldığı sütun. Verdiğiniz log mesajını sınıflandırmak için etiketleri kullanabilirsiniz.
    • Text: Log mesajının metin kısmı.

     

    Süzgeçler

    Eclipse, com.logcatdeneme paket adına sahip uygulamamız için kendisi bir süzgeç oluşturdu. + ve - düğmelerinin yanındaki düzenleme düğmesine bastığımızda süzgeçle ilgili ayrıntıları görebiliyoruz:

    TAnuXHn.png

    Bu süzgece göre com.logcatdeneme uygulaması için verbose seviyesinde tüm log mesajları LogCat bölmesinde görülebilir.

     

    Kullanışlı düğmeler

    LogCat bölmesinde log mesajlarıyla ilgili birkaç yardımcı düğme vardır:

    oXInRLR.png

    • Export: Bölmede gördüğünüz log mesajlarınızı bir dosyaya kaydetmenize yarar.
    • Clear Log: O an ekrana basılmış tüm log mesajlarını temizler.
    • Scrool Lock: Varsayılan olarak yeni log mesajları geldikçe gösterilir. Kaydırma kilidini kaldırarak istediğiniz mesaja, uygulama çalışırken ve log mesajları yağmaya devam ederken daha kolay odaklanırsınız.

    Bazen de ekrana basılan log mesajlarını hızlıca bir şarta göre süzmek istersiniz:

    Pgpwjwv.png

    Hızlıca paket adına, etikete veya process id'ye göre sorgular yazıp çıktısını görebilirsiniz.

    LogCat, Eclipse ile Android uygulamaları geliştirirken sıkça kullandığınız bölümlerden bir tanesi olacaktır. Bir uygulamanın çalıştırılması sırasında oluşan hataları izlemek, gerektiğinde onları paylaşmak için kullanılan yararlı bir bileşendir.


    Android Projesi Oluşturmak

     

    Detaylı Anlatım

    Android eklentileri yüklendikten sonra artık yeni bir Android projesi oluşturabiliriz. Bunun için File > New > Other seçeneği ile çıkan listeden Android Application Project seçeneğini seçiyoruz.

    android-projesi-olusturmak


    Bir sonraki ekranda projemizle ilgili çeşitli özellikleri girmemiz gerekecek. Buradaki seçeneklere göz atacak olursak;

    • Application Name : Uygulamanın adı. Cihazda uygulama adı olarak bu değer görünür.
    • Project Name : Projenin adı. Bllekte proje dosyaları bu klasör altında görünür.
    • Package Name : Uygulamanın dosyalarının saklanacağı paket adı. Bu uygulamaya özgü benzersiz bir ad olmalıdır. Aynı zamanda Google Play hesabında uygulamanızı tanımlayacağından oldukça önemlidir.
    • Build SDK : Projenin derleneceği Android versiyonunu belirtir.
    • Minimum Required SDK : Projenin çalışacağı en alt Android işletim sistemi versiyonunu belirtir.
       

     android-projesi-olusturmak


    Next düğmesine bastıktan sonra sizi aşağıdaki gibi bir ekran karşılayacaktır. Burada aslında çok fazla detaya girmeye gerek yok. Varsayılan olarak seçilen seçeneklerin işaretli kalmasında fayda var:

    • Create custom launcher icon: Uygulamanızın logosunu belirleyeceksiniz.
    • Create activity: Uygulamanızın yazımınza başlamadan önce size otomatik olarak bir activity hazırlayacak.
    • Mark this project as a library: Projeyi kütüphane olarka belirle.
    • Create Project in Workspace: Projenizi mevcut çalışma alanınızda açar.
    • Working Sets: Projenizi çalışma alanlarına ekleyebilirsiniz.
       

    halil


    Next düğmesine basarak bir sonraki adıma geçtiğimizde uygulamanın simgeleriyle ilgili seçenekler gelecektir. Burada simgeyi bir imaj dosyasından yükleyebileceğimiz gibi Text seçeneği ile kendimiz de oluşturabiliriz. Buradaki diğer seçenekler;

    • Trim Surrounding Blank Space: Yazılı metinle çerçeve arasındaki boşluğu ayarlamanızı sağlar.
    • Foreground Scaling: Metnin yerleştirileceği bölgeyi belirler.
    • Shape: Burada simgeyi daire ya da kare olarak tanımlayabilirsiniz.
    • Background Color: İkonun arka plan rengini belirler.
    • Foreground Color: İkonun metin rengini belirler.
       

     halil


    Burada gerekli ayarları yaptıktan sonra Next düğmesiyle bir sonraki aşamaya geçelim. Bu aşamada bizden uygulamanın tasarımıyla ilgili bilgiler istenecektir. Tabletleri hedefleyen bir uygulamanız varsaMasterDetailFlow tipini seçmenizi tavsiye ederiz. Bu şekilde

  3. Apple’ın mobil işletim sistemi iOS’un yeni sürümünü çıkarmasıyla birlikte, daha eski modellerde performans kaybı gözlendi.

    ios8-guncellemesi.jpg

    Eğer iPhone 4S kullanıyorsanız, Apple’ın yeni çıkardığı iOS 8 güncellemesini hemen kurmamak sizin için daha iyi bir seçenek olabilir. Çeşitli kaynaklardan gelen veriler, iPhone 4S’in bu yeni sürümde pek iyi performans sergilemediğini ortaya koyuyor. Apple bu yeni işletim sistemini ürettiği mobil cihazların pek çok modeliyle uyumlu olarak tanımlıyor. Ne var ki uyumluluk her zaman tek başına yeterli olmuyor.

    Apple’ın iPhone 4S telefonu yaklaşık 3 sene önce piyasaya çıktı ve geçtiğimiz günlerde resmen satıştan kaldırılana kadar da popülerliğini korudu. Ne var ki 3 yıl teknoloji dünyasında hayli uzun bir zaman ve bu arada mobil işlemci teknolojileri de hayli yol aldı. Nitekim şirketin iPhone 4S modelinde kullandığı A5 işlemcisi, yeni çıkan iPhone 6 serilerinde kullanılan A8 işlemcisinin ancak yarısı kadar işlem gücüne sahip.

    Tabii sorun tek başına işlemci gücü de değil, aradan geçen zamanda yeni işlemcilerin içine pek çok komut seti ve teknoloji girdi. Sonuçta mobil işlemcilerin son derece karmaşık ve çok sayıda parçayı üstünde barındıran System-on-Chip (SoC) donanımlar olduğu unutulmamalı. Bunun sonucu olarak iPhone 4S sırf yarıdan fazla performans kaybına uğramakla kalmıyor. Üstüne bir de yeni işletim sisteminin sunduğu Touch ID, AirDrop ve Open GL ES 3.0 gibi özellikleri de çalıştırmak mümkün olmuyor.

    Bu yüzden iPhone 4S kullanıcıları en azından bir süre daha, tabii Apple zorunlu kılmaz ise, iOS 8 güncellemesini almayı ertelemeleri iyi olacaktır. Oluşan performans kayıplarının telefonu sinir bozacak ölçüde yavaşlatmasına Apple’ın bir ara güncelleme ile bir nebze olsun çare bulması mümkün olabilir. Öte yandan, iPhone 4S’in iki nesil geride kaldığını da dikkate almak ve belki de yakın bir zamanda telefon değiştirme ihtimalini hesaba katmakta da fayda var. Sonuçta hangi marka olursa olsun, üç yaşındaki bir telefonun yeni yazılımlar karşısında yavaşlaması biraz da kaçınılmaz bir olgu.

    Bence ios 8 iphone 4s için düzenlenebilir ios 7 yeni çıktığında iphone 4s 'i mahfetmişti ama sonradan düzenlendi

    alıntıdır

  4. Casper Pişmanlıktır. 2 senedir aldım garanti bittikten 1 hafta sonra bilgisayar bozuldu açtım leptobu içine daldım :D aç durmadan ctrl alt del yap benmkide öyle bi sorun olmuştu 

  5. Hackintosh Yedekleme Ve Geri Yükleme
    ge%C3%A7i%C5%9F-yard%C4%B1mc%C4%B1s%C4%B Hackintosh sisteminizi olası çökmelere karşı hangi programlarla yedekleyip geri yükleyebileceğinizi bu yazımızda bulabilirsiniz.

    Hackintosh’unuza ince ayar çekerken veya yeni bir sürüme güncellerken çeşitli hatalarla hatta sistem çökmeleriyle karşılaşabilirsiniz. Bu tip durumlar yeni kurulumlarda çok önemli olmasa da, bir süredir Hackintosh kullananlar için çokça verinin ve ayarın kaybedilmesi anlamına geliyor. Bu tip durumlara karşı hazırlıklı olmanın yolu ise aynı PC’de olduğu gibi yedekleme ve geri yüklemeden geçiyor.

    Yedekleme

    Bir süredir kullandığınız ve içinde bolca dosyanızın bulunduğu sisteminizin yedeğini almak, ileride yaşanabilecek sorunlara karşı alınabilecek en temel önlemdir. Aşağıdaki yazılımlar sayesinde Hackintosh’unuzun yedeğini alabilir, gerektiğinde aşağıda listeleyeceğimiz yazılımlarla geri yükleyebilirsiniz.

    Time Machine

    time-machine.jpg

    Apple’ın Mac sistemlere varsayılan olarak yüklediği Time Machine, normal koşullarda elle sisteminizin yedeğini almanızı sağlıyor. Yine Apple’ın bir diğer hizmeti Geçiş Yardımcısı ile son derece uyumlu çalışan Time Machine, kolay kullanımı sayesinde yedekleme işlemiyle fazla uğraşmak istemeyen kullanıcılar için birebir. Ancak Time Machine, işin detaylarına girmek isteyen kullanıcılara hayal kırıklığı yaratabilir. Time Machine’de eksik olan özellikleri ise Time Machine Editor adlı ücretsiz yazılımla kapatabilirsiniz.

    SuperDuper

    superduper_full.jpg

    Time Machine’in aksine boot edilebilir yedek imajları yaratabilen SuperDuper’ın ücretli ve ücretsiz sürümleri bulunmakta. Ücretsiz sürüm neredeyse bütün yedekleme özelliklerine sahip ancak zamanlanmış yedeklemeler için ücretli sürümünü satın almanız gerekmekte. SuperDuper ile oluşturduğunuz imajları Clover bootloader’da görebilir, Boot OSX from Backup seçeneği ile yedek imajınızı boot edebilirsiniz.

    Carbon Copy Cloner

    Carbon-Copy-Cloner.jpg

    SuperDuper gibi boot edilebilir yedekleme imajı oluşturabilen Carbon Copy Cloner, tam donanımlı bir yedekleme yazılımı isteyenler için birebir. Tabii tüm bu özellikleri 40$ gibi bir fiyata satın almanız gerekmekte. Aynı SuperDuper gibi Apple’ın Geçiş Yardımcısı ile mükemmel uyumda çalışan Carbon Copy Cloner, SuperDuper’a göre daha profesyonel bir yedekleme yazılımı isteyenler güçlü bir alternatif.

    Rsync Komutu

    Eğer yukarıdaki iki yazılıma para vermek istemiyorsanız alternatif olarak rsynckomutunu terminalde kullanabilirsiniz. Bu komut sayesinde, aynı yukarıdaki yazılımlar gibi tamamen boot edilebilir bir imaj yaratabilirsiniz. Rsync ile yedekleme yapmak için şu adımları izleyin:

    1. Disk İzlencesi’ne girin ve yedekleme yapacağınız diski Mac OS Genişletilmiş (Günlüklü) olarak formatlayın. Diskinize Yedek ismini verin.
    2. Terminali açarak şu komutu girin: sudo rsync -aAHXv /* /Volumes/Yedek –exclude={“.Spotlight-*/”, “.Trashes”, “/afs/*”, “automount/*”, “/cores/*”, “/dev/*”, “/Network/*”, “/private/tmp/*”, “/private/var/run*”, “/private/var/spool/postfix/*”, “/private/var/vm/*”, “/Previous Systems.localized”, “/tmp/*”, “/Volumes/*”, “/.Trash”}
    3. Eğer sistem-exclude bölümünde bir bölümün bulunmadığına dair bir hata veriyorsa o bölümü komut satırından silin.
    4. Eğer sistemi birden fazla defa yedekleyecekseniz, önceki yedeği -delete komutu ile silin.
    Geri Yükleme

    Olası bir sistem çökmesi durumunda üzülmeniz gereken bir şey kalmadı zira yedeklerimizi başarıyla aldık. Şimdi sıra bu yedekleri geri yüklemede. Apple’ın Geçiş Yardımcısı, yukarıda belirttiğimiz gibi neredeyse bütün yazılımlar ile alınan yedekleri desteklemekte. Bu sayede tek yapmanız gereken temiz bir OS X kurulumundan sonra Geçiş Yardımcısını çalıştırmak ve yedek imajınız ile birlikte verilerinizi geri yüklemek.

    Clover İle Geri Yükleme

    Apple’ın Geçiş Yardımcısına alternatif olarak Clover boot satırını kullanabilirsiniz. Ancak bu yöntem sadece SuperDuper veya benzeri yazılımlar ile boot edilebilir yedek imajı aldığınızda çalışmakta. Sistemizinizi yedekleme yaptığınız diskten boot edin. Disk İzlencesini kullanarak sisteminizin yüklü olduğu disk bölümünü formatlayın. Ardından komut satırına şunu girin:

    sudo rsync -aAHXv /* /Volumes/<Yedekleri yükleyeceğiniz disk bölümünün adı> –exclude={“.Spotlight-*/”, “.Trashes”, “/afs/*”, “automount/*”, “/cores/*”, “/dev/*”, “/Network/*”, “/private/tmp/*”, “/private/var/run*”, “/private/var/spool/postfix/*”, “/private/var/vm/*”, “/Previous Systems.localized”, “/tmp/*”, “/Volumes/*”, “/.Trash”}

     

    Bu aşamadan sonra sisteminizi normal bir şekilde ana sistem bölümünden boot edebilirsiniz.

     

     

  6.  

     

    Apzni Gönderebilirsin İster Özelden İster Buraya Ekle Yardımcı Olalım Sana...

     

    Programda Eksik Gördüğüm Yerleri Sana Söyleyeyim

     

    Öncelikle Bu Tarz Programda Taşınma Olayını Kapatman Gerek

     

    Bunun İçin;

     

    Project >Settings Bölümüne Girip Appearance Sekmesinin Altındaki Şu Bölümünden Tiki Kaldırmalısın.

     

    pre_1411059551__1.png

     

    Daha sonra Aynı Bölümün Biraz Altında Bulunan TaskBar Bölümünde Şu Ayarı Yapmanı Tavsiye Ederim

     

    pre_1411059702__2.png

     

    Bunları Yaparsan Daha İyi Olur...

     

     

    Senin Verdiğin Programı Tek exe Olarak Şu Şekilde Yaptım İşini Görür Mü???

    https://yadi.sk/d/41i1x7mPbYRtX
    

    mesaj atmıştım bakarmısın ?

  7. start shell:RecycleBinFolder şu kodu nasıl çalıştırabilirim butona tıklayınca


    Veya Bunları

    shell:RecycleBinFolder

    (Depending on the OS and filesystem, the directory may be $Recycle.binRecycled, or Recycler.)

    • To open the Recycle Bin window (showing deleted objects on all drives):

      C:\> start ::{645FF040-5081-101B-9F08-00AA002F954E} 
      or
      C:\> start shell:RecycleBinFolder 
      or
      C:\> start C:\$Recycle.bin 
       

    • To list deleted objects on a specific drive:

      C:\> dir /s/a <driveletter>:\$Recycle.Bin

    • explorer ::{645FF040-5081-101B-9F08-00AA002F954E}

    • RUN
      CMD
      CD \$Recycle.Bin
    •  
  8.  

    AutoPlay Media Studio 8.3.0.0 | 50.1 MB

    http://ul.to/d7blkino
    http://rg.to/file/10d41d6d1d7f56b7297a6b0ddf0c5c26/

    AutoPlay Media Studio 8.3.0.0 Portable | 61.5 MB

    http://ul.to/tabwqd65
    http://rg.to/file/1a24fb320e1b1ce544fc0d293db6c17e/AutoPlay_Media_Studio_8.3.Port.rar.html

     

    bunun portablesi dahamı büyük oluyor :D

    • Like 1
  9. Ayarlar Mobil ağ erişim noktası düzenle yeni ekle
     
    Ad : Vodafone Live 
    APN : vflive 
    Proxy : 212.65.136.226 
    Bağlantı noktası : 9401 
    Kullanıcı adı : vodafone 
    Parola : vodafone 
    Sunucu : Ayarlanmamış 
    MMSC : Ayarlanmamış 
    MMS proxy’si : Ayarlanmamış 
    MMS bağ. nokt. : Ayarlanmamış 
    MMS protokolü : WAP 2.0 
    MCC : 286 
    MNC : 02 
    Kimlik doğrulama türü : Yok (ya da PAP veya CHAP seçiniz) 
    APN tipi : default 
    Tekrar menü tuşu/kaydet de geri çık bu apn'yi seç. Vodafone Live seçtiysek Handleri açın ayar sayfası gelecek şöyle doldurun söylemediğim yerleri boş bırakın show start tikini kaldırın
    remove port tiki kaldırın
    Aşağılara in Backquery : cep.vodafone.com.tr
    Proxy Type : Real Host
    Proxy Server : m.vodafone.com.tr
    en aşağı in save de gir sınırsız bedava internetin keyfini çıkar 
     
     
    İyi Kullanımlar.
     
    rar deil siteye girişte şifre isterse umutbsl 
     
     
    not:sadece internete girer google play store felan girmez facebook vs sayfaları java tarzındadır android tarzında deil 
    dipnot:kontürsüz girin yoksa sömürür faturalıysanız hiç girmeyin baya bi fatura gelir
    indirme hızı en az 150 kb/s dir ben diyarbakırdayım 450 kb/s indirme yapıyorum
    endipnot:Petrol Buldum  :D  :D  :D  :D  :D  :D 
     
    Yorumda Allternatif Vermeyin Link Kırılırsa Söyleyin Upload Ederim
    Çalışmıyor Açılmıyor vs Boş Yorumlarınızı Kendinize Saklayın denedim çalışıyor ve şu an bunu kullanıyorum
    Ayriyeten Rar Arşiv Olarak Ekte Verdim
  10.  

    win 8 yazacaktım pardon oraya. ben bu bilgisayara 500 yakın format atmışımdır en sonda 1 ay önce maxtor ile hdd sıfırladım kökten sonra bi sistem kurayım dedim böle oldu anlamadım gitti

     

    bende böyle bi sorunla karşılaşmıştım masaüstü pcde benimki windows xp kurarken tüm bölümleri silip yeni bölüm oluşturdum kurulmayınca hdd sıfırladım bidahada işletim sistemi kurmayınca teknik servise verdim onlar bişey yaptı bayada bi kazık oldu :D

×
×
  • Create New...