Genel

Android Studio Flashlight Uygulaması

Android Studio Flashlight Uygulaması

Android Studio’da bugün 3. uygulamayı geliştireceğiz. 3 uygulamada bir image button atıp onu toggle button şeklinde kullanacağız. Toggle button’u açma kapama tuşu olarak düşünün. Tuşa bastığımızda açılacak, Tuşa bastığımızda kapatılacak. Button’a basınca biz kamera’dan flash’a bağlanıp açıcağız, diğer bir tıklamada flash’ı kapatacağız. Hadi başlayalım. Yeni bir proje açıyoruz.

İlk iş olarak 2 tane izin alarak başlayalım.Android manifest Dosyasına aşağıdaki kodları ekleyin.

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


İzinleri aldıktan sonra uygulamamızın icon’u değiştirelim. Güzel bir görüntü elde edelim. Mipmap içine küçük iconu atın. Diğer lambalarıda kaydedin. Bunları uygulamada mesela kapalıyken gri olanını, açıkkende sarı olanını göstereceğiz.

btn_switch_off btn_switch_onic_launcher

Activity_main dosyamızın kodları

<RelativeLayout xmlns:android="//schemas.android.com/apk/res/android"
    xmlns:tools="//schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity"
    android:background="#cae5e0">

    <ImageButton
        android:id="@+id/btnSwitch"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="100dip"
        android:src="@drawable/btn_switch_on"
        android:background="@null"
        android:contentDescription="@null"
         />

</RelativeLayout>

Şimdide MainActivity.java dosyamızın kodları:
package com.umiitkose.myapplication;

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;

import com.umiitkose.myapplication.R;

public class MainActivity extends Activity {

  ImageButton btnSwitch;
    private Camera camera;
  private boolean flashAcik;
  private boolean flashVarmı;
  Parameters params;
  MediaPlayer mp;

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
  btnSwitch = (ImageButton) findViewById(R.id.btnSwitch); //ImageButton'u tanımladık
    //İlk işlem kameranın flash'ının olup olmadığı
    flashVarmı = getApplicationContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_CAMERA_FLASH);

    if (!flashVarmı) {
      //FlashYoksa alertDialog ile ekrana flash'ın olmadığını çıkardık
      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) {
          // Tamam'a basınca uygulamayı kapatıyoruz.
          finish();
        }
      });
      alert.show();
      return;
    }

    // camera'ya erişiyoruz
    cameraAc();
    
    //Flash'ın durumuna göre button'un resmini ayarlıyoruz
    toggleButtonImage();
    
    /*
     * Button'a her tıklandığında olacaklar. Flash açıksa kapat, Kapalıysa aç
     */    btnSwitch.setOnClickListener(new View.OnClickListener() {

      @Override
      public void onClick(View v) {
        if (flashAcik) { // Flash Acik true dönücek. Eğer Flash Açıksa Kapatıcak
      
          flashKapat();
        } else {
          // Açık değilse button'a basınca açıcak
          flashAc();
        }
      }
    });
  }

  /*
   * Get the camera
   */  private void cameraAc() {
    if (camera == null) {

        camera = Camera.open();
        params = camera.getParameters();

    }
  }

  /*
   * Flash'ı açma kısmı burada
   */  private void flashAc() {
    if (!flashAcik) {
      if (camera == null || params == null) {
        return;
      }
      params = camera.getParameters();
      params.setFlashMode(Parameters.FLASH_MODE_TORCH);
      camera.setParameters(params);
      camera.startPreview();
      flashAcik = true;
      
      // Flash Button'u Değişiyor
      toggleButtonImage();
    }

  }

  /*
   * Flash'ı kapatma kısmı
   */  private void flashKapat() {
    if (flashAcik) {
      if (camera == null || params == null) {
        return;
      }
      params = camera.getParameters();
      params.setFlashMode(Parameters.FLASH_MODE_OFF);
      camera.setParameters(params);
      camera.stopPreview();
      flashAcik = false;
      
      // changing button/switch image
      toggleButtonImage();
    }
  }
  

  /*
   * Button'un değiştirmesi
   * */  private void toggleButtonImage(){
    if(flashAcik){
      btnSwitch.setImageResource(R.drawable.flash_ac);
    }else{
      btnSwitch.setImageResource(R.drawable.flash_kapa);
    }
  }}

Uygulamayı telefonda deneyiniz. Yoksa Flash desteklemiyor’u alırsınız. Telefonda açıkken ve kapalıykenki görünümü.. Apk dosyası oluşturarak deneyebilirsiniz.

11880928_786430824787474_604278134_n 11880953_786430811454142_1019244117_n 2015-08-22_19h41_21

 

 

8 thoughts on “Android Studio Flashlight Uygulaması

  • Abi şimdi bi uygulam yazıcam ama kodları bulamdım hani şu biri arayınca flaş yanması olayı varya onu geliştiricem fakat kodları bulamadım

    Yanıtla
    • Kodları siz yazacaksınız zaten, bulmuyoruz bizde araştırıyoruz öğreniyoruz.. Nette bir sürü şey var… Öğrenmek amacınız olsun Bulmak değil..

      Yanıtla
  • Onur

    Merhaba
    android programlamaya yeni adım atmış bulunmaktayımda hocam bu örneği çalıştırmaya uğraştım ama yapamadım
    MainActivity.java’da

    ImageButton btnSwitch;
    private ̶C̶a̶m̶e̶r̶a̶ camera;
    private boolean flashAcik;
    private boolean flashVarmı;
    ̶P̶a̶r̶a̶m̶e̶t̶e̶r̶s̶ params;
    MediaPlayer mp;

    olarak çıkıyor üzeri neden çizili oluyor anlamadım birde farklı olarak
    private void toggleButtonImage(){
    if(flashAcik){
    btnSwitch.setImageResource(R.drawable.flash_ac);
    }else{
    btnSwitch.setImageResource(R.drawable.flash_kapa);
    } }}
    flash_ac ve flash_kapa yazıları kırmızı oluyor bunları nasıl düzenleyeceğim ?

    Yanıtla
  • eren

    merhaba
    private Camera camera;
    Parameters params;
    bunları kabul etmiyor neden acaba

    Yanıtla
  • Ahmet

    Üst sürüm Androidler de çöküyor. Android 5.1.1 de stabil ama 6.0 üstünde çöküyor neden?

    Yanıtla
    • Merhaba Ahmet Bey,

      6.0 için nerede çöküyor, ne diyor ? İzinlerini eklediniz mi ?

      Yanıtla
    • Erdem

      Geç görüyorum fakat eğer aynı sorunu yaşanlar için söyleyeyim ; android 6.0+ da manifest e eklenen izinler yetmiyor, Extaradan çalışırken uygulama izin almanız gerekir.

      Yanıtla
  • Alperen

    Çok teşekkürler yararlı bir paylaşım olmuş.

    Yanıtla

Mehmet için bir cevap yazın Cevabı iptal et

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir