T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ



Benzer belgeler
İnternet Programcılığı

Yaptığımız web sitelerinin daha kullanışlı olması için veritabanı sistemleri ile bağlantı kurup ihtiyaca göre verileri okuyup yazmasını isteriz.

Android Ders Notları

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Android e Giriş. Öğr.Gör. Utku SOBUTAY

Üst Düzey Programlama

Android ile SQLLite Veri Tabanı

Akıllı telefonlar, avuçiçi bilgisayarlar ile taşınabilir (cep) telefonların özelliklerini birleştiren cihazlardır. Akıllı telefonlar kullanıcıların

Değerli Datasoft Kullanıcısı;

MOBİL UYGULAMA GELİŞTİRME

Veritabanı Uygulamaları Tasarımı

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

WINDOWS TABLET UYGULAMA YARDIM DOKÜMANI

İNÖNÜ ÜNİVERSİTESİ MÜH. FAK. BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ MOBİL UYGULAMALAR DERSİ PROJE ÖDEV İÇERİĞİ

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 7. LINUX OS (Sistem Yapısı) BİLGİ & İLETİŞİM TEKNOLOJİLERİ. LINUX Yapısı

VERİ TABANI YÖNETİM SİSTEMLERİ II. 9. FORMLAR ve ORACLE FORMS PROGRAMINDA FORM OLUŞTURMA

Turquaz. Açık kodlu muhasebe yazılımı Turquaz Proje Grubu

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

1 Nisan Đlgili Versiyon/lar : ETA:SQL, ETA:V.8-SQL. Đlgili Modül/ler : Stok

PHP ile İnternet Programlama

BEUN VPN Hizmeti. VPN Nedir?

MOBİL UYGULAMA GELİŞTİRME

ANDROID UYGULAMA YARDIM DOKÜMANI


Ipad,Ipone ve Android Mobil Aygıtlar İçin İş Zekası Mobil Uygulaması Kullanıcı Kılavuzu

Üst Düzey Programlama

AGÜ UIS ÖĞRENCİ DERS PROGRAMI HAZIRLAMA KILAVUZU

AGÜ UIS ÖĞRENCİ DERS PROGRAMI HAZIRLAMA KILAVUZU

Kullanım ve Yardım Kılavuzu

Kets DocPlace LOGO Entegrasyonu

JAVA API v2.0 Belge sürümü: 2.0.2

MPLAB IDE v7.60 PROGRAMI KULLANIMI

ECLIPSE PROGRAMININ ÇALIŞTIRILMASI

Kurulum; Ana Bilgisayar ve Tahtalara ayrı ayrı yapılmaktadır. KURULUM ŞEMASI x.x x.x x.x x.

NA VNC SERVER KULLANIMI. Genel Bilgi NA VNC Server Ayarları

Bölüm 10: PHP ile Veritabanı Uygulamaları

Sade ve tam ekran masaüstü kullanımının temel çıkış noktası, aranılan özelliğe çabuk erişimi sağlayan yenilikçi kullanıcı deneyimidir.

Swing ve JDBC ile Database Erişimi

FIRAT ÜNİVERSİTESİ ENFORMATİK LABORATUVARLARI OTOMASYONU

Windows Mobile İşletim Sistemleri İçin Veri Giriş Yazılımı

AKINSOFT. Eofis NetworkAdmin. AKINSOFT EOfis NetworkAdmin Kurulumu Bilgi Notu. Doküman Versiyon : Tarih : Copyright 2008 AKINSOFT

MOODLE UZAKTAN ÖĞRETİM SİSTEMİ

1. Mutabakat.zip dosyası açılır. 2. Mutabakat klasörü içindeki Mutabakat.exe dosyası çalıştırılır.

1.5. Başvuru formundaki bilgileri aşağıdaki şekilde doldurunuz. Kart Okuyucu Tipi: Mini Kart Okuyucu Sertifika Süresi: 3 Yıl

BLGM 354 DENEY 1 * GİRİŞ

TC KİMLİK NO SMS GÖNDERİM SOAP API

KonakSis Müşteri Takip ve Kimlik Bildirim Sistemi

Kaynak Kodlardan Derleme. Turquaz Muhasebe. Versiyon 0.2. Hüseyin Ergün. 26 Mart 2005

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi YAYIN ALICILARI. BLM401 Dr.Refik SAMET

VIO ERP12 Muhasebe Kurulum

AYBEL YAZILIM E-REÇETE PROGRAMI

DESTEK DOKÜMANI. Ürün : Tiger Enterprise/ Tiger Plus/ Go Plus/Go Bölüm : Kurulum İşlemleri

VAKIFBANK SANAL POS PANELİ KULLANICI KILAVUZU

BEŞHEKİM GRUP AYBEL YAZILIM İBYS PROGRAMI KULLANIMI

1. Portala Giriş. 2. Portalın Kullanımı Genel

Java Temel Özellikleri

FIRAT ÜNİVERSİTESİ WEB TABANLI KÜTÜPHANE OTOMASYONU

Proje 1. Arayüz Tasarımı

Java Programlamaya Giriş

UZAKTAN EĞİTİM SİSTEMİ ÖĞRENCİ EKRANLARI KULLANIM KILAVUZU

AGSoft Çocuk Gelişim Takip Programı Kullanım Kılavuzu

Tüm personel kendi KEP hesapları üzerinden mevcut ve önceki maaş bordrolarını görüntüleyebilecektir.

CİSCO ANY CONNECT UYGULAMASI İLE İÇ KAYNAKLARA ERİŞİMİ KLAVUZU

İçindekiler. 1. Cep Anahtar Başvuru

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

VIDEOCELL API. Versiyon 1.0.0

Ecat 8. Hakbim Bilgi İşlem A.Ş. Versiyon

UZAKTAN EĞİTİM YÖNETİM SİSTEMİ (MMYO)EĞİTMEN YARDIM KILAVUZU

