Merhaba arkadaşlar bu yazımızda biraz kapsamlı bir konuyu ele almak istiyorum.Yaptığım bir projedeki bir çalışmayı paylaşmak istiyorum. Konumuz bir android telefonun local (iç) network’te oluşturulmuş bir FTP sunucusuna bağlanıp , veri yazmasıdır. Uygulamayı gerçekleyebilmeniz için temel android bilmeniz yeterlidir.Sanallaştırma kısımlarında konu yeterince ele alınmıştır.Ekstra bilgiye gerek duyulmamaktadır.Bu çalışma ilerletilmeye yöneliktir bir konudur. Bu konuyu parçalara bölerek anlatacağım. Her parça kendine göre özellikler barındırmaktadır. İyi takip edip uygulamanızı tavsiye ederim.

Konu başlıkları :
1 – Vmware Workstation ile sanallaştırma
2 – Microsoft Windows Server 2008 R2 kurulumu
3 – Windows Server’da FTP kurulumu
4 – Browser’da ve dosya aktarım programlarında FTP kullanımı
5 – Android FTP uygulaması
6 – Bütün projeye bakış

______________                   Vmware Workstation ile sanallaştırma                  ____________

Soru-Cevap : Sanallaştırma Nedir ?
– Sanallaştırma, fiziksel bir bilgisayarın bütün çevresel birimleri yazılımsal olarak bölme , işleme , kullanma işlemidir.

Neden Gereklidir ?
–  Sebep 1 : Binlerce dolardan kurtararak ucuzcu bir yaklaşım sağlamaktadır.
–  Sebep 2 : Çevreci olup enerji sarfiyatı sağlamaktadır.
–  Sebep 3 : İşlemcilerin hiç bir zaman her saniyede mevcut donanımın %100 ‘ünü kullanılamadığı için maliyet ile doğru orantılı sıkıştırma sebebidir.

Piyasadaki ürünleri nelerdir ?

– Birçok firma bulunmaktadır. Bunlardan en başlıcaları : Vmware , Hyper-V , VirtualBox’tır.

Ücretsiz ürün desteği nasıl sağlanmaktadır ?
– Vmware , Workstation  ürünü ile ; Hyper-V 180 günlük kullanım süresi ile ; VirtualBox tamamen ücretsiz olması ile böyle bir imkan sağlamaktadır.

Kurulum ve kullanım zorlukları bulunmaktamı ?
– Fiziksel cihazlar ile tamamen aynı mantıkta çalışmaktadır. Kurulum ve kullanımı gayet kolay olmakla beraber platform’a destek günümüzde oldukça fazladır.

Nasıl çalışmaktadır ?
– İşlemci’yi , RAM’i  ve diğer çevresel faktörleri yazılımsal olarak kullanmaktadır.
İşlemci’yi yüzdesel olarak anlık işlem boyutu ile
RAM’i boyutlara parçalayarak.
Harddisk’i istenilen ölçütte bölerek.

Diğer çevresel birimleri ( ses , ağ , ekran , cd/dvd rom vb.) ortak kullanım alanından kullanmaktadır.Sadece network’te ve cd/dvd rom kısmında ayrıcalıklara sahiptir. Ağ kartında fiziksel bilgisayar ile bağ kurabildiği bir arayüz bulunmaktadır. Bu arayüzde yine yazılımsaldır. CD/DVD Rom kısmında ekstra imaj ( .iso .img .rar ) dosya biçimleri tanımlamaları için bir ortam sağlamaktadır. 

Benzetiminiz ?
– VNC ile bir cihaza erişmek gibi düşünebilirsiniz. Bu bağlantı sadece fiziksel cihaz ile sanal (yazılımsal) cihaz arasında gerçeklenmektedir.

İndirilmesi Gerekenler: Vmware Workstation : https://my.vmware.com/web/vmware/evalcenter?p=vmware-workstation9&q=&esrc=s&source=web&cd=3&ved=0CEcQFjAC&url=http://www.vmware.com/go/downloadworkstation&ei=lAjFUIanDNC4hAfNoYHoCA&usg=AFQjCNEVKbKEcEsfY7NjAaBQZbrtZtXttg&sig2=uTuUsbDkGi5DCMv4VA2oAg
Resimde görülen şekilde yapınız.Daha sonra iletişim mail adresinize Vmware adına bir mail gelecektir. Maili açınız . “Active” butonuna basınız. Eğer mail gelmedi ise Junk ( Gereksiz – SPAM ) klasörü altında gelmiş olabilir. Eğer hala gelmiyor ise üstteki resimdeki sayfada FREE TRIAL bastıktan sonra gelen sayfada Resend Mail butonu bulunacaktır. Bu şekilde maili tekrar attırmanız mevcuttur. active Devamında bir başka sayfa gelecektir ve üyelik şifrenizi isteyecektir.Giriş yapınız.active1 Giriş yaptıktan sonra işletim sisteminize en uygun Vmware versiyonunu seçiniz. active2

