Bazı Akıllı Telefon Sensörleri



Benzer belgeler
(09/05/2016)

MOBİL UYGULAMA GELİŞTİRME

Android Kaynakları (Resources)

MOBİL UYGULAMA GELİŞTİRME

UYGULA İÇİ SATIN ALMA. <uses-permission android:name="android.permission.internet" /> <uses-permission android:name="com.android.vending.

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi YAYIN ALICILARI. BLM401 Dr.Refik SAMET

Activity Context.startActivity Activity, AndroidManifest

1 - Button Kontrolu Nasıl Yapılır?

MOBİL UYGULAMA GELİŞTİRME

Proje 1. Arayüz Tasarımı

Android ile SQLLite Veri Tabanı

Listview Kullanımı. Aşağıdaki örnekte bir ListView'ı birkaç ülke ismiyle dolduracağız.

Android Ders Notları

T.C. KOCAELİ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ

Androıd ile Arduıno. Nazir Doğan

Burak Kıymaz JAVA FX

İl İlçe uygulaması. : Seçilen ile ait ilçeleri listeleyen program. //İl değişkeni için kodu aşağıdaki sayfadan kopyalayınız.

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi ANDROİD DE SENSÖRLER. BLM401 Dr.Refik SAMET

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

Muhar a r r e r m e T a T ç J PT Gel e e l c e e c k e o k nli l n i e And n r d oi o d i Nedi d r

Android Telefonlarla Yol Bozukluklarının Takibi: Kitle Kaynaklı Alternatif Çözüm

Android Nedir? Google'ın Android Inc şirketini alışı

Espresso ile Android Uygulama Testi

BİL-141 Bilgisayar Programlama I (Java)

Android Cep Telefonu Programlama

İNÖNÜ ÜNİVERSİTESİ MÜHENDİSLİK FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ 2. SINIF 1. DÖNEM VERİ YAPILARI DERSİ LABORATUAR ÖDEVİ

Karabük Üniversitesi, Mühendislik Fakültesi... WEB TEKNOLOJİLERİ

Fırat Üniversitesi DENEY NO: 4 MOBİL UYGULAMALAR

C# Yazım Kuralları ERCİYES. Ü. BİLGİSAYAR M. COMPUTER PROGRAMMING II 1 FEHİM KÖYLÜ

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi SERVİS BİLEŞENLERİ. BLM401 Dr.Refik SAMET

1. Aşağıdaki program parçacığını çalıştırdığınızda result ve param değişkenlerinin aldığı en son değerleri ve programın çıktısını yazınız.

Android Studio Dersleri

Bire-bir Sahiplik İlişkisi ile İlgili Sorular:

/*Aşağıda ki kodları doğru şekilde anlar ve kullanırsanız java da sınıfları biraz da olsa anlamış olursunuz.*/

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Akıllı Telefon Sensörlerinin Kullanımı ve Ham Sensör Verilerine Erişim. Usage of the Smartphone Sensors and Accessing Raw Sensor Data

Veritabanı İşlemleri

BMÜ-112 ALGORİTMA VE PROGRAMLAMA-II LABORATUARI DENEY-2 FÖYÜ

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

İNTERNET TABANLI PROGRAMLAMA

Java ile Androıd. Programlama. Çağlar Artar

Yeni bir proje açarken File New - Web Site diyoruz. Gelen ekranda Visual Basic veya C# seçilebilir. Biz ders kapsamında C# programlama dilini seçtik.

HSancak Nesne Tabanlı Programlama I Ders Notları

Mobil Uygulama Ders Notları v0.5

1 GİRİŞ 1 Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

Koordinat Dönüşümleri (V )


GİRİŞİMSEL İŞLEMLER ENTEGRASYON KILAVUZU DOKÜMANI

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 12: Grafik Kullanıcı Arayüzü (Graphical User Interface-GUI)

MAT213 BİLGİSAYAR PROGRAMLAMA I DERSİ Ders 11: Metot Kavramı

Android Database SQLLite

Java dili, aşağıdakiler de dahil olmak üzere çok çeşitli denetleyici türlerine sahiptir.

GENETİK ALGORİTMA GEZGİN SATICI ÖDEVİ

MEKANİZMA TEKNİĞİ (7. Hafta)

Bölüm 8. Ayrık Küme. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 16

WiFiBELL kablolu veya kablosuz olarak internete bağlanarak akıllı telefonunuzla çift yönlü görüntülü ve sesli bağlantı sağlar.

Spring Framework Eğitimi