PHP'ye Giriş Türkiye PHP Grubu - Linux Şenlikleri PHP Eğitim / Tanıtım Seminerleri Ankara, 11 Mayıs 2006 Hidayet Doğan <hdogan@hido.

Windows Live ID ve parolanızı giriniz.

1.PROGRAMLAMAYA GİRİŞ

01 HAZİRAN 2015 İZİBİZEDEFTER SON KULLANICI KLAVUZU

Seri Takibi Yenilikleri

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

OTP-Tek Kullanımlık Şifre Kullanım Kılavuzu

BİL-141 Bilgisayar Programlama I (Java)

COM API v.1.1 BELGE SÜRÜMÜ : 1.1

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 1: Programlamaya Giriş

1. Medisoft ile ETS arasındaki bütünle ik yapı : hatasız ve hızlı ETS hastane otomasyonu için neden çok önemlidir :

Orkestra Ürünler. Ana Sayfa / Orkestra Ürünler

NB Ekran Seri Port Üzerinden Veri Okuma/Yazma. Genel Bilgi Protokol Oluşturma Veri Okuma Veri Yazma

Kargo Modülü. Diğer modüller ile entegre çalışan Kargo modülü ile satış irsaliyesifaturasıoluşturduktan

HAL KAYIT SİSTEMİ HAL HAKEM HEYETİ İŞLEMLERİ KULLANICI KILAVUZU

C için tümleşik geliştirme ortamı (IDE) kurulumları

BİLGİ İŞLEM DERS 1. Yrd Doç Dr. Ferhat ÖZOK MSGSU FİZİK BÖLÜMÜ MSGSU FİZİK BÖLÜMÜ

HSancak Nesne Tabanlı Programlama I Ders Notları

Zirve e-defter V.1.00 Kullanım Klavuzu

EDOWEB (EK DERS OTOMASYONU) Mutemet İşlemleri BİLGİ İŞLEM DAİRE BAŞKANLIĞI 2018

İÇERİK YÖNETİM SİSTEMİ (CMS) Bir web sitesi yayınlamak için yapılması gerekenler:

TC KİMLİK NO SMS GÖNDERİM XML API

İÇİNDEKİLER 1. E-DEVLET SİSTEMİNE GİRİŞ KULLANICI İŞLEM MENÜSÜ... 6

T.C. SOSYAL GÜVENLİK KURUMU BAŞKANLIĞI DUYURU

ecyber Kullanıcı Kılavuzu 1 / 1 1. ecyber hakkında Sistem gereksinimleri:... 2 Donanım:... 2 Yazılım: Kullanım Rehberi...

FAZLA ÇALIŞMA MODÜLÜ UYGULAMA KILAVUZU

YAYIN TEŞVİK UYGULAMA YÖNERGESİ

T. C. KAMU İHALE KURUMU

İNTERNET PROGRAMCILIĞI HAFTA MYSQL - PHPMYADMIN. Hazırlayan Fatih BALAMAN. İçindekiler. Hedefler. Mysql Nedir.

Krm.MobilTapu Uygulaması Kullanımı

Transkript:

T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ Bilgisayar Mühendisliği Bölümü RESİMLİ YOKLAMA PROJESİ Muhammet Halit KARAKIŞ Danışman Doç. Dr. Yusuf Sinan AKGÜL Ağustos, 2012 Gebze, KOCAELİ

T.C. GEBZE YÜKSEK TEKNOLOJİ ENSTİTÜSÜ Bilgisayar Mühendisliği Bölümü RESİMLİ YOKLAMA PROJESİ Muhammet Halit KARAKIŞ Danışman Doç. Dr. Yusuf Sinan AKGÜL Ağustos, 2012 Gebze, KOCAELİ ii

Bu çalışma.../.../2012 tarihinde aşağıdaki jüri tarafından Bilgisayar Mühendisliği Bölümünde Lisans Bitirme Projesi olarak kabul edilmiştir. Bitirme Projesi Jürisi Danışman Adı Doç. Dr. Yusuf Sinan Akgül Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Mühendislik Fakültesi Jüri Adı Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Mühendislik Fakültesi Jüri Adı Üniversite Gebze Yüksek Teknoloji Enstitüsü Fakülte Mühendislik Fakültesi iii

ÖNSÖZ Resimli Yoklama projesi eğitim ve öğretim kurumlarında süregelen yoklama alma zorunluluğuna fotoğraf özelliğini de ekleyerek alınan yoklamaların daha güvenli olmasını ve yoklama kontrolünün her yerden ulaşılabilecek bir şekilde erişimini sağlamayı amaçlamaktadır. Bu projenin geliştirilmesinde bana yardımcı olan ve yol gösteren Sayın Doç. Dr. Yusuf Sinan Akgül hocama ve bu çalışmayı destekleyen Gebze Yüksek Teknoloji Enstitüsü ne içten teşekkürlerimi sunarım. Ayrıca eğitimim süresince bana her konuda tam destek veren kıymetli anne-babama ve değerli ağabeyime saygı ve sevgilerimi sunarım. Muhammet Halit KARAKIŞ Ağustos, 2012 iv

İÇİNDEKİLER ÖNSÖZ... iv İÇİNDEKİLER... v ŞEKİL TABLOSU... vii KISALTMA LİSTESİ... viii ÖZET... ix SUMMARY... x GİRİŞ... 1 1. YARDIMCI PROGRAMLAR... 2 1.1 Eclipse IDE... 2 1.2 Android SDK... 2 1.3 ADT Eklentisi... 2 1.4 SQLite Veritabanı... 3 1.5 MySQL Veritabanı... 3 2. YÖNTEM... 4 2.1 Paket Diyagramları... 4 2.2 Kullanım Senaryoları... 5 2.3 Veri Saklama... 6 3. VERİTABANI... 7 3.1 VERİTABANI KURULUMU... 7 3.1.1 Android Üzerinde Veritabanı Kurulumu... 7 3.1.2 Sunucu Üzerinde Veritabanı Kurulumu... 7 3.2 VERİTABANINA ERİŞİM... 8 3.2.1 Android SQLite Veritabanına Erişim... 8 3.2.2 Sunucu Üzerindeki Veritabanına Erişim... 10 4. KAMERA... 10 4.1 Uygulama-Kamera Bağlantısının Yapılması... 11 5. AKTİVİTELER... 13 5.1 Kayıt Aktivitesi... 13 5.2 Giriş Aktivitesi... 14 5.3 Yoklama Aktivitesi... 14 5.4 Senkronizasyon Aktivitesi... 14 v

