31 Aralık 2016 Cumartesi

Android Flashlight



Arkadaşlar Merhabalar ,
Bugünkü yazımda basit bir android flashlight uygulamasının kodlarını  göstereceğim. . Android studioda bir proje oluşturun ve aşağıdaki  iki resmi projede yer alan drawable klasörünün içine atın.  Ben switch_of ve switch_on adları ile resimleri belirttiğim klasöre attım.(sürükleyip bırakabilirsiniz veya proje klasörünü açın->app->src->main->res->drawable)












Projeye bir tane ImageButton koydum ve id olarak ta  BtnSwitch dedim.  Butona tıklayınca tik sesini çıkarması için , projede res dosyasının altında bir raw adında klasör oluşturdum ve internetten indirdiğim click.mp3 adında bir sesi oraya attım. Bunları kodu daha iyi anlamanız için söyledim. Üzerine kısa kısa ve basit ingilizce notlar da düştüm. Bundan sonrası içinde koda bakabilirsiniz.(raw klasörünü oluşturmak için res klasörüne sağ tıklayıp raw adında klasör oluşturun).

izinleri ekleyelim.
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature android:name="android.hardware.camera" />

package com.example.lenovo.flashlight;
import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.pm.PackageManager;
import android.hardware.Camera;
import android.hardware.Camera.Parameters;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;



public class MainActivity extends Activity {


    ImageButton
SwitchButon;
   
private Camera camera;

   
private boolean Flash_Open;
   
private boolean HasFlash;

    Parameters
params;
    MediaPlayer
mp;


   
protected void onCreate(Bundle savedInstanceState) {
       
super.onCreate(savedInstanceState);
        setContentView(R.layout.
activity_main);


       
//decrelations
       
SwitchButon = (ImageButton) findViewById(R.id.BtnSwitch);
       
mp=MediaPlayer.create(this, R.raw.click);

       
HasFlash = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

       
//if device has no flash
       
if (!HasFlash) {
            AlertDialog alert =
new AlertDialog.Builder(MainActivity.this).create();
            alert.setTitle(
"HATA");
            alert.setMessage(
"Bu aygıt Flash desteklemiyor");
            alert.setButton(
"Tamam", new DialogInterface.OnClickListener() {
               
public void onClick(DialogInterface dialog, int which) {

                    finish();
                }
            });
            alert.show();
           
return;
        }

       
// open camera
       
opencamera();

       
//set the İmageButton image according to Flash (open or close)?
       
Control();


       
SwitchButon.setOnClickListener(new View.OnClickListener() {

           
public void onClick(View v)
            {
               
if (Flash_Open) { // if flash open
                   
CloseFlash(); // close the flash

               
}
               
else
               
{
                 
// if flash close , open the flash
                   
OpenFlash();
                }

               
mp.start();
            }
        });
    }

   
//open camera
   
private void opencamera()
    {
       
if (camera == null)
        {
           
camera = Camera.open();
           
params = camera.getParameters();
        }
    }

   
// open flash
   
private void OpenFlash()
    {
       
if (!Flash_Open)
        {
           
if (camera == null || params == null)
            {
               
return;
            }
           
params = camera.getParameters();
           
params.setFlashMode(Parameters.FLASH_MODE_TORCH);
           
camera.setParameters(params);
           
camera.startPreview();
           
Flash_Open = true;

      
// changing the imagebutton image
           
Control();
        }
    }

   
//close the flash

   
private void CloseFlash()
    {
       
if (Flash_Open)
        {
           
if (camera == null || params == null)
            {
               
return;
            }
           
params = camera.getParameters();
           
params.setFlashMode(Parameters.FLASH_MODE_OFF);
           
camera.setParameters(params);
           
camera.stopPreview();
           
Flash_Open = false;

        
// changing imagebutton image
           
Control();
        }
    }

   
//changing imagebutton image
   
private void Control()
    {
       
if(Flash_Open)
        {
           
SwitchButon.setImageResource(R.drawable.switch_on);
        }
else
       
{
           
SwitchButon.setImageResource(R.drawable.switch_of
);
        }
    }

}








Bu ve başka projeleri kaynak kodları ile beraber  github adresim 
https://github.com/bhtyrsm   den bulabilirsini.
 
Kolay Gelsin....






26 Aralık 2016 Pazartesi

Java Networking (Server / Client)



Merhaba Arkadaşlar
Bu yazımda biraz java networking konusuna değineceğim. Uygulama olarakta eclipse te bir sunucu ve istemci oluşturup birbirlerine mesaj göndermeyi deneyeceğim. Uygulamaya geçmeden önce birkaç tanımdan bahsetmek istiyorum.

Socket : Bilgisayarların ağ üzerinden haberleşmesini sağlayan yapılar olarak düşünebilirsiniz. Uygulamamızda   da socket oluşturup öyle haberleşmeye çalışacağız. Ip adresine veya server adresine ihtiyacımızda olacak. Hangi bilgisayar iletişim kurulacak , ıp adresi ile belirleyeceğiz.
client : Hizmet isteyen olarak adlandırabiliriz. Türkçe olarak da istemci olarak adlandırılır.
Sunucu :  server olarakta adlandırılan bu yapılar , istemciye hizmeti veren yapılardır.

Yani uygulamamızda bir sunucu ve istemci olacaktır. Aradaki haberleşme socket/portlar üzerinden olacaktır. Sunucu nun sürekli açık olması gerekmektedir. Bu tür  uygulamalarda dikkat etmeniz gereken noktalardan bir tanesi , açtığınız portları işiniz bittiğinde kapatmanızdır. Kapatmaz iseniz arka planda sürekli boş yere çalışır ,bellekten yer ve ayrıca uygulamayı tekrar çalıştırdığınız da port zaten açık ise hata alabilirsiniz.