Microsoft Windows Server 2008 R2 x64: ( NOT : Bu sürümün 180 günlük olarak kullanacağımızdan deneme amaçlı kullanmaktayız. Ayrıca Bu link 64 bit bilgisayarlarda çalışmaktadır.) :  http://yadi.sk/d/YmCg6m8d1H5_g

______________                   Vmware Kurulum                   ____________

İndirdiğiniz programı çalıştırınız.Daha sonra alt kısımdaki resimleri takip ediniz.(WINDOWS İÇİN)

vmwareinstall

Linux kullanıcıları işlemci çekirdeklerine göre VMware Workstation sürümünü indiriniz.Devamında indirdiğiniz klasör altına konsol üzerinden giderek

sudo chmod +x VMware-Workstation-Full-9.0.0-812388.x86_64.bundle
sudo ./VMware-Workstation-Full-9.0.0-812388.x86_64.bundle

yazınız. Not: Bu kısımda yazdığım sürüm ile indirdiğiniz sürüm değişebilir dikkat ediniz. Bu kısımdan sonrası tamamen Next-Next-Next-Finish şeklindedir. İndirdiğiniz dosya uzantısı “.txt” ise lütfen bunu “.bundle” olarak değiştiriniz. VMware tarafından yapılmış bir yanlışlıktır.

______________                   Microsoft Windows Server 2008 R2 kurulumu                   ____________

Vmware’i başlatınız.

vmwarebaslatmak Home sekmesi altında “Create a New Virtual Machine” e tıklayınız.

winKurulum

Sırası ile adımları izleyiniz.

winKurulum1

Burada aslında istediğiniz işletim sisteminizi bu uygulama dısındada kurmanız mümkündür . ( NOT : ISO dosyasını bulduğunuz takdirde). Ben 64 bit bilgisayarım olduğundan kuruyorum sizler 32 bit işletim sistemlerine sahipseniz , ISO dosyasını temin etmenizi rica edeceğim. Bulutumda yer bulamadığımdan dolayı ve piyasada sürekli 64bit işlemcili bilgisayarlar bulunduğundan 64 bit işletim sistemini koymayı tercih ettim. Burada da dikkat ediniz. Seçtikten sonra devam ediyoruz.

winKurulum2

Devam ettikten sonra alttaki resmi uygulayınız. winKurulum3

winKurulum4

Finish dedikten sonra işlemimiz tamamlanmış ve alttaki gibi bir ekran gelmiş olacaktır. Bu ekranda “Edit virtual machine settings” seçeneğini seçiyoruz.

winKurulum5

Gelen ekranda alttaki resimdeki işlemleri yapınız.

winKurulum6

winKurulum7ISO dosyamızı şeçip “Aç” dedikten sonra gelen ekranda iki üstteki resimde olan OK butonu gelecektir. Bu butona basınız.

Şimdi “Power on this virtual machine” butonuna basabiliriz. Önemli Not: Bilgisayarınızda BIOS’ta virtualization sekmesi “DISABLE” olduğu takdirde çalıştıramayacaksınız. Bunun için bilgisayarınızı yeniden başlatıp DEL yada F2 tuşuna basarak BIOS özelliklerine geliniz. Ardından Virtualization sekmesini bulup ENABLE ediniz.

winKurulum8

Burada sadece klavye seçeneğini değiştirip. Turkish Q seçip, Next butonuna basınız.

winKurulum9

“Install now” butonuna basınız.

winKurulum10

Devam ettikten sonra alttaki resimleri takip ediniz. winKurulum11

winKurulum13Bu işlem bittiği zaman size giriş için kullanıcı adı şifre sorgusu gelecektir. Burada büyük küçük harf ve sayı kullanınız aksi takdirde giriş yapamayacaksiniz. Örnek : Password1winKurulum12

winKurulum14

Windows Server 2008 R2 sanallaştırma bölümümüz sona ermiştir.