6. UYGULAMA... 14 6.1 Giriş Ekranı... 14 6.2 Kayıt Ekranı... 15 6.3 Yoklama Alma Ekranı... 17 6.4 Senkronizasyon Ekranı... 20 DEĞERLENDİRME... 21 SONUÇ... 22 KAYNAKLAR... 23 vi

ŞEKİL TABLOSU Şekil 2-1: Paket Yapısı... 4 Şekil 2-2: Kullanım Senaryoları... 6 Şekil 2-3: Veritabanı Tablo Yapısı... 6 Şekil 6-1: Uygulama Giriş Ekranı... 15 Şekil 6-2: Başarılı Kayıt İşlemi... 16 Şekil 6-3: Kayıt İşlemi İnternet Erişim Hatası... 16 Şekil 6-4: Kayıt İşlemi Kullanıcı Adı Hatası... 17 Şekil 6-5: Yoklama Alma Ders Seçimi ve Öğrenci Listesi... 17 Şekil 6-6: Yoklama Alma Öğrenci Resim Çekilmesi... 18 Şekil 6-7: Yoklama Alma Yoklamayı Sonlandırma... 19 Şekil 6-8: Yoklama Alma Uyarılar... 19 Şekil 6-9: Senkronizasyon Ekranı... 20 Şekil 6-10: Senkronizasyon Ekranı İnternet Erişimi Hatası... 20 vii

KISALTMA LİSTESİ G.Y.T.E SDK ADT IDE SQL API XML FTP SSH : Gebze Yüksek Teknoloji Enstitüsü : Software Development Kit : Android Development Tools : Integrated Development Environment : Structured Query Language : Application Program Interface : Extensible Markup Language : File Transfer Protocol : Secure Shell viii

ÖZET Bu proje G.Y.T.E. Bilgisayar Mühendisliği Bölümü Bitirme Çalışması I dersi için hazırlanmıştır. Bu raporda projenin amacı, içeriği, yapımı ve kullanımı hakkında bilgiler verilmektedir. Resimli Yoklama projesinin amacı; öğretim kurumlarında ve/veya eğitim programlarında yoklamaların Android cihazlar üzerinden fotoğraf çekilerek alınmasıyla öğretim görevlisinin yoklama kontrolünü daha güvenilir ve kolay biçimde yapabilmesini sağlamaktır. Bu amaçlara ulaşmak için yoklama kontrollerinin yapılacağı, dersler ve öğrencilerle ilgili raporların alınacağı bir masaüstü uygulaması ayrıca bu uygulamayla senkronize çalışacak bir Android uygulamasının hazırlanması hedeflenmiştir. ix

SUMMARY This project was prepared for Graduation Project I course of Computer Engineering Department of Gebze Institute of Technology. The aim of this report is to give information about project s purpose and construction. Also this report provides information on how to use the application. The purpose of Resimli Yoklama Project is to make roll calls more reliable and more easier to control for instructor in educational institutions and/or training programs. This is made by taking attendance with photographs which taken by Android devices. To achieve these goals, decided to develop a desktop application and an Android application that run synchronized with each other. The lectures and students settings will be on desktop application. The roll calls will be taken by Android application and will be checked on desktop application. x

GİRİŞ Proje konusu olarak Resimli Yoklama yı seçmemizin sebebi yoklama işlemini hem güvenirlilik hem de öğretim görevlisinin işini kolaylaştırması yönünden optimize etmektir. Yoklama alımlarında kullanılan öğretim görevlisinin teker teker öğrenci isimlerini okuyup gelenleri işaretlemesi yöntemi öğretim görevlisinin zamanını alan ve dersi meşgul eden bir yöntemdir. Öğrencilere verilerek doldurulması istenen yoklama kağıdı biçiminde alınan yoklamalarda ise öğrencilerin birbirleri yerine işaret koyması veya imza taklidi yoluna başvurarak yoklamayı yanlış kullanması sorunu ortaya çıkmaktadır. Biz de bu soruna çözüm bulmak için hem öğretim görevlisinin dersteki zamanını boşa harcamayacak hem de öğrencilerin yoklamayı kötüye kullanamayacakları Resimli Yoklama yı geliştirdik. Resimli Yoklama da öğretim görevlisi masaüstü uygulamasından eklediği dersleri ve öğrencileri, Android cihazı ile senkronize ederek cihaz üzerinde de görebilecek ve ilgili dersin yoklamasını cihaz üzerinde fotoğraflı olarak alabilecektir. Bu hizmetleri sağlayabilmek için projemizde aşağıdaki yöntemleri kullandık. Projemizde hem masaüstü uygulamanın hem de Android uygulamanın ortak paylaşacakları alan olarak GYTE Bilgisayar Mühendisliği sunucusundan bir hesap aldık. Sunucuda verilerin tutulması için MySQL veritabanı, resimlerin tutulması için de FTP hizmetini açtık. Masaüstü uygulamada eklenen dersler ve öğrenciler sunucu üzerindeki veritabanına eklenecek ve cihaz üzerindeki uygulamadan senkronize işlemi başlatıldığında dersler ve öğrenciler cihaz üzerinde gözükebilecektir. Aynı zamanda cihazda o zamana kadar alınmış ve senkronize edilmemiş yoklamalar ve resimler de sunucuya gönderilecektir. Yoklama kontrolünün rahat biçimde yapılabilmesi için kontrollerin masaüstü uygulamasından yapılmasına karar verilmiştir. Bu raporda anlatılanlar projenin ilk kısmı olan Android uygulama üzerine olacaktır. 1

