Jump to content

umutbsl

Üye
  • Posts

    235
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by umutbsl

  1. Winrarı Satın Alan Varmıdır Accep :D

    1. Show previous comments  4 more
    2. 8506furkan

      8506furkan

      7zip yeterli deilmi ucretsiz diye biliyorum onu/

    3. MrRush

      MrRush

      7zip her işi görür...

    4. canavar123

      canavar123

      7zip le exe açan bile var :D

  2. sizce en iyi videoya efekt verme programı hangisi

    1. 8506furkan

      8506furkan

      adobe after effects

  3. Hangi Kasap Kesecekmiş Şaşarım Boynuzu Vurup Kaçarım :D

    1. master

      master

      On numara duvar yazısı olmuş :)

  4. Hangi Kasap Kesecekmiş Şaşarım Boynuzu Vurup Kaçarım :D

  5. öyle bişey demiyorum bilinen uygulamaları yüklerseniz sorun olmaz diyorum
  6.   telefonu formatla virüs programları herzaman çalıştığından şarjı çok yer yükleme şarjı kökleme bitir telefon kapansın kurusun şarj sonra 8 - 10 saat şarjda bırak (eğer marketten bilinen uygulamaları indiriyorsan virüs programına gerek yok)
  7. win 8 ken windowsun kendi yedeklemesini yapmıştım hddyi ssd ye yedeklemiştim sonra yedeği yükleyince  çoğu program çalışmadı/geç açılmaya başladı
  8. Millet İşi Gücü Bayramı Bırakıp Windows 10 la Uğraşıyor

    1. Show previous comments  1 more
    2. umutbsl

      umutbsl

      ona format atmayı öğret :D

    3. Rancho
    4. canavar123

      canavar123

      Banada biri modifiye öğretse :D kendim öğreniyom :D

  9. bizde neden daha windows 9 çıkmadan 10 un wallpaperlerini yapıyorlar diyorduk :D(3.5 ay önce)

  10. son durum nedir orjinal sayfa linkleri nedir atabilirmisiniz ismi w10 mu w9mu
  11. bunu çok önceden denemiştim galiba putty den bağlanmıyor
  12. 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 ApplicationId, SecretKey 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 onSuccess, onFailed 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
  13. Siteme Üye Olanların Geçici Maille Üye Olmasını İstemiyorum Wordpresste Ve Mybb De Nasıl Engelleyebilirim
  14. 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 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. 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. 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. 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. 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) 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) 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 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. 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. 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. OK tuşuna bastıktan sonra Eclipse belirtilen adresi sorgulayacak ve bulduğu paketleri listeleyecektir. Burada bütün paketleri seçip Next düğmesine tıklayalım. Sonraki pencerede bizden lisans onaylamamız isteyecek. 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. Soldaki simgeye tıklayarak Android SDK Manager’ı başlatalım ve bize gerekli Android paketlerini indirmeye hazırlanalım. 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. 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. 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.) 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. 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. 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. 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. 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. 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: 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: 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: 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: 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: 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. 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. 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. 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. 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
  15. umutbsl

    Mavi Ekran

    Eğer Home Premium kaldırırsa orjinal home premium yükle 
  16. http://www.vatanbilgisayar.com/lenovo-z5070-core-i5-4210u-17ghz-8gb-1tbsshdd-156-2gb-w81-notebook.html
  17. Acer E1-570G Lenovo E530c NZY7JTX  Dell Latitude E5530 Lenovo ThinkPad E530 
  18. reg kayıtlarını yedekle format at sonra tekrar kur
  19. tnctr.com dolar hilesi :D

    1. umutbsl

      umutbsl

      5 papel basıp admine yolluyoruz :D

    2. gozyası

      gozyası

      Adam üşenmemiş yapmış :/

×
×
  • Create New...