Sayfalar

21 Nisan 2012 Cumartesi

Yeni Android Uygulamam "Sesli Not" Android Market'te




Her ne kadar Android Market kabuk değiştirip Google Play olsa da henüz benim dilim alışmadı. Ben market demeye devam edim de nasıl olsa anlaşılıyor. Neyse, gelelim uygulamaya. Geçen seneki stajdan beri ciddi bir android işiyle ilgilenmemiştim. Şimdilerde yine sarmaya başladı, kodlamaya bi başladımmı bırakamıyorum. Ayrıca market istatistiklerini takip etmek de çok zevkli :) .
"Sesli Not" en kaba tabirle ses kaydedip bu kayıtlara isim vermenizi ve aynı sayfadan dinleyebilmenizi sağlıyor. Yüklü olarak gelen ses kayıt uygulamasında kaydı dosyalar içinde nereye attı bu deyip dosyaları karıştırmak büyük işkence oluyordu.
Bu uygulamada ilk kez reklam işine de girdim. Hatta şimdiden birkaç sıfır nokta küsür dolar kazandım bile :) . Buı şekilde devam ederse 50 sene içinde bu uygulamayla bir servet elde edebilirim :). En azından nasıl Admob  reklam eklenir onu öğrendik. Uygulamayı şuradan indirip deneyebilirsiniz.






13 Nisan 2012 Cuma

Android İçin Ses Kaydetme Kodu

 
Kodu AudioRecorder.java isimli bir dosyaya koyup kullanmaya başlayabilirsiniz. Kodu aldığım orjinal yerin linki de içinde duruyor yalnız orjinali hata veriyordu. Hatayı düzeltip kamuoyuna saygıyla sunuyorum. (Bunu kullandığım bir uygulama hazırlıyorum şu sıralar, yakında markette olur inşaAllah. )




import java.io.File;
import java.io.IOException;

import android.media.MediaRecorder;
import android.os.Environment;

/**
 * @author <a href="http://www.benmccann.com">Ben McCann</a>
 */
public class AudioRecorder {

  MediaRecorder recorder;
  final String path;

  /**
   * Creates a new audio recording at the given path (relative to root of SD card).
   */
  public AudioRecorder(String path) {
    this.path = sanitizePath(path);
    
    System.out.println("PATHimiz: "+ this.path);
  }

  private String sanitizePath(String path) {
    if (!path.startsWith("/")) {
      path = "/" + path;
    }
    if (!path.contains(".")) {
      path += ".3gp";
    }
    return Environment.getExternalStorageDirectory().getAbsolutePath() + path;
  }

  /**
   * Starts a new recording.
   */
  public void start()  {
      
      try {
      
      recorder = new MediaRecorder();
      
      
    String state = android.os.Environment.getExternalStorageState();
    if(!state.equals(android.os.Environment.MEDIA_MOUNTED))  {
        throw new IOException("SD Card is not mounted.  It is " + state + ".");
    }

    // make sure the directory we plan to store the recording in exists
    File directory = new File(path).getParentFile();
    if (!directory.exists() && !directory.mkdirs()) {
      throw new IOException("Path to file could not be created.");
    }

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(path);
    recorder.prepare();
    recorder.start();
    
      } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }catch (Exception ex)
        {
            System.out.println("Beklenmedik hata "+ ex);
            ex.printStackTrace();
        }
    
    
    
    
  }

  /**
   * Stops a recording that has been previously started.
   */
  public void stop()   {
      
      try {
      
    recorder.stop();
    recorder.reset();
    recorder.release();
    
        } catch (Exception ex ) {
            System.out.println("HATAMIZ: " + ex );
            ex.printStackTrace();
             
        }
    
  }
}


Örnek bir kullanım:

String KAYIT_KLASORU = "/kayitlar/";

 AudioRecorder kayitci = new AudioRecorder(KAYIT_KLASORU +"dosyaismi");

kayitci.start();  // kayıdı başlatmak istediğiniz yerde çağırınız.


 kayitci.stop(); // kayıdı bitirmek istediğiniz yerde çağırınız. Bundan sonra eğer bir hata oluşmamışsa (cihazda harici kart yoksa mesela hata oluşur)  harici kartta "kayıtlar" klasörü içinde "dosyaismi.3gp" isimli bir ses dosyası oluşur. Her kayıtta bu dosyanın üzerine yazılmaması için dosya ismini dinamik olarak değiştirmeniz gerekiyor tabii ki.

3 Şubat 2012 Cuma

x86 ve x64 ne değildir?

Bu terimler bir işlemcinin çekirdek sayısını belirtmemektedir. Yani x64 çift, x86 tek çekirdekli işlemci anlamına gelmemektedir. Ne anlama geldiği bu yazının konusu değil, şuradan ve buradan öğrenilebilir :). Kısaca işlemcinin mimarisi ve buna bağlı olarak 32-bit veya 64-bit register'lara sahip olup olmamakla alakalı bir durum.  