Raporda ilk olarak uygulamayı geliştirmek için kullanılan malzemeler tanıtılacak ardından gelişim sürecinde izlenen yol anlatılacaktır. Sonraki bölümde uygulamanın son halinin resimler ile kullanımına yer verilecektir. Son olarak projenin eksikleri, neler eklenebileceği ve sonraki aşamalarda nelere dikkat edileceği tartışılıp sonuca varılacaktır. 1. YARDIMCI PROGRAMLAR 1.1 Eclipse IDE Eclipse, açık kaynak kodlu bir tümleşik geliştirme ortamıdır. Ana odak noktası Java ve Java ile ilişkili teknolojiler olsa da esnek yapısı sayesinde C ve Python gibi farklı diller için de kullanılmaktadır. 2001 yılında IBM tarafından başlatılan proje Java'nın ana grafik sistemi olan Swing yerine bulunduğu platformda bulunan özellikleri doğrudan kullanan SWT'yi kullanarak Java dünyasında tartışmalara yol açmıştır. Hızlı ara yüzü, şık görünümü ve çok kuvvetli özellikleriyle kısa zamanda Java geliştiricileri arasında en popüler geliştirme ortamı olmuştur. Android SDK ile entegre çalışan Eclipse'in içinde yazılan programları denemek için Emülator kurulabilmektedir. Ayrıca sunulan eklentiler ile işlevleri geliştirilerek birçok alanda kullanılabilmektedir. 1 1.2 Android SDK Android uygulama geliştirmek için ihtiyaç duyulan kütüphaneleri ve geliştirme araçlarını içeren SDK dır. İçerisinde derleme, test etme ve debug için gerekli araçlar bulunmaktadır. 1.3 ADT Eklentisi Google, Eclipse IDE ile Android uygulamaları geliştirebilmek için Android Geliştirme Araçları nı (ADT-Android Development Tools) sunar. ADT, Android uygulamaları geliştirmek işlemleri için hazırlanmış Eclipse eklentileri dizisidir. 1 Eclipse (yazılım), Vikipedi http://tr.wikipedia.org/wiki/eclipse_(yazılım). 2

ADT, Eclipse ile kullanılabileceği gibi komut satırı ile de kullanılabilir. ADT Android uygulamaları için oluşturma, derleme, debug ve dağıtım gibi birçok farklı fonksiyona sahiptir. ADT nin sağladığı Android cihaz emülatörü ile Android cihaza ihtiyaç duymadan uygulamalar test edilebilir. 1.4 SQLite Veritabanı SQLite, kaynak kodları halka açık, tamamen C/C++ programlama dilleriyle geliştirilmiş sunucu yazılımı ve konfigürasyon gereksinimi olmayan, işlemsel ve ilişkisel bir SQL veritabanı motorudur. SQLite veri tipleri olarak TEXT (Java daki String e benzer), INTEGER (Java daki long tipine benzer) ve REAL (Java daki double tipine benzer) tiplerini destekler. Bunlar dışında veritabanında saklanmak istenen diğer tipler öncelikle yukarıda bahsedilen tiplere dönüştürülmeli ve öyle saklanmalıdır. SQLite, onlarca programlama dili içerisinde rahatlıkla kullanılabilir. Bunlardan bazıları: BASIC, C, D, C++, Common Lisp, Java, C#, Visual Basic, Delphi, Curl, Lua, Tcl, REBOL, R, PHP, ASP, Perl, Ruby, Objective-C, Python, newlisp, Haskell, OCaml, Smaltalk, Scheme. 2 1.5 MySQL Veritabanı MySQL, altı milyondan fazla sistemde yüklü bulunan çoklu iş parçacıklı (multithreaded), çok kullanıcılı (multi-user), hızlı ve sağlam (robust) bir veritabanı yönetim sistemidir. UNIX, OS/2 ve Windows platformları için ücretsiz dağıtılmakla birlikte ticari lisans kullanmak isteyenler için de ücretli bir lisans seçeneği de mevcuttur. Linux altında daha hızlı bir performans sergilemektedir. Kaynak kodu açık olan MySQL'in pek çok platform için çalıştırılabilir ikilik kod halindeki indirilebilir 2 SQLite, Vikipedi. http://tr.wikipedia.org/wiki/sqlite 3

sürümleri de mevcuttur. Ayrıca ODBC sürücüleri de bulunduğu için birçok geliştirme platformunda rahatlıkla kullanılabilir. 3 2. YÖNTEM Projeyi hazırlarken izlediğimiz yöntem öncelikle bütün işlemlerin Android cihaz üzerinden yapılacağı şeklinde ilerlemek olmuştur. Bunun için Android cihaza yoklama alma işlevinin dışında ders ekleme, ders çıkarma, öğrenci ekleme, öğrenci silme, ders programını düzenleme ve yoklama kontrolünü yapma işlevleri de eklenmiştir. Fakat daha sonra masaüstü uygulamanın da projenin ikinci kısmında yer almasına karar verilmiştir. Bu yüzden Android üzerinde çalışan uygulamadaki ek özellikler alınıp yalnızca yoklama alma, senkronize etme ve öğretim görevlisi kaydı işlevleri bırakılmıştır. 2.1 Paket Diyagramları Projede içerisinde ilgili sınıfları barındıran altı paket kullanılmıştır. Paketlerin yapısı ve birbirleri arasındaki bilgi alışveriş şeması aşağıdaki şekilde görülmektedir. Şekil 2-1: Paket Yapısı 3 MySQL, Vikipedi, http://tr.wikipedia.org/wiki/mysql. 4

