7 Mart 2017 Salı

Android Localization Activity

Merhabalar,



Çoğumuz projelerimizde birden fazla dil desteği sağlıyoruz. Bunun için herkes kendisine göre bir yöntem geliştirmiş bulunmakta. Ben genelde Amerikayı yeniden keşfetme taraftarı değilim eğer kütüphane gerçekten istendiği gibi iş yapıyorsa :)

Sizelere bahsedeceğim kütüphane "Android-LocalizationActivity" projenizde istediğiniz kadar dil desteği vermenizi sağlamaktadır.

Ben kendimde nasıl kullanmışsam size öyle bir BaseActivity hazırladım ve aşağıdaki koddan BaseActivitye erişebilirsiniz.

Fakat öncelikle main/res içerisinde hangi dili kullanmak istiyorsanız ona uygun klasörü oluşturmanız gerekmektedir.

Klasör oluştururken kullandığımız isimleri aşağıdaki linkten seçebilirsiniz. Ben bu listedekileri kullanmaktayım.
https://github.com/barisatalay/AndroidLocalizationExample/blob/master/tools/LanguageSource.json

Örneğin almanca için bir dil klasörü oluşturacaksak adı "values-de" olmalıdır ve klasörün içerisinde "strings.xml" dosyası olmalıdır.

Projeyi Github içerisinede yüklüyorum isteyenler Google Play üzerinden uygulamanın demosuna bakabilirler ve githubdan örnek projeyi inceleyebilirler.

Demo: https://play.google.com/store/apps/details?id=com.atalay.androidlocalizationexample
Github: https://github.com/barisatalay/AndroidLocalizationExample

İyi çalışmalar dilerim.


Gradle eklenmesi gereken: compile 'com.akexorcist:localizationactivity:1.1.2'


public class BaseActivity extends AppCompatActivity {
    private LocalizationDelegate localizationDelegate = new LocalizationDelegate(this);
    private String activeLangCode = "";

    @Override
    public void onCreate(Bundle savedInstanceState) {
        localizationDelegate.onCreate(savedInstanceState);
        super.onCreate(savedInstanceState);

        //Aktif olan dil kodunu alıyoruz.
        activeLangCode = (PreferenceManager.getDefaultSharedPreferences(this.getApplicationContext())).getString(getString(R.string.pref_general_language),"en");

        setLanguage(activeLangCode);
    }

    @Override
    public void onResume() {
        super.onResume();
        localizationDelegate.onResume();
    }

    /*
    * Kütüphaneye aktif olan dil kodunu gönderiyoruz ve
    * kütüphane uygulamamızın aktif olan Activitysini yeniden oluşturuyor
    * bu sayede string resourceler gerekli dilden çekiliyor.
    */
    public final void setLanguage(String language) {
        localizationDelegate.setLanguage(language);
    }

    public final void setLanguage(Locale locale) {
        localizationDelegate.setLanguage(locale);
    }

    public final void setDefaultLanguage(String language) {
        localizationDelegate.setDefaultLanguage(language);
    }

    public final void setDefaultLanguage(Locale locale) {
        localizationDelegate.setDefaultLanguage(locale);
    }

    public final String getLanguage() {
        return localizationDelegate.getLanguage();
    }

    public final Locale getLocale() {
        return localizationDelegate.getLocale();
    }

}

20 Şubat 2017 Pazartesi

Android Recyclerview Disable Scrolling

Bu işlem için RecyclerView nesnesinin LayoutManager özelliğinden yardım alacağız.



Öncelikle CustomLayoutManager adında yeni bir sınıf oluşturuyoruz ve aşağıdaki gibi tasarlıyoruz.

public class CustomGridLayoutManager extends LinearLayoutManager {
    private boolean isScrollEnabled = true;

    public CustomGridLayoutManager(Context context) {
        super(context);
    }

    public void setScrollEnabled(boolean value) {
        this.isScrollEnabled = value;
    }

    @Override
    public boolean canScrollVertically() {
        return super.canScrollVertically() && isScrollEnabled;
    }
}


RecyclerView için LayoutManager oluştururken yeni hazırladığımız sınftan extend ediyoruz.

RecyclerView main_dashboard;
CustomGridLayoutManager layoutManager = new CustomGridLayoutManager(this.getApplicationContext());
layoutManager.setOrientation(LinearLayoutManager.VERTICAL);
layoutManager.scrollToPosition(0);