20 Ağustos 2011 Cumartesi

Staj Projem Android Market'te

2011 yazında yaptığım stajda android oyun geliştirme üzerinde çalıştım. Stajımı Globsis firmasının oyun bölümünde yaptım. Bu bölümde Jarbull markasıyla java tabanlı mobil oyunlar üretiliyor.

6 haftalık staj sonunda geliştirdiğim oyuna şuradan ulaşabilirsiniz. Bug Buster ismini koyduğumuz oyunda etrafta dolaşan böckleri değişik silahlar kullanarak yok etmeye çalışıyoruz.

Android Market konusunda da çift laf etmek lazım. Hala Türkiye'den ücretli uygulama yayınlamak desteklenmiyor. Bu da android dünyasına yatırım yapmayı düşünen şirketlerimizin aklını karıştırıyor.


5 Nisan 2011 Salı

2. Android Uygulamamız: Statistic Keeper

Merhabalar. CENGaverler yeni Android uygulamalarını piyasaya çıkarmaya tüm hızıyla devam ediyor.  3 kişilik The Eye of The Tiger altgrubumla birlikte geliştirdiğimiz bu uygulama  gündelik istatistiklerinizi saat - tarih bilgisiyle birlikte bir rapor halinde görmenizi sağlıyor. Ayrıca sayaç olarak da kullanılabilirliği vardır. Uygulamayı buradan indirebilirsiniz.  Bu uygulamayla birlikte öğrendiklerimiz:
  • SQLite ile veri tabanı oluşturma, kullanma
  • Uygulamalara menü ekleme
  • Liste oluşturma 
  • Dialog oluşturma
  • Bildirim notları gösterimi
Daha kullanılabilitesi yüksek uygulamalarla buluşmak üzere :) 
Uygulamayı buradan indirebilirsiniz.

3 Mart 2011 Perşembe

Android Uygulama Geliştirme Ortamının Ubuntu'ya kurulumu

Merhabalar. Okulda arkadaşlarla kurduğumuz gayri resmi CENGavareler computer club olarak kendimize android uygulama geliştirmeyi hedef olarak aldık. Heyecanlı maceramız başlıyor.

Ubuntu 10.10 a Android uygulama geliştirme ortamını kurmak için gerekli linkler ve açıklamalar:

Önce Applications -> Ubuntu Software Center 'ı açıyoruz. Sonra Edit -> Software Sources ı tıklıyoruz. Gelen pencerede Other Software kısmına gelip
Canonical Partners maddesine tik atıyoruz.

Sonra şuradaki comutları tek tek terminalde giriyoruz.

Güncelleme yap

sudo apt-get update  

sudo apt-get upgrade

Klasör aç

mkdir ~/android

Eclipse kur
sudo apt-get install eclipse

 Android SDK indir. Tıklayınız : http://developer.android.com/sdk/index.html

Terminalden indirilen klasore gelip aşağıdaki komutları girin. Yalnız indirilen versiyon farkından dolayı taşınacak dosyanın adı farklı olabilir. Ona dikkat etmek gerek.

mv android-sdk_r10-linux_86.tgz ~/android/


cd ~/android/

tar xzvf android-sdk_r10-linux_86.tgz

gedit ~/.bashrc

Açılan sayfanın en altına aşağıdaki satırı ekleyip kaydedip kapatın.

export PATH=${PATH}:/home/matt/android/android-sdk-linux_86/tools

Şimdi de Eclipse için ADT Plugin kurulması gerekiyor. Onun için de şu tutorial ideal. 
 ECLİPSE İÇİN EKLENTİ KURULUMU: http://developer.android.com/sdk/eclipse-adt.html#installing



Bunları kurduktan sonra örnek bir Hello world applicationunun yemek tarifini vermişler. Onu da bir an önce yapsak güzel olacak.

Referanslar :
http://digitizor.com/2010/02/02/how-to-install-android-development-environment-in-ubuntu/

6 Ocak 2011 Perşembe

C++ Ödevlerim (3 adet)

2010/2011 öğretim yılının ilk döneminde Data Structures (CENG213) dersinde verilen ödevler ve çözümlerimi paylaşıyorum.

1. ödev & kod- indir
Bu ödev C++'ın temellerini öğretmeye yönelik olarak verildi.  Nesneye yönelik programlama tarzına alıştırıyor.


2. ödev & kod- indir
Bu ödevde linked-list (bağlı liste) veri yapısını kullanarak bir radyo host simulasyonu yapıyoruz. Şarkı çal, reklam arası, mola verme işlemleri ve işlem-tarih dökümü çıkarma fonksiyonları bulunuyor.

3. ödev & kod- indir
İşte zurnanın zort dediği yer. Tree (binary değil) veri yapısını kullanarak bir sistemin mevcut donanımını, sisteme yeni donanım ekleyip çıkarma işlemlerini zilyon tane şarta, tefferruata bağlı olarak yöneteceğimiz bir ödev.

 Kolay gelsin.