Kayıt Ol

Giriş

Şifremi Kaybettim

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Giriş

Kayıt Ol

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi adipiscing gravdio, sit amet suscipit risus ultrices eu. Fusce viverra neque at purus laoreet consequa. Vivamus vulputate posuere nisl quis consequat.

Android Bluetooth Bağlantısı – 2

Merhaba arkadaşlar,

Bluetooth bağlantısı yazı dizisinin ilk bölümünde sizlere bluetooth desteği olan android cihazlarda bluetooth nasıl aktif hale getirilir, nasıl kapatılır özelliklerinden bahsetmiştim. İlk bölüme buradan ulaşabilirsiniz. Bluetooth bağlantısı yazı dizisinin ikinci bölümünde sizlere cihazınızı diğer cihazlar tarafından bulunabilir hale getirmeyi, bulunabilir cihazları listelemeyi ve diğer cihazlarla eşleştirmeyi anlatacağım.

Not: Bu yazı içerisindeki kod parçalarının anlamlı olabilmesi için birinci bölümdeki kodların incelenmesi gerekmektedir.

Android cihazlarda diğer bluetooth cihazlara sunucu olarak destek verecek bir yazılım yapıyorsak cihazımızın diğer cihazlar tarafından görünebilir olması gerekmektedir. Aksi takdirde diğer bluetooth cihazlar tarafından bizim cihazımız görünmediği için arada bir bağlantı kurmak mümkün olmayacaktır. Cihazımızı görünür yapmak için aşağıdaki kod parçasından faydalanabiliriz.

Stardart olarak 120 saniye olan bulunma süresini yukarıdaki kod parçasında,

satırıyla birlikte 300 saniyeye çıkarttık. Bu parametre 0 ile 3600 aralığında istediğiniz değeri alabilir. Bu aralık dışında bir sayı girdiğinizde değer otomatik olarak 120 saniye olarak değer alacaktır. Değeri 0 yaptığınız takdirde diğer cihazlar tarafından bulunabilirliği sürekli olarak açık hale getirmiş olursunuz.

Bulunabilirliği aktif hale getirdikten sonra durum bilgisi onActivityResult methodu ile alınabilir. Bunu basit olarak örneklememiz gerekirse;

Yukarıdaki kodu arayüz tasarımımızda bir CheckBox ile kontrol edebilir veya aynı şekilde ToggleButton kullanabiliriz.

Cihazımızı bulunabilir hale getirdikten sonra, diğer cihazları bulup listeleme işlemini gerçekleştirebiliriz. Bunun için aşağıdaki kod parçasından faydalanabiliriz. Öncelikle arayüz tasarımında bir ListView ekleyerek bulunan cihazların bu ListView’de listelenmesini sağlayabiliriz.

Arayüze ListView ekledikten sonra tekrar MainActivity dönüp btListView içerisini doldurmak için gerekli işlemleri yapabiliriz.

Bu adımları gerçekleştirdikten sonra uygulamayı cihazımızda çalıştırıp tarama işlemini başlattığımızda etrafta bulunan ulaşılabilir bluetooth cihazların isimleri MAC adreslerini listeleyecektir.

ListView içerisinde listelenen cihazlarla bağlantı kurabilmek için bir cihazın sunucu(server) olarak servis açıp bağlantı beklemesi gerekmekte, diğer cihazında yine sunucu(server) veya kullanıcı(client) olarak bağlantı isteği göndermesi gerekmektedir. Bu işlemler için iki ayrı Thread sınıfı oluşturarak bu işlemleri Threadler üzerinden gerçekleştirebiliriz.

Sunucu(Server) bağlantısı için gerekli kodlar aşağıdaki gibidir.

Bu Thread’i MainActivity sınıfından başlanmak için;

Kullanıcı(Client) bağlantısı için gerekli kodlar ise;

Bu Thread’i MainActivity sınıfında başlatmak için;

kodu kullanılabilir. Yazılan uygulamada bağlantının başarılı bir şekilde sağlanması için UUID değerlerinin aynı olmasına dikkat edilmelidir. Yukarıdaki yapıyı bir cihaz sunucu(server) başka bir cihaz yine sunucu(server) veya kullanıcı(client) olacak şekilde kurabilir ve bu şekilde sunucu socket açıp istek beklemeye başladığında diğer cihaz tarafından bağlantı isteği yollanabilir. Bu şekilde iki cihaz arasında bağlantı sağlanacağı gibi eşleştirme işlemide gerçekleştirilmiş olacaktır.

Örnek kodun tamamına GitHub üzerinden erişebilirsiniz.

Konuyla ilgili her türlü soru ve yorumlarınızı aşağıdaki form aracılığı ile bana ulaştırabilirsiniz.

Yazar Hakkında

Java & Android & iOS Developer, elektronik imza, mobil imza java kriptoloji konusunda uzman, teknoloji bağımlısı...
  • kaan

    Teşekkürler elinize sağlık ancak
    The application may be doing too much work on its main thread.
    sorunun yaşıyorum bunu nasıl çözebilirim?

    • Eren Başaran

      Merhaba,
      Bu problem tüm işlemleri arayüz thread’inde yapıldığı zaman ortaya çıkabilir. İşlemleri daha küçük parçalara ayırarak UI Thread yapısından ayırırsanız problem çözülecektir. Bu hatayı sadece bu kodlar için değil UI Thread yapısı altında bir çok işlem yaptığınız tüm projelerde alabilirsiniz.

  • yüksel

    MERHABA..EMEĞİNİZE SAĞLIK..ÇOK TESEKKÜR EDERİM..git hub dan programı yükledim HC 05 görüyor,fakat baglantıyı kuramadım..(mit app invertor 2 de bağlantıyı sağladım)…eksiğim nerededir.?..ilgine şimdiden tesekkürler..iş hayatın da başarılar..

  • Abdullah

    Bluetooth ile veri alış verişi nasıl yapabilirim?

    • Mustafa

      onActivityResult içerisini aşağıdaki gibi düzenleyip. bir dosyayı transfer edebilirsiniz. (alıntıdır)

      if(resultCode==DISCOVER_DURATION&&requestCode==REQUEST_BLU){
      Intent intent=new Intent();
      intent.setAction(Intent.ACTION_SEND);
      intent.setType(“text/plain”);
      File f = new File(Environment.getExternalStorageDirectory(),”/dosyaismi.txt”);
      intent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(f));

      PackageManager pm= getPackageManager();
      List appsList=pm.queryIntentActivities(intent,0);

      if(appsList.size() > 0){
      String packageName=null;
      String className=null;
      boolean found=false;

      for(ResolveInfo info:appsList){
      packageName=info.activityInfo.packageName;
      if(packageName.equals(“com.android.bluetooth”)){
      className=info.activityInfo.name;
      found=true;
      break;
      }
      }

      if (!found){
      TOASTMSG(“Bluetooth haven’t been found”);
      }else{
      intent.setClassName(packageName,className);
      startActivity(intent);
      }
      }
      }else{
      TOASTMSG(“Bluetooth cancelled”);
      }
      }