Anlatacak çok şey var bana göre ama ben her şeyi ve tüm fonksiyonları yazının uzamaması için anlatmayacağım.   Temelinde neler var onlara değinmeye çalışacağım Bunu da kod üzerinden anlatmayı düşünüyorum. Bu konu ile alakalı sunucu ve istemci tarafında çalışan metotlara da bakmanızda fayda var. ben hepsini anlatmak isterdim ancak çokta uzatmak istemiyorum. Basit bir sunucu ve istemci oluşturmak için gerekli olan metotlara değineceğim.
Ayrıca internette 1 -1024 arası portlar genel olarak nette kullanılan belirli portlar olduğu için  , port numarası verirken bu sayılar arasındaki değerleri vermeyin hata alırsınız. Şimdi Kodlar üzerinden anlatmaya çalışayım.

Sunucu Tarafı :


import java.net.*;
import java.io.*;

public class MyServer extends Thread {
     
      //sunucu tarafında çalışacak bir socket tanımlıyoruz
      //istemci den gelecek veriyi okuması için
         private ServerSocket serverSocket;
        
         public MyServer() throws IOException {
               //bir port açıyoruz.İstemci ile haberleşme bu port üzerinden olacak.
               //1-1024 arası olmamasına dikkat edin.
            serverSocket = new ServerSocket(5217);
         
         }

         public void run() {
            while(true) {
               try {
                   
                   //getlocalport() metodu , sunucuya bağlanan istemciyi görmenizi sağlar
                  System.out.println("Waiting for client on port " + serverSocket.getLocalPort() + "...");
                 
                  //Serversocket sunucu tarafında ki socket.Port açmak için kullanıyoruz
                  //Socket türündeki değişkeni ise istemci den veri alması için kullanacağız.
                  //accept() metodu , sunucunun  ,istemciyi dinlemesini  yani istemciden veri almasını sağlar.
                  Socket server = serverSocket.accept();
                 
                 //getInputStream() metodu istemciden gelen mesajı almak için
                  //DatainputStream ise gelen mesaj ile sunucu tarafında işlem yapmak için kullanacağız.
                  //Yani istemciden gelen mesajı DataInputStream içerisine atıyoruz.
                  //Bunun için iki metod vardır:
                  //input stream : istemciden gelen mesaj word , excel gibi veya daha farklı veri paketleri ise kullanılır.
                  //input stream i kullanırsanız eğer , gelen mesajın ne olduğunu bulmanız ve ona göre parse etmeniz gerekir.
                  //Datainputstream : istemciden gelen mesaj int ,string,char gibi primitive tipinde ise kullanılır.
                  DataInputStream in = new DataInputStream(server.getInputStream());
                 
                  //istemciden aldığım mesajı ekrana yazdırıyorum
                  //readLine, readInt ,readFloat gibi bir çok seçenek mevcut
                  System.out.println(in.readUTF());
                 
                  //Dataoutput stream da sunucudan ,istemciye veri gönderilmek için kullanılır
                  //output stream şeklinde bir kullanımı daha vardır.
                  //input stream ve datainputstream arasında ki kullanım farkı bunlar içinde geçerli
                  DataOutputStream out = new DataOutputStream(server.getOutputStream());
                 
                 
                  out.writeUTF("Bağlandık " + server.getLocalSocketAddress()
                     + "\Güle Güle!");
                 
                  //işiniz bittikten sonra portun kapatılması gerektiğiniden bahsetmiştik
                  server.close();
                 
               }catch(SocketTimeoutException s) {
                  System.out.println("Socket timed out!");
                  break;
               }catch(IOException e) {
                  e.printStackTrace();
                  break;
               }
            }
         }
        
         public static void main(String [] args) {
            try {
               Thread t = new MyServer();
               t.start();
            }catch(IOException e) {
               e.printStackTrace();
            }
         }
      }




İstemci Tarafı



import java.net.*;
import java.io.*;

public class MyClient {

   public static void main(String [] args) {
    
    
      try {
         //İstemci için bir socket tanımlıyoruz.
        //ilk parametre ip adres , ikinci parametre ise sunucu tarafında açtığımı port
         Socket client = new Socket("localhost", 5217);
        
         //bağlantı kurulan adresi görme
         System.out.println("Bağlanıldı : " + client.getRemoteSocketAddress());
        
         // server tarafında buralara değindik
         OutputStream GoServer = client.getOutputStream();
         DataOutputStream out = new DataOutputStream(GoServer);
        
         out.writeUTF("Merhaba : " + client.getLocalSocketAddress());
         InputStream inFromServer = client.getInputStream();
         DataInputStream in = new DataInputStream(inFromServer);
        
         System.out.println("Server :" + in.readUTF());
         client.close();
      }catch(IOException e) {
         e.printStackTrace();
      }
   }
}


Bu  ve başka projeleri kaynak kodları ile beraber github adresim  https://github.com/bhtyrsm   da bulabilirsiniz.
Öncelikle  serverı çalıştırın. Sonra clienti çalıştırın.Server çalışmadan client bağlantı kuramaz ve hata alırsınız.

Herhangi bir sorunda ileşime geçebilirsiniz .umarım faydalı olmuştur .Kolay gelsin.






DataTable To List Object - C#

Merhaba Arkadaşlar , Daha önce kullandığım kısa bir kod parçasını sizinlede paylaşmak istedim.  Elimizde bulunan bir Datatable ı nasıl ...

Popüler Yayınlar