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.
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.
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
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..
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 ?
merhaba
private Camera camera;
Parameters params;
bunları kabul etmiyor neden acaba
Üst sürüm Androidler de çöküyor. Android 5.1.1 de stabil ama 6.0 üstünde çöküyor neden?
Merhaba Ahmet Bey,
6.0 için nerede çöküyor, ne diyor ? İzinlerini eklediniz mi ?
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.
Çok teşekkürler yararlı bir paylaşım olmuş.