Sanal bilgisayarı networke bağlamak:
Vmware’de sağ alt köşede resimdeki simgeye sağ tıklayınız. “Setting” i seçiniz. 1.1Devamında “Network Adapter” sekmesine tıklayıp. “Custom” butonuna bastığınız takdirde şekildeki sekmeler aktif olacaktır ve buradan Vmnet0’ı (o = sıfır) seçiniz. “OK” diyerek işlemi tamamlayınız. 1.2IP adresi alıp almadığını öğrenmek için; Vmware’de başlata basıp “Command Prompt” yani Başlat -> Run diyerek “CMD” yazmış olmanızla aynı anlamı kazanmış olacaktır. 1.3Burada “ipconfig” diyiniz. IP adresim “192.168.0.16” . Bu rakam sizde farklılık göstermesi muhtemel ve doğaldır. Bu ip adresi sanal bilgisayarın IP adresi olduğunu unutmayıp , kaydediniz. 1.4

______________                   Windows Server’da FTP kurulumu                  ____________

Sanal makinanızda başlat menusundeki Server Manager sekmesine basınız.

1Gelen pencerede sol kısımda “Roles” sekmesine sağ tıklayınız ve “Add Roles” diyiniz ve resimleri tek tek takip ediniz.

2

3 4

5 6 7 8

Bu işlemi tamamladıktan sonra IIS kurulmuş olacaktır ve konfigure etmeye etmek için öncelikle Start -> Administrative Tools -> IIS Manager ‘a giriniz. Devamında resimleri takip ediniz. 9 2 3 4 5 6 7 8 9 10 11 12 13 14 15Böylece FTP kurulumunu tamamlamış oldunuz.

______________             Browser’da ve dosya aktarım programlarında FTP kullanımı                 ____________

FTP kurulumu tamamlanıp herşey yolunda olduğuna göre herhangi bir browserdan yada bir programdan test etmeye başlayabilirsiniz. Herhangi bir browserda “ftp://IPADRESINIZ” şeklinde giriş yapınız. Kullanıcı adı ve şifre sanal bilgisayarın açılış bilgileridir.

17 18

FTP klasörü olarak belirlediğiniz klasörde bir deneme dosyası oluşturunuz ve bir önceki resimdeki Giriş Yap butonuna bastıktan sonraki durumu gözlemleyiniz.

19 20

Görüldüğü üzere “deneme.txt” dosyamız aktarılmış bulunmakta ve bunu rahatça ev üzerinde kurduğumuz serverımız üzerinden görebilmekteyiz.

______________                   Android FTP uygulaması                  ____________

Öncelikle uygulamayı anlatacak olursak. Uygulamanın amacı belirli zaman aralıkları ile kaydedilmiş sıcak , hareket vb. tip verilerin telefon üzerinden kontrol edilip. İstenilen ölçüde kullanıcı tarafından sıralabilmesi , arama özelliğinin bulunması ve son olarak bir FTP sunucusuna bağlanarak bu verileri çekebiliyor olmasıdır. Uygulama ucu açık şekilde sizlere bırakılacaktır. Üzülerek çok ileri düzeyde geliştirilmiş yazılımım mevcut ancak bir firmaya söz verdiğim için paylaşamıyorum. Ancak sizleri bu konuda fazlasıyla bilgilendireceğime inanıyorum. Hızlıca başlayacak olursak ;

Bir text dosyasına ve içerisine yazılmış verilere ihtiyacımız vardır. Bunu örnek olarak gösterecek olursak : text Şekildeki gibi bir veri dosyası oluşturunuz. Daha sonra bu dosyayı sanal bilgisayarınızdaki ftp dosyanızın  (kendi ftp dosyam Masaüstündeki “gokhan” klasörüdür.) içine atınız.

Android’de yapacağımız işlemlere gelecek olursak. :
Apache firmasının android ve java developer’ları için geliştirdiği bir kütüphaneyi indiriniz. : org.apache.commons

Kütüphane’yi java’ya eklemek :

1 2 3

4

5

Kullanılacak FTP kütüphane fonksiyonları :
Kütüphaneyi çağırmak için gerekecek olan kod :

import org.apache.commons.net.ftp.*;

Bağlantıyı sağlayacak fonksiyonumuz : ( host : ipadresimiz , username : Administrator , password : Password1 Port : 21’dir.
Bu fonksiyonu başka bir fonksiyon tarafından çağırılacaktır.)