NESNE TABANLI PROGRAMLAMA-1 DERS UYGULAMALARI (22 EYLÜL - 14 KASIM

11- FONKSİYONLAR (FUNCTIONS)

3. Bölüm Soyut Sınıflar (Abstract Classes) Java ile Nesne Merkezli ve Fonksiyonel Programlama Akın Kaldıroğlu

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

1 LK ANDROID YAZILIMIMIZ VE ÖN HAZIRLIKLAR

C# Console Uygulamaları ifelse Yapıları 2

Ders 8: Metotlar. barisgokce.com

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Android Platformunda Uygulama Geliştirme.

Bu Kitap Kime Hitap Eder? 2 Kitapta Nelerden Bahsedilmiştir? 3 Kitabı Takip Edebilmek için Nelere İhtiyaç Duyacaksınız?

/*int sayi1, sayi2,toplam=0;

JavaFX Temelleri (2)

Sunum İçeriği. Programlamaya Giriş

Nesne Yönelimli Programlama

Applet Form Örnekleri2

SINIF İÇİ UYGULAMA KODLARI

BLM401 Mobil Cihazlar için ANDROİD İşletim Sistemi GÜVENLİK VE İZİNLER. BLM401 Dr.Refik SAMET

EĞİTİM KURUMLARINDA SINIF İÇİ YOKLAMA, SINAV GİBİ UYGULAMALARIN TABLET BİLGİSAYAR KULLANARAK HIZLI VE VERİMLİ HALE GETİRİLMESİ

Görsel Programlama (Visual Programming)

Lab7 DOĞU AKDENİZ ÜNİVERSİTESİ BİLGİSAYAR VE TEKNOLOJİ YÜKSEKOKULU BİLGİSAYAR PROGRAMCILIĞI. BTEP212 Java. Uygulama1: package javaapplication58;

Java ile Nesneye Yönelik Programlama (Object Oriented Programming)

BIL1202 ALGORİTMA VE PROGRAMLAMAYA GİRİŞ

Java Programlama Dilinde Veri Tipleri. Yrd. Doç. Dr. Aybars UĞUR

Intercepting Filter Tasarım Şablonu KurumsalJava.com

Karşılaştırma İşlemleri ve Koşullu İfadeler

İki Yöntem. Komposizyon (Composition) Kalıtım (Inheritance)

MAT214 BİLGİSAYAR PROGRAMLAMA II DERSİ Ders 18: Formatlı Grafik Kullanıcı Arayüzü Oluşturma

NESNEYE YÖNELİK PROGRAMLAMA

Sınıfların Tekrardan Kullanılması. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 5 1

Android de Video Nasıl Oynatılır?

Görsel Programlama DERS 08. Görsel Programlama - Ders08/ 1

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

void setup() fonksiyonu: Bu fonksiyon program ilk açıldığında bir kere çalışır ve gerekli kalibrasyon, setup komutlarını buraya yazarız.

e-logo e-fatura Özel Entegratör Sistemi

MVC, MVP ve Mediator ile TDD Tecrübeleri. Kenan SEVİNDİK

Nesneye Dayalı Programlama Laboratuvarı

Interface Comparator. Kılgılayan sınıf: Collator. Bildirimi: public interface Comparator

İNTERNET TABANLI PROGRAMLAMA- 9.ders BİLGİLERİN GRIDVIEW İÇERİSİNDE EKLENMESİ, DÜZENLENMESİ VE SİLİNMESİ

ASP.NET ile Bir Web Sitesi Oluşturma

Kapsülleme ( Encapsulation ) BBS-515 Nesneye Yönelik Programlama

Bölüm 6. Karma. Olcay Taner Yıldız. O. T. Yıldız, C && Java ile Veri Yapılarına Giriş, Boğaziçi Üniversitesi Yayınevi, / 31

Transkript:

Sensörler

Bazı Akıllı Telefon Sensörleri Sensor.TYPE_ACCELEROMETER Telefon unuzun yatay, dikey ve yükseklik değişimlerini veren sensör dür.telefon unuzu düz konumdan sola doğru yatırınca yatay değer artmaya başlıyacaktır tam tersi durumda ise eksi değere düşmeye başlıyacaktır. (m/s2) Sensor.TYPE_GYROSCOPE Hemen bir üstteki sensör gibi 3 eksen değerini geri döndürür tek farkı geri dönüş birimi derece cinsindendir. Sensor.TYPE_LIGHT Bulunan ortamın aydınlatmasını veren sensör dür.geriye tek bir değer döner Sensor.TYPE_MAGNETIC_FIELD Cihazınızın içerisinde bulunduğu manyetik alanı yatay,dikey ve yükseklik olarak 3 değer olarak verir. Sensor.TYPE_PRESSURE Telefon üzerindeki basıncı KPa(KiloPascal) cinsinden verir Sensor.TYPE_TEMPERATURE Santigrat cinsinden sıcaklığı geri döner. Sensor.TYPE_PROXIMITY Yakınlık sensör üdür.hedef ile cihaz arasındaki mesafeyi hesaplayabilir.

Sensörlere Ulaşma Sistem servisleri aşağıdaki komutla elde edilebilir: SensorManager sensyonet = (SensorManager)getSystemService(Context.SENSOR_SERVICE); Bir sensöre aşağıdaki gibi ulaşılabilir: Sensor sensor = sensyonet.getdefaultsensor(sensor.type_light);

Sensörlere Ulaşma

SensorEventListener sınıfı bizden aşağıdaki metotların kodlanmasını talep ediyor. Bu metotlar sensörden gelen bilgileri anlık olarak (SensorManager.SENSOR_DELAY_NORMAL peryotları ile) dinlememizi sağlıyor. public class MainActivity extends Activity implements SensorEventListener { private SensorManager sensormanager; protected void oncreate(bundle savedinstancestate) { sensormanager = (SensorManager) getsystemservice(sensor_service); sensormanager.registerlistener(this, sensormanager.getdefaultsensor( Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); public void onaccuracychanged(sensor sensor, int accuracy) { public void onsensorchanged(sensorevent event) { // sensörün durumu değiştiğinde

Register/Unregister sensör event Bir sensörü devre almak (dinlemeye almak) veya devreden çıkartmak Sensörü Dinlemeye alma public boolean registerlistener( SensorEventListener listener, Sensor sensor, int rate) Sensörü Dinlemeyi bırakma public void unregisterlistener( SensorEventListener listener, Sensor sensor)

SENSOR_DELAY değişkeni sensörün duyarlılığını belirler. Burada kullanabileceğimiz değerler aşağıdaki gibidir: SENSOR_DELAY_NORMAL - Kullanıcının basit hareketlerini düşük duyarlılıkla takip eder. (215-230 ms) SENSOR_DELAY_FASTEST Sensörden gelen hareketlerin mümkün olduğu kadar fazla kısmının değerlendirilmesini sağlar. (15-20 ms) SENSOR_DELAY_GAME Oyun uygulamaları için yüksek duyarlılıkla dinleme gerçekleştirir. (35-40 ms) SENSOR_DELAY_UI Normal kullanım için idealdir. (85-90 ms) https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-401/androidde-sensor-kullanimi

Sensörü Dinlemek Sensörden gelen veri onsensorchanged metodu içerisinde event değişkeni üzerinden gönderilir. Örneğin: Accelerometer adlı sensör bize telefonun x, y ve z ekseni üzerinde yaptığı hareketleri aşağıdaki şekilde verir: public void onsensorchanged(sensorevent event) { if (event.sensor.gettype() == Sensor.TYPE_ACCELEROMETER) { float[] values = event.values; float x = values[0]; float y = values[1]; float z = values[2]; Log.d("Sensör verisi", String.format("x : %f y : %f z : %f", x, y, z)); https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-401/androidde-sensor-kullanimi

Verileri EditTextX, EditTextY,EditTextZ ye almak public void onsensorchanged(sensorevent event) { if (event.sensor.gettype() == Sensor.TYPE_ACCELEROMETER) { textx.settext(float.tostring(event.values[0])); texty.settext(float.tostring(event.values[1])); textz.settext(float.tostring(event.values[2]));

Sensörü kaydettikten sonra Activity yi ondestroy metodu içerisinde yok etmeyi unutmamalıyız. protected void ondestroy() { super.ondestroy(); sensormanager.unregisterlistener(this); https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-401/androidde-sensor-kullanimi

KONUM BELİRLEME GPS Provider (GPS uydularına göre konum belirleme) Network Provider (Wifi İnternet bağlatısı ile konum belirleme Passive Provider (Baz istasyonları ile onum belirleme)

LocationListener metodları ve görevleri LocationListener konumdinleyicisi = new LocationListener() { public void onstatuschanged(string provider, int status, Bundle extras) { public void onproviderenabled(string provider) { public void onproviderdisabled(string provider) { public void onlocationchanged(location loc) { ; onlocationchanged fonksiyonumuz ile bunu sağlayacağız. Konum bilgilerimiz: Latitude = Enlem Longtitude = Boylam onlocationchanged : GPS ten alınan konum bilgilerini içerir. onstatuschanged : GPS Servisinin durum bilgisi onproviderenable : GPS in aktif duruma getirildiği bilgisi onproviderdisable : GPS in pasif duruma getirildiği bilgisi

Location Manager Yöntemleri GPS Provider (GPS uydularına göre konum belirleme) android.permission. ACCESS_FINE_LOCATION android.permission. ACCESS_COARSE_LOCATION Network Provider (Wifi İnternet bağlatısı ile konum belrleme android.permission. ACCESS_COARSE_LOCATION Passive Provider (Baz istasyonları ile onum belirleme) android.permission.access_fine_location

Implement LocationListener abstract void onlocationchanged(location location) abstract void onproviderdisabled(string provider) abstract void onproviderenabled(string provider) abstract void onstatuschanged(string provider, int status, Bundle extras)

public void onlocationchanged(location location) public void onlocationchanged(location location) { latitudevalue.settext(string.valueof(location.getlatitude())); longitudevalue.settext(string.valueof(location.getlongitude())); providervalue.settext(string.valueof(location.getprovider())); accuracyvalue.settext(string.valueof(location.getaccuracy()));

onstatuschanged() Status Values LocationProvider.OUT_OF_SERVICE The LocationProvider is currently offline and probably will not come back online anytime soon. LocationProvider.TEMPORARILY_UNAVAILABLE The LocationProvider is currently offline and should come back online soon. LocationProvider.AVAILABLE The LocationProvider is currently online.

AndroidManiFast.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.fmi.retina.myapplication" > <uses-permission android:name="android.permission.access_fine_location"/> <uses-permission android:name="android.permission.access_coarse_location"/> <application android:allowbackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/apptheme" > <activity android:name=".mainactivity" 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>

public class MainActivity extends Activity { protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); final String gpsacildi = "GPS Acıldı"; final String gpskapatildi = "GPS Kapalı"; GPS verisi almak final TextView konumtext = (TextView)findViewById(R.id.textview1); LocationManager konumyoneticisi = (LocationManager)getSystemService(Context.LOCATION_SERVICE); LocationListener konumdinleyicisi = new LocationListener() { public void onstatuschanged(string provider, int status, Bundle extras) { public void onproviderenabled(string provider) { Toast.makeText(getApplicationContext(), gpsacildi, Toast.LENGTH_SHORT).show(); konumtext.settext("gps Veri bilgileri Alınıyor..."); public void onproviderdisabled(string provider) { Toast.makeText( getapplicationcontext(),gpskapatildi,toast.length_short).show(); konumtext.settext("gps Bağlantı Bekleniyor..."); public void onlocationchanged(location location) { location.getlatitude(); location.getlongitude(); String Text = "Bulunduğunuz konum bilgileri : \n" +"Latitud = " + loc.getlatitude() +"\nlongitud = "+ loc.getlongitude(); konumtext.settext(text); ; konumyoneticisi.requestlocationupdates(locationmanager.gps_provider, 0, 0, konumdinleyicisi);

Önceki slayttaki kodların MAKÜ TBMYO 301 nolu odanın pencere önünde çalıştırılmasıyla elde edilen konum bilgileri aşağıdaki gibidir.

SORU Telefonu Sallayınca 1-49 arası 6 adet birbirinden farkılı sayı türetilecek

ÇÖZÜM

public class uc extends Activity implements SensorEventListener { TextView tv; Button b1; private SensorManager sensormanager; private Vibrator vibrator; private float last_x, last_y, last_z = 0; EditText textx,texty,textz; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_uc); tv = (TextView) this.findviewbyid(r.id.textview1); b1 = (Button) findviewbyid(r.id.button1); textx=(edittext)findviewbyid(r.id.edittext1); texty=(edittext)findviewbyid(r.id.edittext2); textz=(edittext)findviewbyid(r.id.edittext3); sensormanager = (SensorManager) getsystemservice(sensor_service); sensormanager.registerlistener(this, sensormanager.getdefaultsensor(sensor.type_accelerometer), SensorManager.SENSOR_DELAY_NORMAL); vibrator=(vibrator) getsystemservice(context.vibrator_service);

public void onsensorchanged(sensorevent event) { float sayi=0; if (event.sensor.gettype() == Sensor.TYPE_ACCELEROMETER) { float[] values = event.values; float x = values[0]; float y = values[1]; float z = values[2]; if (z*last_z < 0) { vibrator.vibrate(500); Log.d("MainActivity", String.format("x : %f y : %f z : %f", x, y, z)); textx.settext(«"+x);texty.settext(«"+y);textz.settext(«"+z); if((x*x)>10) Turet();

public void onaccuracychanged(sensor sensor, int accuracy) { public void Klikle(View v) { // long [] sure={500,300,100,400,800; // titreşim deseni milisaniye // vibrator.vibrate(sure, 3); // desen 3 kez tekraralanacak // Random r= new Random(); // int say=r.nextint(49); // tv.settext(" sayı:"); Turet(); public void Turet() { Random r= new Random(); int i=r.nextint(49); tv.settext(" sayı:" + i);

ÖDEV 1. Telefonu x kez sallayıp durdurunca flaşör x kez yanıp sönecek Android programını yazınız. Örneğin telefonu belirli bir hızda (sallama şiddetini siz belirleyiniz) 5 kez sallayınca flaşör 5 kez yanıp sönecek. 2. Gittiğmiz yerlerin koordinatlarını text dosyaya kaydeden GPS Android uygulamasını yazınız.