Paketlerin kısaca açıklamaları aşağıda verilmiştir: DataTypes: Projede kullanılacak olan öğrenci, öğretim görevlisi, ders vb. gibi veri sınıflarının içinde bulunduğu pakettir. Bütün sınıflar Data sınıfından türemişlerdir. Activities:Android uygulamanın kullanımında kullanıcının göreceği ve işlem yapacağı aktivitelerin bulunduğu pakettir. Uygulamanın akışı bu aktiviteler üzerinden gerçekleşir. Aktiviteler verilere erişmek ve verileri değiştirmek için Services paketinde bulunan servisleri kullanır. DataServices:Bu paket veritabanına erişimi sağlayan, ekleme, çıkarma ve veritabanından bilgi çekme işlemlerini yapan sınıfları içeren pakettir. Services:Bu paket veritabanı ile iletişimde olan DataServices paketi ile aktiviteler arasındaki köprü görevindedir. Veri servisindeki sınıfların kullanımında hizmeti açmakapama gibi her seferinde tekrar gerektiren fonksiyonların kullanılması yerine, içerisinde statik fonksiyonlar içeren ve açma-kapama işlemlerini yapan sınıflar hazırlanmış ve bu paketin içerisine konulmuştur. 2.2 Kullanım Senaryoları Uygulamanın iki kullanıcısı bulunmaktadır. Öğretim görevlisi ana kullanıcı olarak sisteme kayıt ve giriş işlemlerini yapabilecek, yoklama alabilecek ve uygulamanın senkronizasyonunu yapabilecektir. Öğrenci ise öğretim görevlisinin yoklama alması sırasında öğrenci listesinden kendi ismini seçip resim çekme işlemini yapabilecektir. Aşağıdaki şekilde uygulamanın kullanım senaryoları diyagramı görülmektedir. 5

Şekil 2-2: Kullanım Senaryoları 2.3 Veri Saklama Android üzerinde çalışan uygulamada verileri saklamak için, Android ile birlikte yüklü olan SQLite veritabanı kullanılmasına karar verilmiştir. Her veri sınıfı veritabanındaki bir tabloya denk gelmektedir. Veritabanında oluşturulacak tabloların diyagramları aşağıdaki şekilde görülmektedir. Şekil 2-3: Veritabanı Tablo Yapısı 6

3. VERİTABANI Bu bölümde Android ve sunucu üzerinde bulunan veritabanlarının kurulumu tabloların oluşturulması ve erişimin nasıl sağlanacağı açıklanmaktadır. 3.1 VERİTABANI KURULUMU 3.1.1 Android Üzerinde Veritabanı Kurulumu Android üzerinden SQLite veritabanına erişim sağlamak için herhangi bir kurulum veya yönetim gerekmez. Yapılması gereken şey veritabanını oluşturacak veya güncelleyecek SQL ifadelerini yazıp işleme koymaktır. Bundan sonra veritabanı otomatik olarak oluşturulup güncellenecektir. SQLite veritabanını oluşturmak ve güncelleme yapmak için SQLiteOpenHelper sınıfından türemiş bir alt sınıf kullanmak gerekmektedir. Projede bu işlem için SQLiteConnection sınıfı kullanılmıştır. Bu sınıfın constructor metodunda super() metodunu veritabanı adını ve veritabanının versiyonunu vererek çağırmak gerekmektedir. Android bu sınıfın kullanılmasında ilgili veritabanı adıyla bir veritabanı bulunup bulunmadığına bakar. Eğer böyle bir veritabanı bulunmuyorsa veritabanını oluşturur. Oluşturulma sırasında sınıfın oncreate metodunu çağırır. Bu yüzden oncreate metodu kendi tablolarımızı oluşturan SQL ifadeleri yerleştirilerek override edilmiştir. Eğer aynı isimde veritabanı daha önceden oluşturulmuşsa ve super() metoduna gönderile versiyon numarası daha yüksek ise onupgrade metodu çağrılır. Bu yüzden onupgrade metodu var olan tabloları silip tabloları yeni haliyle oluşturan SQL ifadeleri yerleştirilerek override edilmiştir. Projenin veritabanı Şekil 3-3 te verilen tablolarla doldurulmuştur. 3.1.2 Sunucu Üzerinde Veritabanı Kurulumu Sunucu üzerinde MySQL veritabanı kurulumu yapıldıktan sonra phpmyadmin aracılığıyla Android e eklenen tablolar sunucudaki veritabanına da eklenmiştir. 7

3.2 VERİTABANINA ERİŞİM Bu bölümde Android üzerinden SQLite veritabanına ve uzak sunucudaki MySQL veritabanına nasıl erişildiği anlatılacaktır. 3.2.1 Android SQLite Veritabanına Erişim Android üzerinde bulunan veritabanına erişim 3. Bölümde anlatılan DataServices paketi içerisindeki sınıflar tarafından sağlanmıştır. Pakette, veritabanında bulunan her tabloya erişim için bir sınıf bulunmaktadır. Her bir sınıf bağlı bulunduğu tabloya ekleme, değiştirme, çıkarma ve belli özelliklere göre veri çekme işlemlerini gerçekleştirecek şekilde hazırlanmıştır. Veritabanı üzerinde işlem yapabilmek için öncelikle veritabanı yardımcımız SQLiteConnection sınıfına veritabanını açmak için istek gönderilir. Eğer isteğimiz veriler üzerinde değişiklik yapmak ise, veritabanı yardımcısına gönderilecek istek yazılabilir veritabanını açmasıdır. İsteğimiz eğer sadece veri çekmek ise okunabilir veritabanı isteminde bulunuruz. Aktiviteler veri servislerini direkt olarak kullanmak yerine Services paketinde bulunan servisleri kullanırlar. Bu servisler, veri servisleri için gerekli olan veritabanını açma ve kapatma işlemlerini de yaparlar. Her veri servisi için bir servis sınıfı tanımlanmıştır. Bu sınıfların içerisinde kullanımının rahat olması için sadece statik fonksiyonlar bulunmaktadır. Uygulamada Android üzerindeki veritabanına erişim veri servislerinden servislere, oradan da aktivitelere ulaşacak şekilde tasarlanmıştır. Örneğin bir yoklama aktivitesinden bir yoklama eklemek için şu satır kullanılır: RollCall rollcall = new RollCall(); rollcall = RollCallService.insert(context, rollcall); Yoklama servisi sınıfında ise ekleme fonksiyonu şu şekilde yazılmıştır: 8