public boolean ftpConnect(String host, String username, String password,
			int port) {
		try {
			mFTPClient = new FTPClient();

			mFTPClient.connect(host, port);

			if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
				boolean status = mFTPClient.login(username, password);
                                mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
				mFTPClient.enterLocalPassiveMode();

				return status;
			}
		} catch (Exception e) {
			Log.d("TAG", "HATA: Host'a bağlanılamadı : " + host);
		}

		return false;
	}

İndirmeyi yapacağımız fonksiyon : ( srcFilePath : indirmeyi yapacağımız adres “/LOG.txt” ,
desFilePath : Android telefonda kaydedilecek yer. “mnt/sdcard/LOG/LOG.txt” )

	public boolean ftpDownload(String srcFilePath, String desFilePath) {
		boolean status = false;
		try {
			FileOutputStream desFileStream = new FileOutputStream(desFilePath);
                        status = mFTPClient.retrieveFile(srcFilePath, desFileStream);
			desFileStream.close();

			return status;
		} catch (Exception e) {
			Log.d("TAG", "İndirme hatası");
		}

		return status;
	}

Genel işleri tamamlayan fonksiyon : ( FILENAME anafonksiyon üzerinden çağırılacaktır.FILENAME = “LOG.txt” )

private void fftpDownload(String FILENAME) {
 String username = "Administrator";
 String password = "Password1";

String destFILENAME = "/mnt/sdcard/LOG/" + FILENAME;
 String host = "192.168.1.20"; // bağlanılacak IP adresi
 int port = 21;//port
 File path = new File(Environment.getExternalStorageDirectory(), "/LOG/");
 path.mkdirs(); // /mnt/sdcard/ altında /LOG oluşturuluyor
 File file = new File(path, FILENAME);
 try {
 file.createNewFile(); // /mnt/sdcard/ altında /LOG oluşturuluyor
 } catch (IOException e) {
 e.printStackTrace();
 }

ftpConnect(host, username, password, port);//bağlantıyı yaptığımız fonksiyon
ftpDownload(FILENAME, destFILENAME); // indirme işlemini yaptığımız fonksiyon
 }

Şimdi Android ekranımızı ve layout konfigurasyonlarımızı anlatmaya başlayalım.
Ekranda yapmak istediğimiz 1 EditText 1 ListView olacaktır. Böylece EditText’te yazdığımız verinin aramasını ListView tarafından yapılacaktır ve sonuc karşımıza getirilecektir.

1EditText ve 1 Adet ListView ekrana koyunuz.
6

Şimdi bir layout xml dosyası oluşturup içine bir adet TextView oluşturunuz.Öncelikle resimdeki tuşa basınız. Eğer bulunmuyorsa ikinci resmi takip ediniz.

7

8

9

10

Şimdi ListView konfigurasyonlarını yapalım.

[codesyntax lang=”java” title=”Arama işlemini yapacak olan class’ımız”]

class MyCustomAdapter extends BaseAdapter {

String[] data_text;

MyCustomAdapter() {
}

MyCustomAdapter(String[] text) {
data_text = text;
}

MyCustomAdapter(ArrayList<String> text) {

data_text = new String

[text language=”.size()”][/text]

;

for (int i = 0; i < text.size(); i++) {
data_text[i] = text.get(i);
}

}

public int getCount() {
return data_text.length;
}

public String getItem(int position) {
return null;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater = getLayoutInflater();
View row;

row = inflater.inflate(R.layout.layout, parent, false);

TextView textview = (TextView) row.findViewById(R.id.textView10);

textview.setText(data_text[position]);

return (row);

}
}

[/codesyntax] [codesyntax lang="java" title="FTP'den indirip kaydetme işlemini yapan ve verileri text'e aktaran fonksiyon "]

private boolean saveFromFile(String FILENAME) {
try {

fftpDownload(FILENAME);

File file = new File("/mnt/sdcard/LOG/"+FILENAME);
FileInputStream fIn;
fIn = new FileInputStream(file);
BufferedReader buf = new BufferedReader(new InputStreamReader(fIn));
String str = "";

while (((str = buf.readLine()) != null)) {
text[o] = str;
o++;
setI(o);
}
Toast.makeText(this, "Veriler okundu", Toast.LENGTH_LONG).show();
setI(o);

} catch (IOException e) {
Toast.makeText(this, "Veri Alınamadı !!!", Toast.LENGTH_LONG)
.show();
Log.d("BUG!!", e.toString());
}
return true;
}
[/codesyntax] [codesyntax lang="java" title="ListView ve EditText tanımlamaları"]

             final ListView listview = (ListView) findViewById(R.id.listView1); 
             final EditText editText = (EditText) findViewById(R.id.editText1); 
             saveFromFile(FILENAME); 
             listview.setAdapter(new MyCustomAdapter(text));