main_dashboard.setLayoutManager(layoutManager);
main_dashboard.setHasFixedSize(true);


layoutManage.setScrollEnabled(true/false) şeklinde istediğinizde scroll olayının erişilebilirliğini değiştirebilirsiniz.

11 Şubat 2017 Cumartesi

Android Bluetooth Cihaz Listeleme Sorunu

Merhabalar,

Başıma gelen bir olay sonrası fark ettiğim bir durumdur. Açıklayayım.

Android Marshmallow versiyonundan önce AndroidManifest.xml içerisinde bluetooth izinlerini tanımlamak yeterliydi.

Fakat Marshmallow ile beraber uygulama çalışırken izin isteme istemi geldi bunun için bluetooth izilerini lazım olduğunda istememiz gerekmektedir ve bunun yanı sıra bluetooth cihazlarını tarayabilmek için ek olarak "android.permission.ACCESS_FINE_LOCATION" izinide gerekmektedir. Eğer bu izni sağlamassanız bluetooth cihazları listeleyemiyorsunuz.

İyi çalışmalar.

3 Aralık 2016 Cumartesi

Android activity başlangıçta klavye kapatma

Merhalar,

Kendime notlarımı tekrar yazma gereği duymaya başladım. İş yoğunluğu, günlük hayatta başımıza gelenler derken aklımızdan birçok şey uçabiliyor onların önüne geçmek için sizlere de tavsiyem Online veya Offline notlar tutmanız.

İyi çalışmalar Dilerim..



AndroidManifest.xml dosyası içerisinde hangi activitynin açılış anında herhangi bir inputa konumlanarak klavye açılması engellemek istiyorsanız aşağıdaki örnekteki kodu ekleyiniz.

<activity android:name=".View.QuickSale.QuickSaleActivity"
android:theme="@style/AppTheme.NoActionBar"
 android:windowSoftInputMode="stateHidden"/>

29 Eylül 2016 Perşembe

Unity Visual Studio Debug Plugin

Visual Studio Attach to Unity


Merhabalar,

Unity'de script kısmını visual studio ile yazan arkadaşlar farkadecekler ki debug yapamıyoruz. 

Bunun için bir plugin buldum aşağıda Visual Studio versiyonlarına göre linkleri vericem uygun olanı kendinize indirebilirsiniz. 

Visual Studio 2010 Tools for Unity
Visual Studio 2012 Tools for Unity
 Visual Studio 2013 Tools for Unity
Visual Studio 2015 Tools for Unity   

Gerekli olan plugini kurduktan sonra altaki resimde gördüğünüz gibi "DEBUG>>Attach Unity Debugger" seçeneği geliyor.

Buna tıklayıp Unity üzerinden play tusuna basarak Debug işlemlerinizi yapabilirsiniz.


 

14 Haziran 2016 Salı

PHP Base64 Image Write To Folder

$entry = base64_decode("pqWD7tQXnye4pE6mnUA");// Here your Base64 codes

$image = imagecreatefromstring($entry);
     
$directory = $_SERVER['DOCUMENT_ROOT'];//Server Root directory
     
$directory = $directory. '/Mangalar/testo.jpeg';
     
imagejpeg($image, $directory);

imagedestroy ( $image );

17 Mayıs 2016 Salı

Android Multiple User Chat with NodeJs

Merhabalar,

Can sıkıntısından denemeler yaparken kullandığım temel bir yapıyı sizlerle paylaşmak istiyorum.

Bu projede NodeJs nasıl kullanılır anlatamayacağım için, direk dosyaları sizle paylaşma gereği duyuyorum.

Proje, portumuz üzerinden servere  bağlanan bütün clientlerin tek bir kanal üzerinden birbirleriyle json yardımı ile haberleşmesi üzerine çalışmaktadır. Projeyi temel düzeyde tuttuğum için çok aşırı profsyonel birşey beklemektense herkes üzerine koyup daha komplike bir yapı haline getirebilir.

Json yardımı ile haberleşirken gönderilebilecek bilgiler;

  • Kullanıcı Adı,
  • Kullanıcı Id,
  • Mesaj Tarihi,
  • Mesaj İçeriği
  • Mesajı gönderen kişinin Ip Adresi,
  • Mesajı gönderen kişinin IMEI.
Proje Linki:  http://www.mediafire.com/download/w9yb9cojgmxi3js/AndroidMultiChatWihNodeJs.rar

Örnek Görüntü