// RollCallService.java public static RollCall insert(context context, RollCall rollcall) { RollCallDataService service = new RollCallDataService(context); // Yazılabilir veritabanı açılır service.open(); // Veritabanına veri eklenir RollCall result = (RollCall) service.insert(rollcall); //Veritabanı kapatılır service.close(); return result; } Veritabanına eklenecek veri, veri servisine ulaştığında veritabanına ekleme işi şu şekilde gerçekleştirilir: // RollCallDataService.java public Data insert(data data) { RollCall rollcall = (RollCall) data; // Veri tipinin içindeki bilgiler toplanır ContentValues values = new ContentValues(); values.put(sqliteconnection.column_lecture_id, rollcall.getlectureid()); values.put(sqliteconnection.column_insturctor, rollcall.getinstructorid()); values.put(sqliteconnection.column_date, rollcall.getdate()); values.put(sqliteconnection.column_type, rollcall.gettype()); // Bilgiler veritabanına eklenmesi için gönderilir long insertid = database.insert(sqliteconnection.table_rollcall, null, values); rollcall.setid(insertid); return rollcall; } 9

3.2.2 Sunucu Üzerindeki Veritabanına Erişim Sunucu üzerinde kurulan MySQL veritabanına Android uygulamadan erişim için Java tabanlı programlar ile veritabanları arasında iletişimi sağlayan JDBC API si kullanılmıştır. JDBC API si ile MySQL veritabanına bağlanmak için aşağıdaki satırları yazmak gerekmektedir: Class.forName( com.mysql.jdbc.driver ); Connection connection = DriverManager.getConnection(SERVER, USERNAME, PASSWORD); Statement statement = connection.createstatement(); Bu satırlardan sonra statement değişkeni üzerinden executequery() veya executeupdate() fonksiyonları kullanılarak bağlanılan veritabanına istenilen SQL ifadeleri gönderilebilmektedir. Bu bağlantı için internet erişimi gerekmektedir. 4. KAMERA Uygulamayı kullanabilmek için Android cihazda kamera bulunması gerekmektedir. Yoklama alınışı sırasında öğrencilerin kendi fotoğraflarını çekerken kendilerini de görebilmeleri için uygulamada ön kamera kullanılmıştır. Fakat ön kamerası bulunmayan telefonlarda otomatik olarak arka kameraya geçilecektir. Uygulama içerisinden kameraya ulaşabilmek için Android in sağladığı kamera servisi kullanılmıştır. Uygulamanın minimum çalışabileceği Android versiyonunu belirlenirken, versiyonlar arasındaki kamera servisinin kullanımında olan değişiklikler büyük rol oynamıştır. Android API Level 8 de cihazda bulunan kamera sayısına ve kamera bilgilerini ulaşılamazken, API Level 9 da kamera sayısınave kamera bilgilerine rahatlıkla ulaşılabilmektedir. Bu yüzden API Level 9 uygulamanın kurulabileceği minimum olarak belirlenmiştir. 10

4.1 Uygulama-Kamera Bağlantısının Yapılması Android uygulamalar üzerinden kamera bağlantısı iki türlü yapılabilmektedir. İlk yöntem uygulamadan fotoğraf çekme isteği geldiği zaman, Android üzerinde var olan kamera uygulamasının başlatılması ve fotoğraf çekildikten sonra veriyi uygulamaya çekmek şeklindedir. İkinci yöntemde ise kameradan alınan görüntü direk uygulama içerisine entegre edilip fotoğraf çekilmesi işlemini uygulamadan kontrol etmektir. Resimli Yoklama projesinde ikinci yöntem tercih edilmiştir. Kamera görüntüsünü cihaza entegre edip fotoğraf çekmek için öncelikle yeni bir aktivite oluşturuldu. Bu aktivitenin layout (aktivitenin görünüş düzeni) ı içine kameradan gelen görüntünün gösterileceği bir FrameLayout ve basıldığından fotoğrafın çekileceği bir tuş konulmuştur. Öğrencilerin yanlışlıkla başkasının yerine fotoğraf çekmesini önlemek için fotoğrafı çekilen öğrencinin isminin yazılacağı da bir TextView eklenmiştir. Sonuçta ortaya çıkan XML dosyası aşağıdaki gibidir. <!-- takepicture.xml --> <?xml version= 1.0 encoding= utf-8?> <LinearLayout xmlns:android= http://schemas.android.com/apk/res/android android:id= @+id/layout android:layout_width= fill_parent android:layout_height= fill_parent android:background= @drawable/bg android:orientation= vertical > <!-- Öğrencinin isminin görüneceği yer --> <TextView android:id= @+id/tp_name android:layout_width= fill_parent android:layout_height= wrap_content android:textsize= 24sp /> <!-- Kameradan gelen görüntünün gösterileceği yer --> <FrameLayout android:id= @+id/preview android:layout_weight= 1 11

