Professional Documents
Culture Documents
SEYH
BILEC
IK
EDEBALI NIVERS
ITES
I
IK
FAKLTESI
MHENDISL
I
ISAYAR
IG
BILG
MHENDISL
TABANLI S IKAYET/NER
ANDROID
I PLATFORMU
Zhal CALAYOGLU
gr.Gr. Murat ZALP
IRME
BIT
ALISMASI
HAZIRAN-2015
BILEC
IK
T.C.
SEYH
BILEC
IK
EDEBALI NIVERS
ITES
I
IK
FAKLTESI
MHENDISL
I
ISAYAR
IG
BILG
MHENDISL
TABANLI S IKAYET/NER
ANDROID
I PLATFORMU
Zhal CALAYOGLU
gr.Gr. Murat ZALP
IRME
BIT
ALISMASI
HAZIRAN-2015
BILEC
IK
IR
IM
BILD
Bu bitirme alsmasndaki btn bilgilerin etik davrans ve akademik kurallar erevesinde elde edildiginine yazm kurallarna uygun olarak hazrlanan bu alsmada bana ait
olmayan her trl ifade ve bilginin kaynagna eksiksiz atf yapldgn bildiririm.
DECLARATION
I hereby declare that all information in this finishing work has been obtained and presented
in accordance with academic rules and ethical conduct. I also declare that, as required by
these rules and conduct, I have fully cited and referenced all materials and results that are
not original to this work.
Imza
grencinin Ad SOYADI
tarih:
ii
ZET
IRME
BIT
ALISMASI
TABANLI S IKAYET/NER
ANDROID
I PLATFORMU
Zhal CALAYOGLU
SEYH
BILEC
IK
EDEBALI NIVERS
ITES
I
MHENDISLIK FAKLTESI
I BLM
ISAYAR
IG
BILG
MHENDISL
Dansman: gr.Gr. Murat ZALP
2015, 44 Sayfa
Jri yeleri
Imza
.....................
.....................
.....................
.....................
.....................
.....................
Bilecik Seyh
iii
ABSTRACT
THESIS
ANDROID-BASED COMPLAINT / SUGGESTION PLATFORM
Zhal CALAYOGLU
BILECIK SHEIK EDEBALI UNIVERSITY
ENGINEERING FACULTY
DEPARTMENT OF COMPUTER ENGINEERING
Advisor: Lecturer Murat ZALP
2015, 44 Pages
Jury
Sign
.......................
.......................
.......................
.......................
.......................
.......................
iv
NSZ
blmden meydana gelen bu raporun birinci blmnde, projenin genel tanm ve amacndan, proje asamasnda kullanlan programlar ve programlama dillerinden bahsedilmektedir. Ikinci
blmde ise yaplmas planlanan Bilecik Seyh
Platformuna
benzer projeler hakknda bilgi verilmistir. nc blmde ise projenin tasarm, kodlama ve test
edilmesi hakknda bilgiler yer almaktadr. Bu projenin yazmnn basndan sonuna kadar emegi
geen ve beni bu konuya ynlendiren sayg deger hocam ve dansmanm Sayn Murat ZALPa
tm katklarndan ve hi eksiltmedigi desteginden dolay tesekkr ederim.
grenci Ad Soyad
Zhal CALAYOGLU
Iindekiler
NSZ
SEK
ILLER
TABLOSU
1
vii
IS
GIR
1.1
1.2
BSE
S IKAYET/NER
I PLATFORMU
2.1
alsma Plan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
2.2
2.3
BSE
S IKAYET/NER
I PLATFORMU TASARIM VE KODLAMA ASAMASI
3.1
3.2
3.3
3.4
3.5
3.1.1
3.1.2
3.2.1
Splash Ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2
10
3.2.3
Anasayfa,Detay ve Sikayet
Ekleme Ekranlar . . . . . . . . . . . . . .
14
3.2.4
18
21
3.3.1
Veritaban Olusturulmas . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3.2
Login Tablosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
22
3.3.3
Sikayet
Tablosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
3.3.4
Sikayet
24
24
3.4.1
25
3.4.2
Login Servisi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
27
3.4.3
Tm Sikayet/nerilerin
Listelendigi Servis . . . . . . . . . . . . . . .
27
3.4.4
Veritabanna Sikayet/neri
28
30
vi
SONULAR VE NERILER
33
ZGEMIS
36
vii
SEK
ILLER
TABLOSU
1
CustomHttpClient [9] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
10
10
12
11
13
12
Anasayfa ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14
13
Sikayet
detay ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15
14
Sikayet/neri
ekleme ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . .
16
15
19
16
19
17
ks ekran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20
18
22
19
22
20
Sikayet
tablosu grnm . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
23
21
23
22
Tablolarn iliskilendirilmesi . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
23
25
24
30
25
31
26
31
27
32
viii
IS
GIR
1
1.1
Bilecik Seyh
Edebali Sikayet/neri Platformu adndanda anlaslacag gibi niversitemizin Sikayet ve neri platformudur. Bu platform zerinden rahatsz olunan konuyu veya syle birsey olsa
cok gzel olur dediginiz konuyu paylasarak yetkililerin veya diger kullanclarn grmesini saglayabilecek neri veya sikayeti iletebilecek bir platform olusturulmas amalanmstr.Bu projenin
Bilecik Seyh
1.2
Projede android yazlm gelistirme ksmnda Eclipse program kullanlmstr.Tercihe gre Android Studioda kullanlabilir ancak alsma performans bakmndan Eclipse daha hzl oldugu iin
Eclipse tercih edilmistir.Eclipsede kullanlan dil ise Javadr.Java nesne ynelimli bir programlama dilidir. Sunucu ve android cihaz arasndaki baglant iin web servis olusturulmas gerekmektedir.Web servis yazm Php ile gereklestirilmistir.Ayn sekilde tercihe gre Microsoft Visual
Studioda kullanlabilir.Daha effektif kullanldgndan bu projede Php tercih edilmistir.Web servis
olusturmak iin kullanlan Php, Notepad++ zerinden yazlmstr.Ancak istege gre Dreamweaver gibi benzer programlarda kullanlabilir.Veritaban iin MYSQL veritaban ynetim sistemi
kullanlmstr.Proje denemeleri ilk nce localhost zerinden gereklestirildiginden, local zerinden denemeler USB Web Server kullanlarak gereklenmistir.Daha sonra evrimii denemelerin
yaplmas iin FileZilla zerinden Php dosyalar gerek internet sitesine aktarlmstr.Sonrasnda
ise android cihaz zerinde denemeler gereklenmistir
BSE
S IKAYET/NER
I PLATFORMU
2
2.1
alsma Plan
Sekil
2.2
sletim Sistemi
Android I
Gnmzde mobil cihazlarn nemi gittike artmaktadr. Insanlarn sanal ortamdaki ihtiyalarn zaman ve mekan kstlamas olmadan gidermelerini saglayan bu cihazlar, gn getike daha
da gelismektedir. Bu gelisim dogal olarak; donanm tarafnda oldugu kadar yazlm tarafnda da
gereklesmektedir. Hi sphesiz donanma hayat veren, kullanmn saglayan ve kolaylastran yazlm; mobil platformlar iin de her geen gn nemini arttrmaktadr. Bunlardan birisi de Google
tarafndan gelistirilen ve su an dnyada en yaygn mobil isletim sistemlerinden biri olan, Androiddir. En byk avantaj ak kaynak kodlu olmas ve bunu desteklemesi olan Android, bu
ynyle mobil platformlara uygulama gelistirmek isteyen insanlar iin de nemli bir yol gsterici olmus ve genis bir alan yaratmstr.Gnmzde, mobil cihazlarn nemi gittike artmaktadr.
Insanlarn sanal ortamdaki ihtiyalarn zaman ve mekan kstlamas olmadan gidermelerini saglayan bu cihazlar, gn getike daha da gelismektedir. Bu gelisim dogal olarak; donanm tarafnda
oldugu kadar yazlm tarafnda da gereklesmektedir. Android; Linux tabanl, mobil cihaz ve cep
telefonlar iin gelistirilmekte olan, ak kaynak kodlu bir mobil cretsiz bir isletim sistemidir.
Desteklenen uygulama uzants ".apk"dir. Google tarafndan cretsiz olmasnn sebebi, sistemin
daha hzl ve abuk gelismesi, birok popler marka tarafndan kullanlmas ve bu sayede reklamlarn daha fazla kisiye ulasmasn saglamaktr. Androidde yazlm gelistirirken kullanlan platformlar;Android Studio ve Eclipsedir.Ancak Android Eclipseden destegini ektigi iin gncellemeler olmamakta ve gelecekte tamamen Android Studio kullanlmas amalanmaktadr.Kullanlan
programlama dili ise Javadr. Android, aygtlarn fonksiyonelligini genisleten uygulamalar yazan
genis bir gelistirici grubuna sahiptir. Google Play Store ise, Android isletim sistemi uygulamalarnn esitli sitelerden indirilebilmesinin yan sra, Google tarafndan isletilen kurumsal uygulama
magazasdr. Gelistiriciler, uygulamalarn burada paylasmaktadr.[2]
2.3
Bilecik Seyh
Sekil
Sekil
Sekil
BSE
S IKAYET/NER
I PLATFORMU TASARIM VE
KODLAMA ASAMASI
3.1
3.1.1
slemleri
Androidde Veritabanna Veri Ekleme-Veri ekme I
Veri Ekleme-Veri ekme I
slemleri
JsonParser Ile
Uygulamada ncelikle android cihazdan veritabanna veri eklemek ve veri ekmek iin kullanlacak verileri belli bir formata dnstrmek gerekmektedir.Bu yntem Jsonparser olarak adlandrlan verileri paralayarak iletilmesini saglayan bir formattr.JSON XML e alternatif olan
en iyi veri saklama yapsdr. JSON format basit ve kullansldr. Insanlarn okuyup yazabilmesi
kolaydr. Makinalarn tarayp, yaratabilmesi kolaydr.[5]
Sekil
Sekildeki
rnekte projeye ait sikayet/neri detay sayfasna veriler web servisle paralanarak
gelir.Bunu JsonParser gereklerstirmektedir.
Sekil
3.1.2
Uygulamada web servise veya baska bir saglaycya, bilgi gndermesi(veri tabannda sorgu
iin id, parola, isim vb) veya bilgi almas(veri tabannda yaplms sorgunun cevabnn alnmas)
gibi ihtiyalarda kolaylk saglamaktadr.JsonParserdan fark ise json getirilen bilgiyi paralayarak
stringe evirir.Ancak http de ise serverde yaplms olan sorgunun cevab alnr.[9] CustomHttpye
Sekil
7: CustomHttpClient [9]
kullanmna iliskin rnek vermek gerekirse; Uygulamada kullanc kayt ekrannda kayt yaplrken baz kontrollerin yaplmas gerekmektedir.Bu kontroller projenin android tarafnda CustumHttpClientn web servisten dndrecegi cevaba gre yaplmaktadr.rnegin kullancnn kayt etmek istedigi kullanc adndan veritabannda kaytl olarak varsa Http, serviste olusturulan
sorguya gre "Bu kullanc zaten kaytl" seklinde cevap dndrmektedir.
@Override
protected String doInBackground(String... params) {
// TODO Auto-generated method stub
//Kullanc ad ve parola deerleri php ye gnderilir
//cevap alnr
ArrayList<NameValuePair> gonderilenler = new ArrayList<NameValuePair>();
gonderilenler.add(new BasicNameValuePair("username", params[0]));
gonderilenler.add(new BasicNameValuePair("password", params[1]));
String res = null;
try{
cevap = CustomHttpClient.
executeHttpPost("http://prosetstudio.com/bilcomb/kullaniciKayit.php",
gonderilenler);
res = cevap.toString();
res= res.replaceAll("\\s+","");
}catch (Exception e) {
Toast.makeText(getApplicationContext(), e.toString(),
Toast.LENGTH_SHORT).show();
}
return res;
}
//gelen cevapa gre ilem yaplr.
@Override
protected void onPostExecute(String result) {
pd.dismiss();
if(result.equals("1")){
Toast.makeText(getApplicationContext(),
"Kullanc Ad veya Parola Bo Braklamaz.",
Toast.LENGTH_SHORT).show();
}
if(result.equals("2")){
Toast.makeText(getApplicationContext(),
"Bu Kullanc Zaten Kaytl",
Toast.LENGTH_SHORT).show();
}
if(result.equals("3")){
Toast.makeText(getApplicationContext(),
"Kayt lemi Baarl",
Toast.LENGTH_SHORT).show();
}
super.onPostExecute(result);
}
3.2
Projede kullanlacak ekranlar ve isleyisi taslak seklinde olusturuldu.Tasarm asamasnda niverisitenin logo renkleri baz alnms bu renkler dogrultusunda bir tasarm olusturulmustur.
3.2.1
Splash Ekran
Uygulama alstrldgnda ilk gelmesi dsnlen ekran splash dedigimiz tantm ekrandr.Bu
ekran kullancnn belirleyecegi sre zarfnda ekrana gelerek, uygulama arka planda yklenip hazrlanrken n planda alstrlr ve kullanc bilgilendirir.Bu ekranda Bilecik Seyh
Edebali niversitesi logosu kullanlarak uygulamay tantmas saglanmstr.Ekran sadece logo ve isim tasmasna
ragmen uygulamaya ait baz zelliklerde bu ekranda tutulmaktadr.rnegin kullanc uygulamaya
giris yapms ise ve uygulamadan ks yaparak kmams yani cihazla kms ise kullanc tekrar
uygulamaya girdiginde giris yapmas istenmez anasayfaya ynlendirilir.Bu "Shared Preferences"
denilen yapyla saglanr.Kullanc giris yaptgnda id degeri Sharedla alnr ve ks yaplmadg
srece silinmez.
Sekil
SharedPreferences sp;
sp = getSharedPreferences("login", MODE_PRIVATE);
//eer cihaz uygulamadan ckarsa
//id sharedda tutulur.
if(sp.getString("id", "").equals("")){
Intent i = new
Intent(MainActivity.this,IlkEkran.class);
startActivity(i);
finish();
}
else{
Intent j = new
Intent(MainActivity.this,Anasayfa.class);
startActivity(j);
finish();
}}}
3.2.2
Splash ekran alsmas bittikten sonra kullanc kayt veya giris iin diger sayfalara ynlendirilir.Eger kullanc kaytl ise kullanc ad ve sifre bilgileri istenir.Eger kaytl degilse diger Activitye ynlendirilerek kullanc kaydedilir.
Sekil
A)Internet
Baglantsnn Kontrol
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnSignUp:
if(isOnline())
{
10
11
Sekil
Eger kullanc daha nceden kaytl ise Giris ekranna ynlendirilir.Burada kullancdan kullanc
ad ve parola bilgileri istenmektedir.Kullanc bu bilgileri dogru ve eksiksiz girdigi takdirde dig er Actvitye ynlendirilir.Eger kullanc bilgileri veritabanyla uyusmuyorsa "Kullanc Ad veya
Parola Yanls" diye mesaj verilmektedir.bu mesaja Toast mesaj denmektedir.Toast mesajlar belirlenen sorgu ve kosula gre ekranda yine istege bagl sre zarfnda verilen mesajlardr.Burada
Json denilen yap kullanlmaktadr.Kullancnn girdigi parametreler stringe evrilerek web servise gnderilir.Eger girilen parola ve kullanc ad degerleri uyusursa id ve username Sharede
eklenir. B)Kullanc Giriste Json ile Veri Ekleyip ekme
12
if (success == 1) {
//jsondan dnen id ve username deerleri
//shared'a eklenir
editor.putString("id", json.getString("id"));
editor.putString("ad", json.getString("username"));
editor.commit();
durum="1";
} else{
durum="0";
}
} catch (JSONException e) {
e.printStackTrace();
}
return null;
Sekil
13
3.2.3
Anasayfa,Detay ve Sikayet
Ekleme Ekranlar
Sekil
A)Sikayet/
Istek
Ikonlar
Ayarlanr
14
Ansayfada her Listviewe tklanma olay verilerek diger Actvitye geis saglanmstr.Bu ekran ise
Detay ekrandr.Yani Lisviewde grntlenen her bir sikayetin ayrntlarna ulasabilecegimiz bir
ekrana geis yaplmaktadr.Bu ekranda sikayet ad, kullanc adnn yan sra sikayet ierigi, resmi
, konum ve baslk gibi bilgiler grntlenmektedir.Bu veriler Json ile paraladgmz verilerdir.Bu
veriler Anasayfadan alnmaktadr.String olarak alnan veriler ilgili birimlerine yazdrlr.Burada
alnan degerler indirilmis olan font degerleri belirlenerek eklenir.Yaz fontu herbir birim iin ayr
belirlenmistir.
B)Yaz Fontlar Ayarlanr
Sekil
13: Sikayet
detay ekran
15
ekleme
ekrannda veritabanna Stringe evrilerek eklenen resim degeri Jsonla ekilerek Bitmap degerine
dnstrlr.Bu ekranda ActionBar zerinde kullancnn anasayfaya dnebilecegi geri butonu da
yer almaktadr.
C)String Olarak ekilen Resim Degerinin Bitmap Formatna Dnstrlmesi
Sekil
14: Sikayet/neri
ekleme ekran
16
ekilen resim ve diger ierikler kayt butonuna basldg anda veritabanna kaydedilmektedir.Kullanclarn sikayet ierigi olmadan direk resim ekip eklemeside engellenmistir.Bu ekranda
veritabanna kaydedilen ancak gzkmeyen zaman dilimi degeri bulunmaktadr.Kullanc sikayeti
ekledigi anda zaman dilimi kaydedilir daha sonra ilgili sikayetin zaman detay ekrannda ekilmektedir.
D)Tarih ve Saatin Alnarak Veritabanna Kaydedilmesi
Calendar c;
SimpleDateFormat sdf,sdfSaat;
String tarih,saat,zaman;
//Tarih ve saat alnr.
c = Calendar.getInstance();
sdf = new SimpleDateFormat("dd.MM.yyyy");
tarih = sdf.format(new Date());
sdfSaat = new SimpleDateFormat("HH:mm:ss");
saat = sdfSaat.format(c.getTime());
//tarih ve saat tek stringte birletirilir.
zaman = tarih+" "+saat;
//ikayet kaydediliyor
sKayit gorev = new sKayit();
gorev.execute(new String[]
{sikayetadi,sicerik,image_str,k_id,istek,konum_str,zaman});
E)Kamera Almas ve Resmin Stringe evrilerek Kaydedilmesi
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bResim:
Intent cameraIntent = new Intent(android.provider.MediaStore.
ACTION_IMAGE_CAPTURE);
startActivityForResult(cameraIntent, CAMERA_REQUEST);
break;
17
case R.id.bKayit:
String sikayetadi = sadi.getText().toString();
String sicerik = saciklama.getText().toString();
Bitmap bitmap = ((BitmapDrawable)resimekle.getDrawable()).getBitmap();
ByteArrayOutputStream stream = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 90, stream);
byte [] byte_arr = stream.toByteArray();
String image_str = Base64.encodeToString(byte_arr,
Base64.DEFAULT);
String istek = secim.getSelectedItem().toString();
String konum_str = konum.getSelectedItem().toString();
//login ekrannda eklenen id deerini alr.
String k_id = sp.getString("id", "");
//tarih ve saat tek stringte birletirilir.
zaman = tarih+" "+saat;
//ikayet kaydediliyor
sKayit gorev = new sKayit();
gorev.execute(new String[]
{sikayetadi,sicerik,image_str,k_id,istek,konum_str,zaman});
break;
3.2.4
Navigation Drawer Anasayfa ekrannda sol tarafta bulunan kullancnn birden ok ekrana gidebilmesi iin yntem saglar.Uygulama alstrldgnda gizli olarak grnr.Kullanc parmagn
soldan saga dogru kaydrmas veya ActionBar zerinde bulunan butona tklamas halinde grnr.Navigation Drawer tasarlanrken Actvity olusturulmaz.Bu men iin mutlaka Fragment olarak adlandrlan yapnn kullanlmas sarttr.Fragmentler yaps itibariyle Activitylere benzer ancak arayz ve baz komutlarn kullanm bakmndan farkllk gstermektedir.Slider men olarak
Anasayfa, profil, ks seklinde adet seenek sunulmustur.Kullanc bunlardan birine tkladg
takdirde ilgili ekrana ynlendirilir.[3]
18
Sekil
Profil ekranna tkladgnda kullancnn kendi profil ekranna ynlendirilir.Bu ekranda ilgili
kullancya ait bilgiler yer almaktadr.Bu bilgiler kullanc ad ve profil resmidir.Splash ekrannda Shared ile alnan kullanc id kullanlarak kullanc ad ve profil resmi bilgileri ekilmektedir.Ayrca kullanc istedigi takdirde profil resmini degistirebilmektedir.Dzenle ikonlu butona
tklandgnda resim ek ve ykle olmak zeri iki buton gzkmektedir.Resim ek butonuna basldg anda resim ekilir, ykle butonuna tklandg anda ise resim string formata evrilerek veritabanna kaydedilir.Kullancnn profil ekranna her girisinde kaydedilen resim gzkmektedir.
Sekil
ks yap ikonuna tklandgnda ise kullancya "ks yapmak istediginizden emin misiniz?"
seklinde bir diyalog ekran sunulmaktadr.Kullanc "Evet" dedigi takdirde uygulamadan klmaktadr.Hayr derse uygulamada kalnmaktadr.Ayrca kullanc ks yapmadan cihaz yardmyla
uygulamadan karsa, tekrar uygulamaya girildiginde tekrar giris yapmasna gerek yoktur.nk
kullanc ks yapmadg iin kullanc bilgileri Shared ile tutulmaktadr. A)Alert Dialog ks
Sekil
17: ks ekran
20
alertDialogBuilder.setPositiveButton("Evet",new
DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
editor.remove("id");
editor.commit();
Intent i=new Intent(Anasayfa.this,Login.class);
startActivity(i);
finish();
}}); alertDialogBuilder.setNegativeButton("Hayr",new
DialogInterface.OnClickListener()
3.3
3.3.1
Projede USB Web Server kullanlarak localhost zerinden Mysql zerinden veritaban ve tablolar olusturulmustur.Usb web server kendi bilgisayarnzda olusturacagnz sanal web sunucusudur.Apache, MySQL, Php ve PhpMyAdmini iinde barndran ve bunlara kolayca erisebileceginiz
bir programdr.[8] phpMyAdminde Veritaban ve tablolarn olusturulmas;
21
Sekil
3.3.2
Login Tablosu
Veritaban olusturulduktan sonra id,username,password ve profilresim olmak zere 4 alana sahip login tablosu olusturulmustur.Kullanc kayd, profil resmi eklenmesi ve kullanc girisin denetlenmesi bu tablo zerinden yaplmaktadr.
Sekil
22
3.3.3
Sikayet
Tablosu
Uygulamada yer alan diger tablo ise "sikayet" olarak isimlendirilen tablodur.Bu tabloda sid
,sikayetadi, sicerik , resimadi, kid , istek ,konumstr alanlar bulunmaktadr.Bu tablo ile kullanclar sikayet ekler eklenen sikayetler veritabanndan ekilerek gsterilmektedir.Burada kid olarak
isimlendirilen alan ise login tablosundan alnan kullanc id dir.Bu id sayesinde hangi kullancnn hangi sikayet/neriyi ekledigi bilgisine ulaslabilmektedir. Kullancnn ekmis oldugu sika-
Sekil
20: Sikayet
tablosu grnm
yet/neri resmi ise resimadi olarak bulunan alana eklenmektedir.Ancak resim format veritabanna
text seklinde kaydedilmektedir.Bu ekleme islemi bitmap-string formuna dnstrlerek yaplmaktadr.Bu sekilde ekilen .jpg veya .png uzantl resim string halinde veritabanna kaydedilebilmektedir.
Sekil
23
3.3.4
skilendirilmesi
Sikayet
Sikayet
listelenmesi esnasnda hangi sikayet/neri kim tarafndan yapld, profil resmi gibi bilgilerin alnabilmesi iin iki tablonun iliskilendirilmesi gerekmektedir.Iliskilendirme hem Mysql
tarafnda hemde Php tarafnda yaplmaktadr.Sekilde
Mysqlde sikayet tablosundaki "kid" ile login tablosundaki "id" ikiskilendirilmektedir. Web serviste ise tm sikayetlerin listelenebilmesi iin
Sekil
$con=mysql_connect('localhost','pdsprose','L16ngedH');
mysql_select_db("pdsprose_bilcomb",$con);
//login ile sikayet tablolarndaki id'ler ilikilendirilir
$result = mysql_query("SELECT *FROM sikayet s,login l where
s.k_id=l.id") or die(mysql_error());
3.4
Php Web Servis Android cihaz ile veritaban arasnda baglant kurmamz saglayan bir XML
formatdr.Bu sayede veritabanna gnderilen veriler json olarak veritabanna kaydedilip ekilebilir.
24
Uygulamada veritabanna veri eklemek ve veri ekmek iin Notepad++ yardmyla baz web servisler yazlmstr.[7]
Sekil
3.4.1
//Post metodu
25
$hata = false;
$sonucmesaji = "";
if($username=="" || $password==""){
$hata = true;
$sonucmesaji = "1";
//bosa
//Kullanc ad veya parola bo braklamaz
}
//sorguyu mysql'e gnderir
$sql ="SELECT * FROM login WHERE username='".$username."'";
$sonuc = mysql_query($sql);
//php ile ekilen verinin ka adet olduunu gsterir.
if(mysql_num_rows($sonuc)>0){//0 dan fazla veri varsa
$hata =true;
$sonucmesaji = "2";
//eer ayn isimli baka kullanc varsa
//Bu kullanc zaten kaytl mesajn dndrr
}
26
mysql_close();?>
3.4.2
Login Servisi
Login servisinde kullancnn girisi iin gerekli sorgulamalar yaplr.Eger post ile gnderilen
kullanc ve parola veritaban ile uyusuyorsa anasayfaya gidilir yoksa mesaj verilir.
B)Login Php Web Servisi
if (mysql_num_rows($result)>0) {
while ($row = mysql_fetch_array($result)){
$response["success"] = 1;
$response["id"] = $row['id'];
}
3.4.3
Tm Sikayet/nerilerin
Listelendigi Servis
veritabannda bulunan tm
sikayetleri json ile ekerek anasayfada listenmesini saglar.
A)Anasayfa Php Web Servisi
27
3.4.4
Veritabanna Sikayet/neri
Uygulamada kullancnn herhangi bir konuda sikayet/neri eklemesini saglayan Actvitye gelindiginde verileri kaydeden web servis olusturulmustur.Bu serviste kullancdan aldg bilgileri
id yi kullanarak tabloya eklemektedir.Burada eger eksik bilgi girilmisse bunu kontrol edip sonuc
mesaj dndrlmektedir.Eger bilgiler eksiksiz ise veritabanna kayt yaplmaktadr.
Sikayet/neri
28
<?php
if (isset($_POST['sikayetadi']) && isset($_POST['sicerik'])
&& isset($_POST['resimadi'])
&& isset($_POST['k_id']) && isset($_POST['istek']) &&
isset($_POST['konum_str']) ) {
$sikayetadi = $_POST['sikayetadi'];
$sicerik = $_POST['sicerik'];
$resimadi = $_POST['resimadi'];
$k_id = $_POST['k_id'];
$istek = $_POST['istek'];
$konum_str = $_POST['konum_str'];
}
$hata = false;
$sonucmesaji = "";
if($sikayetadi=="" || $sicerik=="" || $resimadi=="" ||
$k_id=="" || $istek=="stek Seiniz.." || $konum_str=="Konum
Belirtiniz.."){
$hata = true;
$sonucmesaji = "1";
}
if(!$hata){//eer hata yoksa
mysql_query("insert into
sikayet(sikayetadi,sicerik,resimadi,k_id,istek,konum_str)
values('{$sikayetadi}','{$sicerik}','{$resimadi}',
'{$k_id}','{$istek}','{$konum_str}')");
$sonucmesaji="2";
}
echo $sonucmesaji;?>
29
3.5
Uygulama denemeleri yaplrken Usb Web Server kullanlarak localhost zerinden deneme alsmalar gereklestirilip ve Genymotion ekrannda gsteriliyordu.Daha sonra uygulama gerek bir
host adresi kullanlarak evrimii ortamda denenmeye basland.Php servislerin evrimii ortama
aktarlmas iin FileZilla program kullanld.Bu program ile hosting hesaplarna dosya aktarm
yapan , hesaptan dosyalar ekilebilmesini saglayan bir programdr. Servisler localden evrimii
Sekil
$con=mysql_connect('localhost','root','');
mysql_select_db("database ad",$con);
Servis gerek bir host adresi zerinde alstrlacag zaman baglant ayarlar bu host adresinin
bilgilerini iermek durumundadadr.
$con=mysql_connect('localhost','pdsprose','sifregirilir');
30
mysql_select_db("pdsprose_bilcomb",$con);
FileZilla program alstrlrken ncelikle baglanlan sitenin bilgileri girilir ve siteye baglanlmaya alslr.Siteye baglant gerekletirldiyse artk veritabanna ulaslabilir.Ekranda sol ksmda
yer alan .php dosyalar srklenip braklarak sag ksma tasnr.Bu sekilde servisler aktarlms olur.
Servisler evrimii ortama aktarldktan sonra gerek hosting zerinde Phpmyadmin zerinde localhostta oldugu gibi tablolar olusturuldu.
Tablolar yine Mysqlde fakat adres ubugunda gsterildigi gibi gerek bir host adresinde olusturulmustur. Ousturulan tablolara rnek degerler kaydedilmistir.
Sekil
Sekil
31
Servisler sekilde grldg gibi evrimii ortamda denenmektedir.Ok ile gsterilen ksm gerek bir adresten baglanlan servistir.
Sekil
32
SONULAR VE NERILER
Yaplmas planlanan proje ncesinde benzer olan projeler incelendi ve o projelerde bulunan
eksikler tespit edilerek projeye eklenmeye alsld.Proje tasarmnda ve ieriginde neler olacag
belirlendi.Tasarm olarak Bilecik Seyh
33
KAYNAKLAR
Kaynaklar
[1] OMU Sikayet/Oneri Platformu(2015),(Erisim:1-07-2015).
http://www.ademturker.com.tr/index.php?sayfa=nedir
[2] Wikipedia(tarihsiz),(Erisim:29-06-2015) .
http://tr.wikipedia.org/wiki/Android.
[3] Navigation Drawer(tarihsiz).
https://developer.android.com/design/patterns/navigation-drawer.html.
[4] REST webservice with symfony(2011),(Erisim:1-07-2015).
http://di-side.com/di-side/services/web-solutions/rest-webservice-symfony/
[5] Android ile JSON Dosyadan Parse (2010),(Erisim:1-07-2015).
http://trandroid.com/2010/05/18/android-ile-json-dosyadan-parse-ornegi-2/
[6] Android Http Post ve JSON Parse Etme(2013),(Erisim:1-07-2015).
http://www.mobilhanem.com/android-http-post-ve-json-parse-etme/
[7] Develop
Complete
Android
Login
Registration
System
with
PHP,
MySQL(2013),(Erisim:1-07-2015).
http://www.learn2crack.com/2013/08/develop-android-login
-registration-with-php-mysql.html
[8] Connect Android to MySQL Database Tutorial(2011),(Erisim:1-07-2015).
http://www.b4x.com/android/forum/threads/connect-android-to
-mysql-database-tutorial.8339/
[9] Android Internet Connection Using HTTP GET (HttpClient)(tarihsiz),(Erisim:1-07-2015).
http://hmkcode.com/android-internet-connection-using-http
-get-httpclient/
[10] ListView Ozellestirme(2014),(Erisim:1-07-2015).
https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/
android-301/listview-ozellestirme
34
http://khblog.net/makale/74/android-programlama-ile-mysql
-veritabani-baglantisi-php-web-servis.html
35
ZGEMIS
KIS ISEL BILGILER
Ad Soyad
:Zhal Calayoglu
Uyrugu
: T.C
: Gazipasa Mah.Tevfikbey
Cad.No:10/A MERKEZ/BILECIK
Telefon
: 05434467327
: zuhal.calayoglu@gmail.com
ITIM DURUMU
EG
Lisans grenimi
: Bilecik Seyh
Bitirme Yl
: 2015
Lise
: TOSYA LISESI
IS DENEYIMLERI
Yl
Kurum
Stajlar
ILGI ALANLARI
YABANCI DILLER
: INGILIZCE
36