[/codesyntax] [codesyntax lang=”java” title=”EditText’teki yazının arama işlemi yapan class’ı çağırılması”]

editText.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub

}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

public void afterTextChanged(Editable s) {

textlength = editText.getText().length();
text_sort.clear();

for (int i = 0; i < text.length; i++) {
if (textlength <= text[i].length()) {
if (editText
.getText()
.toString()
.equalsIgnoreCase(
(String) text[i].subSequence(0,
textlength))) {
text_sort.add(text[i]);

}
}
}
listview.setAdapter(new MyCustomAdapter(text_sort));

}
});

[/codesyntax] [codesyntax lang="php" title="Statik tanımlamalar"]

public FTPClient mFTPClient = null; // FTP işlemleri için kullanacağımız class'ın tanımlanması
public static int o = 0;  //verilerin text'e aktarılırken kullanılan matris noktası

/*bu değişkenin kullanılma sebebi verilerin ListViewde 11'er 11'er
sıralanmasıdır.12.ve daha sonraki verileri aktarmak için gereklidir*/
public static int matrixSize = 11;//11'li veri tutumu
public static String FILENAME = "LOG.txt";//Dosya ismi
String[] text = new String[matrixSize];//verilerin aktarılacağı array

int textlength = 0;
ArrayList text_sort = new ArrayList();

private int getI() {//o değişkenini getiren fonksiyon
return o;
}

private void setI(int setirI) {//o değişkenini o anki değerini class değerine kaydeden fonksiyon
this.o = setirI;
}


[/codesyntax] AndroidManifest’te izin verilmesi gerekenler :

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

______________                   Bütün projeye bakış                  ____________ [codesyntax lang=”java” title=”Main_ftpUygulama.java”]

package com.mcuturkey.ftpuygulama;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;

import android.os.Bundle;
import android.os.Environment;
import android.app.Activity;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import org.apache.commons.net.ftp.FTP;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPReply;
public class Main_ftpUygulama extends Activity {
public FTPClient mFTPClient = null;
public static int o = 0;
public static int matrixSize = 11;
public static String FILENAME = “LOG.txt”;
String[] text = new String[matrixSize];

int textlength = 0;
ArrayList text_sort = new ArrayList();

private int getI() {
return o;
}

private void setI(int setirI) {
this.o = setirI;
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_ftp_uygulama);
final ListView listview = (ListView) findViewById(R.id.listView1);
final EditText editText = (EditText) findViewById(R.id.editText1);

saveFromFile(FILENAME);
listview.setAdapter(new MyCustomAdapter(text));

editText.addTextChangedListener(new TextWatcher() {

public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub

}

public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub

}

public void afterTextChanged(Editable s) {

textlength = editText.getText().length();
text_sort.clear();

for (int i = 0; i < text.length; i++) {
if (textlength <= text[i].length()) {
if (editText
.getText()
.toString()
.equalsIgnoreCase(
(String) text[i].subSequence(0,
textlength))) {
text_sort.add(text[i]);

}
}
}
listview.setAdapter(new MyCustomAdapter(text_sort));

}
});
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main_ftp_uygulama, menu);
return true;
}

private boolean saveFromFile(String FILENAME) {
try {

fftpDownload(FILENAME);

File file = new File("/mnt/sdcard/LOG/"+FILENAME);
FileInputStream fIn;
fIn = new FileInputStream(file);
BufferedReader buf = new BufferedReader(new InputStreamReader(fIn));
String str = "";

while (((str = buf.readLine()) != null)) {
text[o] = str;
o++;
setI(o);
}
Toast.makeText(this, "Veriler okundu", Toast.LENGTH_LONG).show();
setI(o);

} catch (IOException e) {
Toast.makeText(this, "Veri Alınamadı !!!", Toast.LENGTH_LONG)
.show();
Log.d("BUG!!", e.toString());
}
return true;
}

private void fftpDownload(String FILENAME) {
String username = "Administrator";
String password = "Password1";

String destFILENAME = "/mnt/sdcard/LOG/" + FILENAME;
String host = "192.168.1.32";
int port = 21;
File path = new File(Environment.getExternalStorageDirectory(), "/LOG/");
path.mkdirs();
File file = new File(path, FILENAME);
try {
file.createNewFile();
} catch (IOException e) {
e.printStackTrace();
}

ftpConnect(host, username, password, port);
ftpDownload(FILENAME, destFILENAME);
}

