Top Ad unit 728 × 90

Android Sensör Kullanımı

Bir süre ara verdiğimiz android derslerimize kaldığımız yerden devam ediyoruz. Bir önceki makalemizde options menü oluşturma göstermiştim. Şimdiki makalemiz sensörler hakkında olacak ve küçük bir uygulama yapacağız. Öncelikle android uygulamalarında kullanılan sensörlerden kısaca bahsedelim :
  • Sensor.TYPE_ACCELEROMETER : Bu sensör yardımıyla telefonun yatak, dikey ve yükseklik değişimlerini görülebiliyor. Telefon sağa yatarsa değer artar, sola yatarsa değer azalır. Örneğimiz de bu sensör ile ilgili olacak.
  • Sensor.TYPE_GYROSCOPE :Accelerometer gibi eksen değerlerini  döndürür ancak bir farkı vardır. Bu sensörün dönüş değeri derece cinsindendir. Uzaktan uygulama ile kontrol edilen robotlar ve helikopterlerde bu sensör kullanılmaktadır.
  • Sensor.TYPE_LIGHT : Telefonun bulunduğu ortamın aydınlatma değerini veren sensördür.
  • Sensor.TYPE_MAGNETIC_FIELD : Bu sensör adı üzerinde manyetik alan ile ilgili yatay, dikey ve yükseklik olarak 3 değer döndürür.
  • Sensor.TYPE_PRESSURE : Basıncı ölçen sensördür. Ekrana bir baskı uygulandığından KiloPascal cinsinden geri döndüren sensördür.
  • Sensor.TYPE_TEMPERATURE : Temperature sıcaklık anlamına gelmektedir. Ortamdaki sıcaklığı ölçer.
  • Sensor.TYPE_PROXIMITY : Mesafe hesaplamaya yarayan bir sensördür.
Sensörleri kısaca tanıdıktan sonra küçük bir uygulama yazabiliriz. Bu uygulamada 3 adet textview içerisinde Sensor.TYPE_ACCELEROMETER yardımıyla telefonumuzun yatay, dikey ve yükseklik verilerini alacağız.
İlk önce yeni bir proje oluşturun ve içerisine 3 adet textview ekleyin. Bu textview’lere sırasıyla TextX, TextY ve TextZ olarak id atayın ve bunları activity sınıfında tanımlayın. Bu uygulamadaki kilit noktalardan birisi SensorEventListener implement etmemiz. Implement ettikten sonra MainActivity kırmızı olacaktır. Üzerine gelip add Unimplement methods seçeneğini tıklıyoruz ve onAccuracyChanged ile onSensorChanged metodları uygulamamıza ekleniyor. Şu ana kadarki kodlarımız şu şekilde ;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public class MainActivity extends Activity implements SensorEventListener{
float x , y , z;
TextView textx,texty,textz;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textx = (TextView) findViewById(R.id.TextX);
texty = (TextView)findViewById(R.id.TextY);
textz = (TextView)findViewById(R.id.TextZ);
}
@Override
public void onAccuracyChanged(Sensor arg0, int arg1) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent arg0) {
// TODO Auto-generated method stub
}
}
Bu aşamadan sonra sensör kullanabilmemiz için bir sensorManager tanımlamamız gerekiyor. onCreate() metodu içerisine bir SensorManager tanımlıyoruz ve registerListener ekliyoruz.
1
2
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), sm.SENSOR_DELAY_NORMAL);
Bu iki kod sayesinde TYPE_ACCELEROMETER sensörünü kullacağımızı ve hareket sırasındaki hızımızı ayarladık.
Son olarak onSensorChanged metodunun içerisinde oluşturduğumuz TextView’lere sensörden gelen değerleri atamak kaldı.
Bu kodlar ise ;
1
2
3
4
5
6
7
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
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]));
}
şeklindedir. Sensörden gelen Float değerlerini string olarak Textview’lere atadık. Uygulamamız bu kadar. Telefonunuzda deneyebilirsiniz. Benim telefonumdaki ekran görüntüleri şu şekilde ;
accelerometer sensörü Android Sensör Kullanımı accelerometer uygulaması Android Sensör Kullanımıandroid sensör kullanımı Android Sensör Kullanımı

Java ve xml dosyalarının son hali şu şekildedir.
activity_main.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<TextView
android:id="@+id/TextX"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/TextY"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/TextX"
android:layout_below="@+id/TextX"
android:layout_marginTop="22dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
<TextView
android:id="@+id/TextZ"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@+id/Texty"
android:layout_below="@+id/Texty"
android:layout_marginTop="22dp"
android:text="Large Text"
android:textAppearance="?android:attr/textAppearanceLarge" />
</RelativeLayout>
MainActivity.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
package com.Example.accelerometer;
import android.hardware.Sensor;
import android.hardware.SensorEvent;
import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.os.Bundle;
import android.app.Activity;
import android.widget.TextView;
public class MainActivity extends Activity implements SensorEventListener{
float x , y , z;
TextView textx,texty,textz;
SensorManager sm = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textx = (TextView) findViewById(R.id.TextX);
texty = (TextView)findViewById(R.id.TextY);
textz = (TextView)findViewById(R.id.TextZ);
sm = (SensorManager) getSystemService(SENSOR_SERVICE);
sm.registerListener(this, sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), sm.SENSOR_DELAY_NORMAL);
}
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
// TODO Auto-generated method stub
}
@Override
public void onSensorChanged(SensorEvent event) {
// TODO Auto-generated method stub
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]));
}
}
}
Uygulama kaynak kodlarını BURADAN indirebilirsiniz. Bir sonraki makalede görüşmek dileğiyle…
KodBankasi.Org
Android Sensör Kullanımı Reviewed by Unknown on 04:03 Rating: 5

Hiç yorum yok:

Tüm hakları saklıdır. Teknoloji Program Güncel Android Webmaster © 2014 - 2015
Powered by Blogger.

İletişim Formu

Ad

E-posta *

Mesaj *

Blogger tarafından desteklenmektedir.