android:layout_width= 320dp android:layout_height= 240dp > </FrameLayout> <!-- Fotoğraf çekmek için basılacak tuş --> <Button android:layout_width= wrap_content android:layout_height= wrap_content android:id= @+id/buttonclick android:text= Resim Çek android:layout_gravity= center > </Button> </LinearLayout> Aktivitenin düzen dosyası oluşturulduktan sonra kamera aktiviteye entegre edildi. Bu işlem için iki sınıf kullanıldı. TakePicture sınıfı Activity sınıfından türetildi. Kullanıcının gördüğü ekran ve çekilen fotoğrafın hafıza kartına kaydedilmesi bu aktivite sınıfında gerçekleştirildi. Preview sınıfı ise kamera servisinin açıp kullanılacak kamerayı ayarlayan ve TakePicture aktivitesinin düzenindeki kamera görüntüsünün geleceği yere görüntüyü aktaran sınıf olarak kullanıldı. Kamera görüntüsünün tutulabilmesi için Android in şart koştuğu kurallar vardır. Bu kurallardan bir tanesi SurfaceView sınıfını extend edip SurfaceHolder.Callback interface ini de implement eden bir sınıf olmasıdır. Projedeki Preview sınıfı bu şartı sağlayan sınıftır. public class Preview extends SurfaceView implements SurfaceHolder.Callback { Bu sınıfın override etmesi gereken üç metod bulunmaktadır; surfacecreated(), surfacechanged() ve surfacedestroyed(). public Camera camera; public void surfacecreated(surfaceholder holder) { camera = null; 12

} try { CameraInfo caminfo = new CameraInfo(); for(int i = 0; i < Camera.getNumberOfCameras(); ++i) { Camera.getCameraInfo(i, caminfo); if(caminfo.facing == CameraInfo.CAMERA_FACING_FRONT) camera = Camera.open(i); } if(null == camera) camera = Camera.open(i); camera.setpreviewdisplay(holder); camera.setdisplayorientation(90); camera.startpreview(); } catch(ioexception e) { e.printstacktrace(); } surfacecreated() metodu aktivite başlatıldığında çağırılan metoddur. Bu yüzden bu metoda kameranın başlatılma işlemi yapılmıştır. surfacechanged() ve surfacedestroyed() metodları boş bırakılmıştır. Kameranın durdurulma ve kapatılma işlemi aktivite sınıfında yapılmaktadır. Fotoğraf çekilme tuşuna basıldığından kendi PictureCallback sınıfının onpicturetaken() metoduna resim gönderilir. Bu metod override edilerek kayıt boyutunun küçük olması için fotoğrafın kalitesi düşürülüp hafıza kaydına kaydedilir. 5. AKTİVİTELER Bu bölümde uygulamada yer alan aktivitelere göz atılacaktır. Sonraki bölümlerden Kullanım bölümünde burada bahsi geçen aktivitelerin resimli açıklamalarına da yer verilmektedir. 5.1 Kayıt Aktivitesi Bu aktivitede uygulamayı kullanan kullanıcı sisteme kayıt olma işlemini yerine getirir. Girilmesi gereken bilgiler kullanıcı adı, şifre ve şifre tekrarıdır. Bu işlemin tamamlanabilmesi için internet erişiminin açık olması gerekmektedir. 13

5.2 Giriş Aktivitesi Uygulama açıldığında ilk karşılaşılan aktivitedir. Daha önceden sisteme kayıtlanan kullanıcı bu aktiviteden uygulamaya giriş yapabilir. Eğer internet erişimi varsa çevrimiçi oturum açılır. Yani daha önceden o cihazdan oturum açmamış bir kişi de giriş yapabilir. Eğer internet erişimi yoksa çevrimdışı oturum açılır. Yani daha önceden o cihazdan oturum açmış kişiler giriş yapabilir. 5.3 Yoklama Aktivitesi Öğretim görevlisinin yoklama almak için kullanması gereken aktivitedir. Bu aktivitede cihaza giriş yapmış kullanıcının dersleri veritabanından alınarak hangi dersin yoklamasını almak istediği sorulur. Seçilen derse göre veritabanından dersin öğrencileri çekilerek yoklama alma işlemi yapılır. Yoklama alınan cihazın ön kamerası olması kullanım kolaylığı sağlayacaktır. Ön kamerası bulunmayan cihazlarda fotoğraf çekme işlemi arka kameradan yapılacaktır. 5.4 Senkronizasyon Aktivitesi Bu aktivite başlatıldığında internet erişimi varsa uygulama otomatik olarak sunucuya bağlanıp sunucudaki yeni dersleri ve öğrencileri telefona indirir. Bunun yanında senkronize edilmemiş yoklamaları ve yoklama resimlerini sunucuya gönderir. Bu aktivite işlemini tamamlamadan uygulamadan çıkılması senkronize işleminin yarıda kesilmesine sebep olur. 6. UYGULAMA Raporun bu bölümünde hazırlanmış olan Android uygulamanın resimlerle tanıtımı ve kullanım şekli anlatılmaktadır. 6.1 Giriş Ekranı Giriş ekranı kullanıcının uygulamayı açtığında karşılaştığı ilk ekrandır. Kullanıcı bu ekranda sistemde kayıtlı olan kullanıcı adı ve şifresini girerek uygulamaya giriş yapar. İnternet erişiminin olması durumunda sunucu üzerindeki veritabanında bulunan 14

herhangi bir hoca uygulamaya giriş yapabilir. İnternet erişimin bulunmadığı durumda ise sadece daha önce o cihazdan giriş yapmış bir kullanıcı uygulamaya giriş yapabilir. Şekil 6-1: Uygulama Giriş Ekranı Uygulamaya giriş yapılan kullanıcının bilgileri ile işlem yapılır. Kullanıcı uygulamadan ana ekran tuşuna basıp çıktıktan sonra tekrar uygulamaya dönünce yine giriş ekranıyla karşılaşır. 6.2 Kayıt Ekranı Giriş ekranında bulunan kayıt ol seçeneği ile ulaşılacak ekrandır. Kullanıcı kayıt olmak için kendine bir kullanıcı adı ve şifre seçer. Bilgiler doğru ve eksiksiz bir şekilde girildikten sonra internet erişimi varsa ve sunucuda aynı kullanıcı adı ile başka bir kullanıcı bulunmuyorsa kayıt işlemi tamamlanır. 15

Şekil 6-2: Başarılı Kayıt İşlemi İnternet erişimi yoksa ekranda internet erişimi olmadığına dair uyarı çıkar. Şekil 6-3: Kayıt İşlemi İnternet Erişim Hatası Aynı kullanıcı ismiyle başka bir kullanıcı bulunması durumunda ekranda uyarı belirir ve kayıt işlemi durdurulur. 16

Şekil 6-4: Kayıt İşlemi Kullanıcı Adı Hatası 6.3 Yoklama Alma Ekranı Ana menüdeki Yoklama Al tuşuna basılarak ulaşılan bu ekranda ilk olarak ders listesi kullanıcının karşısına çıkmaktadır. Kullanıcı dilediği dersi seçtikten sonra dersin öğrenci listesi ekrana gelecektir. Şekil 6-5: Yoklama Alma Ders Seçimi ve Öğrenci Listesi 17

Öğrenci listesi ekrana geldikten sonra öğrenciler kendi isimlerini seçip gelen resim çekme ekranından kendi resimlerini çekerler. Bu işlem bütün öğrenciler bitene kadar devam eder. Şekil 6-6: Yoklama Alma Öğrenci Resim Çekilmesi Öğrencilerin resimlerini çekme işlemi sırasında İptal veya Bitir tuşuna basılırsa uygulama yoklamayı iptal etmek için kullanıcı şifresi istemektedir. Bu sayede uygulamanın kullanıcısı dışında birisinin yoklamayı kapatma ihtimali kaldırılmıştır. Kullanıcının Bitir tuşuna basıp şifresini girmesinin ardından derse katılım sayısı ekranda gösterilir. 18

Şekil 6-7: Yoklama Alma Yoklamayı Sonlandırma Yoklama almak isteyen kullanıcının ekli dersi bulunmaması veya seçilen dersin öğrenci listesinin boş olması durumunda bilgi veren uyarılar gösterilmekte ve yoklama iptal edilmektedir. Şekil 6-8: Yoklama Alma Uyarılar 19

6.4 Senkronizasyon Ekranı Ana menüden Senkronize Et tuşuna basılarak ulaşılan senkronizasyon ekranında, senkronizasyon tamamlanana kadar kullanıcının yapacağı bir şey bulunmamaktadır. Kullanıcı senkronizasyon sırasında ekranda Tamam tuşu gözükene kadar beklemelidir. Şekil 6-9: Senkronizasyon Ekranı Senkronizasyon için internet bağlantısı gerektiğinden dolayı eğer internet erişimi bulunamazsa uyarı verilmektedir. Şekil 6-10: Senkronizasyon Ekranı İnternet Erişimi Hatası 20

DEĞERLENDİRME Bu projede yoklama alım işlemini resimli hale getirerek güvenilirlilik ve kolaylık artırılmaya çalışılmıştır. Kullanıcı kaydı ile yoklama işlemlerinin yapılması ve yoklamaların sonunda şifre ile bitirilmesi uygulamayı yanlış kullanıma karşı korumak için alınan tedbirlerdendir. Fakat fotoğraf çekilen bir öğrencinin tekrardan fotoğraf çekilebilmesi, öğrencilerin başka öğrencilerin yoklamalarını sabote etmek amacıyla kullanımına sebep olabilir. Bunu önlemek amacıyla öğrencilere şifre verilmesi ve fotoğraf çekilme işleminin o şifre ile yapılması düşünülmüştür. Ama bu yöntemde çok öğrencili derslerde şifre oluşturulması, sisteme girilmesi ve öğrencilere dağıtılması sorunu çıkacağı düşüncesinden dolayı, böyle bir sistemden kaçınılmıştır. Ayrıca şu anda kullanılan örneğin imzalı yoklama türündeki sistemlerde başka öğrencilerin yoklamalarını sabote etmek isteyenlerin imzayı karalayabilmesi veya değiştirebilmesi gibi sorunlara çözüm olmadığından resimli yoklamada da bu sorunun olabilmesi normal olarak düşünülmüştür. 21

SONUÇ Bu projede eğitim ve öğretim kurumlarında zorunlu olan yoklama işlemine fotoğraf ekleyerek bu işlemi daha güvenli hale getirmek ve öğretim görevlilerine çeşitli özelliklerle kolaylık sağlamak hedeflenmiştir. Bu amacı gerçekleştirmek için biri masaüstü bilgisayarlarda biri de Android cihazda olmak üzere iki parça uygulama düşünülmüştür. Bu raporda anlatılan Android uygulamaya çeşitli özellikler konularak uygulama tamamlanmıştır. Android uygulamada bulunan işlemler; yoklama alma ve sunucu ile senkronizasyon sağlanmasıdır. Yoklama alma işlemi Android API Level 9 kullanılarak ön kamera ile sağlanmıştır. Senkronizasyon işlemi de internet erişimi ile uzak bir FTP ve MySQL sunucusuna bağlanılarak sağlanmıştır. Senkronizasyon sayesinde projenin ikinci aşamasında yapımına karar verilen masaüstü uygulamadan Android üzerindeki verilere ve sunucu üzerindeki verilere Android cihazdan ulaşılabilecektir. Bilgisayar Mühendisliği bölümü tarafından sağlanan FTP sunucusunun SSH güvenliğinin olması sebebiyle senkronizasyonun fotoğraf gönderme işlemi tamamlanamamıştır. Bu sorunun FTP portunun açılmasıyla çözümüne karar verilmiştir. En kısa zamanda resim gönderme işlemi de tamamlanacaktır. Bundan sonra projenin ikinci kısmında masaüstü uygulamanın hazırlanması planlanmıştır. Ders ekleme, öğrenci ekleme ve ders programı düzenleme işlemlerinin masaüstü uygulama aracılığıyla yapılması planlanmaktadır. Bunu sağlayabildikten sonra uygulamaların okulun öğrenci işleri bilgi sistemi ile ilişkilendirilip ders ekleme, öğrenci ekleme ve ders programı düzenleme yükünün de öğretim görevlisinin üzerinde kaldırılması düşünülmektedir. Ders programının Android uygulama üzerinde yaptıracağı değişiklik ise yoklama alma kısmında öğretim görevlisinin ders seçmesi yerine, o günün o saatinde ders programında hangi ders görülüyorsa o dersin yoklamasının otomatik olarak açılması olacaktır. 22