public boolean ftpConnect(String host, String username, String password,
int port) {
try {
mFTPClient = new FTPClient();
mFTPClient.connect(host, port);
if (FTPReply.isPositiveCompletion(mFTPClient.getReplyCode())) {
boolean status = mFTPClient.login(username, password);

mFTPClient.setFileType(FTP.BINARY_FILE_TYPE);
mFTPClient.enterLocalPassiveMode();

return status;
}
} catch (Exception e) {
Log.d("TAG", "Error: could not connect to host " + host);
}

return false;
}

public boolean ftpDownload(String srcFilePath, String desFilePath) {
boolean status = false;
try {
FileOutputStream desFileStream = new FileOutputStream(desFilePath);

status = mFTPClient.retrieveFile(srcFilePath, desFileStream);
desFileStream.close();

return status;
} catch (Exception e) {
Log.d("TAG", "download failed");
}

return status;
}

class MyCustomAdapter extends BaseAdapter {

String[] data_text;

MyCustomAdapter() {
}

MyCustomAdapter(String[] text) {
data_text = text;
}

MyCustomAdapter(ArrayList text) {

data_text = new String

[text language=".size()"][/text]

;

for (int i = 0; i < text.size(); i++) {
data_text[i] = text.get(i);
}

}

public int getCount() {
return data_text.length;
}

public String getItem(int position) {
return null;
}

public long getItemId(int position) {
return position;
}

public View getView(int position, View convertView, ViewGroup parent) {

LayoutInflater inflater = getLayoutInflater();
View row;

row = inflater.inflate(R.layout.layout, parent, false);

TextView textview = (TextView) row.findViewById(R.id.textView10);

textview.setText(data_text[position]);

return (row);

}
}

}

[/codesyntax]

[codesyntax lang=”xml” title=”activity_main_ftp_uygulama.xml”]

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".Main_ftpUygulama" >

    <AbsoluteLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_alignParentTop="true" >

        <ListView
            android:id="@+id/listView1"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_x="2dp"
            android:layout_y="41dp" >
        </ListView>

        <EditText
            android:id="@+id/editText1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_x="1dp"
            android:layout_y="2dp"
            android:ems="10" >

            <requestFocus />
        </EditText>

    </AbsoluteLayout>

</RelativeLayout>

[/codesyntax]

[codesyntax lang=”xml” title=”layout.xml”]

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/textView10"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Small Text"
        android:textAppearance="?android:attr/textAppearanceSmall" />

</LinearLayout>

[/codesyntax]

[codesyntax lang=”xml” title=”AndroidManifest”]

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.mcuturkey.ftpuygulama"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.INTERNET" />

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
  <uses-permission android:name="android.permission.WAKE_LOCK" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.mcuturkey.ftpuygulama.Main_ftpUygulama"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

[/codesyntax]

Kodlarımızı ve yapacaklarımızı yaptığımıza göre şimdi sıra sonucu görmeye geldi

SONUÇ:

Gördüğünüz üzere local’de kurduğumuz bir sanal bilgisayar ile kaydedilmiş bir verinin ftp ile bağlanıp verinin çekildikten sonra bu verileri istenilen düzeyde sıralayıp arama özelliğini eklediğimizi gördük.
İleride geliştireceğiniz bir işlemci ile bu dosyayı aktararak local server’daki verinin yine bu sekilde aktarılmasını uygulamalarınızda ve projelerinizde uygulayabilirsiniz. Bu veriler ister sıcaklık ister görüntü resimleri ister hareket verisi olabilir bunu aktarılmasını bir başka uygulamamızda gerçekleyeceğim ve sizler ile paylaşacağım.

Yazıyı baştan sona takip eden , uygulamaya çalışan ve tamamlayan arkadaşlara sesleniyorum. Gerçek manada bir proje yapma konusundaki korkularınızı atmış oldunuz ve sistem ve network dalında bir kaç konuya deyinmiş oldunuz. Tebrik ediyor , teşekkür ediyorum. Sorularınızı cekinmeden sorabilirsiniz. Yazının düzeninde özen göstermeye çalıştım. Sürç-i lisan olduysa özür diliyorum.
İyi çalışmalar diliyorum.

______
Gökhan TARIM
tarim.gokhan@gmail.com