Android platformu konumu belirlemenizi sağlayan iki sensör sağlar : jeomanyetik alan sensörü ve ivme ölçer. Android platform aynı zamanda bir evin yüzeyine ne kadar yakın (yakınlık sensörü olarak bilinir) bir cihazdır. İlgili içeriği oluşturmak için kullanılan jeomanyetik alan sensörü ve yakınlık sensörü donanım tabanlıdır. En sık Cihaz ve tablet üreticileri jeomanyetik alan sensörü sağlamaktadır. Aynı şekilde, mobil telefon üreticileri, 2D modelin ne zaman kapanacağını belirlemek için genellikle mobil cihazın kullanıcının yüzüne yakın tutulması (örneğin, çağrısı) gerekir. Cihazın yönünü belirlemek için Google Haritalar'daki cihazın ivme ölçeri ve jeomanyetik alan sensörü.
Not: Yön sensörü, Android 2.2'de kullanımdan kaldırılmıştır (API düzeyi 8) ve yön sensörü türü için Android 4.4W desteği sonlandırıldı (API düzeyi 20).
Konum sensörleri, cihazın fiziksel konumunu belirlemek için düşünülebilir. Örneğin, jeomanyetik alanı kullanabilirsiniz bir cihazın konumunu belirlemek için ivme ölçerle birlikte sensör manyetik kuzey kutbuna göre değişir. Bu sensörleri ayrıca, uygulamanızın referans çerçevesindeki cihazın yönünü belirler. Konum sensörleri genelde cihazın hareketini veya hareketini izlemek için kullanılmaz. (daha fazla bilgi için bkz. Hareket sensörleri'ne bakın).
Jeomanyetik alan sensörü ve ivme ölçer çok boyutlu diziler döndürür
her SensorEvent
için sensör değerlerinin toplamıdır. Örneğin,
jeomanyetik alan sensörü, jeomanyetik alan gücü
üç koordinat ekseninin her biri için ayrı bir zaman çizelgesi oluşturmak üzere kullanılır. Benzer şekilde
ivme ölçer sensörü, 20 dakikada cihaza uygulanan ivmeyi ölçer
sensör olayına bakalım. Kullanılan koordinat sistemleri hakkında daha fazla bilgi için
için bkz.
Sensör koordinat sistemleri. Yakınlık sensörü tek bir değer sağlar
tıklayın. Tablo 1'de, en düşük konum sağlayan konum sensörleri
Android platformunda destekleniyor.
Tablo 1. Android platformunda desteklenen konum sensörleri.
Sensör | Sensör etkinlik verileri | Açıklama | Ölçü birimleri |
---|---|---|---|
TYPE_GAME_ROTATION_VECTOR |
SensorEvent.values[0] |
x ekseni (x * sin(∧/2)) boyunca döndürme vektör bileşeni). | Birimsiz |
SensorEvent.values[1] |
Y eksenindeki döndürme vektör bileşeni (y * sin(∧/2)). | ||
SensorEvent.values[2] |
Z ekseni boyunca döndürme vektör bileşeni (z * sin(∧/2)). | ||
TYPE_GEOMAGNETIC_ROTATION_VECTOR |
SensorEvent.values[0] |
x ekseni (x * sin(∧/2)) boyunca döndürme vektör bileşeni). | Birimsiz |
SensorEvent.values[1] |
Y eksenindeki döndürme vektör bileşeni (y * sin(∧/2)). | ||
SensorEvent.values[2] |
Z ekseni boyunca döndürme vektör bileşeni (z * sin(∧/2)). | ||
TYPE_MAGNETIC_FIELD |
SensorEvent.values[0] |
X eksenindeki jeomanyetik alan gücü. | μT |
SensorEvent.values[1] |
Y eksenindeki jeomanyetik alan gücü. | ||
SensorEvent.values[2] |
Z eksenindeki jeomanyetik alan gücü. | ||
TYPE_MAGNETIC_FIELD_UNCALIBRATED |
SensorEvent.values[0] |
x ekseni boyunca jeomanyetik alan gücü (sert demir kalibrasyonu olmadan). | μT |
SensorEvent.values[1] |
y ekseni boyunca jeomanyetik alan gücü (sert demir kalibrasyonu olmadan). | ||
SensorEvent.values[2] |
Z ekseni boyunca jeomanyetik alan gücü (sert demir kalibrasyonu olmadan). | ||
SensorEvent.values[3] |
X ekseni boyunca demir yangı tahmini. | ||
SensorEvent.values[4] |
Y ekseni boyunca demir yanlılığı tahmini. | ||
SensorEvent.values[5] |
Z ekseni boyunca demir yangı tahmini. | ||
TYPE_ORIENTATION 1 |
SensorEvent.values[0] |
Azimut (z ekseni etrafındaki açı). | Derece |
SensorEvent.values[1] |
Eğim (x ekseninin etrafındaki açı). | ||
SensorEvent.values[2] |
Yuvarla (y ekseninin etrafındaki açı). | ||
TYPE_PROXIMITY |
SensorEvent.values[0] |
Nesneden uzaklık.2 | cm |
1Bu sensör, Android 2.2 (API) sürümünde kullanımdan kaldırılmıştır seviye 8) ve bu sensör türü Android 4.4W (API düzeyi 20) sürümünde kullanımdan kaldırılmıştır. Sensör çerçevesi, cihaz alımı için alternatif yöntemler sunar Bu, Compute Engine'de açıklandığı şekilde cihazın yönünü kontrol edin.
2 Bazı yakınlık sensörleri yalnızca ikili değerler sağlar temsil eder.
Oyun döndürme vektör sensörünü kullanma
Oyun dönüş vektörü sensörü, Rotasyon vektör sensörü (jeomanyetik alanı kullanmaz). Dolayısıyla Y ekseni başka bir referans noktası görevi görebilir. Bu referansın jiroskopun Z ekseni etrafında kaymasıyla aynı büyüklük sıralamasına sahiptir.
Oyun dönüş vektörü sensörü manyetik alanı kullanmadığı için, göreceli dönüşler ve manyetik alan değişikliklerinden etkilenmez. Aşağıdaki durumlarda oyunda bu sensörü kullanın: kuzeyin nerede olduğunu umursamıyorsunuz ve normal dönüş vektörü ihtiyaçlarınızı karşılamıyor. çünkü manyetik alana bağımlıdır.
Aşağıdaki kod, varsayılan oyun rotasyonu vektörünün bir örneğini nasıl alacağınızı gösterir sensör:
Kotlin
private lateinit var sensorManager: SensorManager private var sensor: Sensor? = null ... sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR)
Java
private SensorManager sensorManager; private Sensor sensor; ... sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GAME_ROTATION_VECTOR);
Jeomanyetik dönme vektörü sensörünü kullanma
Jeomanyetik dönüş vektörü sensörü dönme vektör sensörü ile başlar, ancak jiroskopu kullanmıyor. Bu sensörün doğruluğu normal dönüş vektöründen düşüktür ancak güç tüketimi azalır. Bu sensörü yalnızca dönüş verilerini toplamak istiyorsanız kullanın arka planda çok fazla pil kullanmadan bilgi kullanımını sağlar. Bu sensör en çok kullanıldığında faydalıdır birlikte kullanılmasını sağlar.
Aşağıdaki kod, varsayılan jeomanyetik dönüşün bir örneğini nasıl alacağınızı gösterir vektör sensörü:
Kotlin
private lateinit var sensorManager: SensorManager private var sensor: Sensor? = null ... sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR)
Java
private SensorManager sensorManager; private Sensor sensor; ... sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_GEOMAGNETIC_ROTATION_VECTOR);
Cihazın yönünü hesaplama
Cihazın yönünü hesaplayarak, her bir öğenin konumunu izleyebilirsiniz. cihazın referans çerçevesine bağlı olarak (özellikle, manyetik kuzey kutbu). Aşağıdaki kodda, bir cihazın her bir özelliğinin değerini yön:
Kotlin
private lateinit var sensorManager: SensorManager ... // Rotation matrix based on current readings from accelerometer and magnetometer. val rotationMatrix = FloatArray(9) SensorManager.getRotationMatrix(rotationMatrix, null, accelerometerReading, magnetometerReading) // Express the updated rotation matrix as three orientation angles. val orientationAngles = FloatArray(3) SensorManager.getOrientation(rotationMatrix, orientationAngles)
Java
private SensorManager sensorManager; ... // Rotation matrix based on current readings from accelerometer and magnetometer. final float[] rotationMatrix = new float[9]; SensorManager.getRotationMatrix(rotationMatrix, null, accelerometerReading, magnetometerReading); // Express the updated rotation matrix as three orientation angles. final float[] orientationAngles = new float[3]; SensorManager.getOrientation(rotationMatrix, orientationAngles);
Sistem, yön açılarını hesaplarken cihazın jeomanyetik cihaz ivme ölçeriyle birlikte alan sensörü. Bu ikisini kullanmak sistem aşağıdaki üç cihaz için veri sağlar: yön açıları:
- Azimut (-z ekseni etrafındaki dönme dereceleri). Bu cihazın geçerli pusula yönü ile manyetik kuzey arasındaki açı. Cihazın üst kenarı manyetik kuzey yönüne bakıyorsa azimut 0 olur derece; üst kenar güneye bakıyorsa azimut 180 derecedir. Aynı şekilde, üst kenar doğuya bakıyorsa azimut 90 derecedir ve üst kenarın üst kenarı 90 derecedir batıya bakarken azimut 270 derecedir.
- Eğim (x ekseni etrafındaki dönüş dereceleri). Bu, cihazın ekranına paralel bir düzlem ile paralel düzlem arasındaki açı zemine koydu. Cihazı zemini tabanına paralel tutarsanız kendinize en yakın kenarını çekin ve cihazın üst kenarını zemine doğru eğin, eğim açısı pozitif hale gelir. Ters yönde yatırma— cihazın üst kenarını yerden uzaklaştırarak açısını negatife çevirir. Değer aralığı -90 derece ile - 90 derece.
- Yuvarla döndürme (y ekseni etrafındaki dönüş dereceleri). Bu, cihazın ekranına dik bir düzlem ile düzlem arasındaki açı hizalanır. Cihazı zemine paralel tutarsanız alt kenarı size en yakın olacak şekilde yerleştirin ve cihazın sol kenarını eğin doğru yuvarlanma açısı pozitif hale gelir. Aksi yönde yatırma yönde (cihazın sağ kenarını zemine doğru hareket ettirerek) yuvarlanma açısının negatif olmasına neden olur. Değer aralığı -180 derecedir 180 dereceye kadar.
Not: Sensörün yuvarlanma tanımı jeosensör ekosistemindeki uygulamaların büyük bir çoğunluğu.
Bu açıların, koordinat sisteminden farklı bir koordinat sisteminde havacılıkta kullanılan (sapma, dönüş ve yuvarlanma için) Havacılık sisteminde, x ekseni, uçağın uzun kenarı boyunca (kuyruktan buruna) kadardır.
Yön sensörü, ham sensör verilerini işleyerek verilerini türetir
ivme ölçer ve jeomanyetik alan sensöründen alınır. Yoğun kondisyon
yönlendirmenin doğruluğu ve kesinliği de dahil,
sensör azaldı. Daha net bir ifadeyle, bu sensör yalnızca yuvarlama yaptığınızda güvenilirdir.
açı 0'dır. Bunun sonucunda, yön sensörü Android'de kullanımdan kaldırıldı.
2.2 (API düzeyi 8) ve yön sensörü türü Android'de kullanımdan kaldırıldı
4,4W (API düzeyi 20).
Yön sensöründen alınan ham verileri kullanmak yerine
getRotationMatrix()
bağlantısını kullanın
yöntemi ile birlikte
getOrientation()
yöntem
Yön değerlerini hesaplamak için aşağıdaki kod örneğinde gösterildiği gibi. Parçası
bu sürecin devamında
remapCoordinateSystem()
.
yön değerlerini uygulamanızın çerçeve
bir referans noktası olarak kabul edilir.
Kotlin
class SensorActivity : Activity(), SensorEventListener { private lateinit var sensorManager: SensorManager private val accelerometerReading = FloatArray(3) private val magnetometerReading = FloatArray(3) private val rotationMatrix = FloatArray(9) private val orientationAngles = FloatArray(3) public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager } override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) { // Do something here if sensor accuracy changes. // You must implement this callback in your code. } override fun onResume() { super.onResume() // Get updates from the accelerometer and magnetometer at a constant rate. // To make batch operations more efficient and reduce power consumption, // provide support for delaying updates to the application. // // In this example, the sensor reporting delay is small enough such that // the application receives an update before the system checks the sensor // readings again. sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)?.also { accelerometer -> sensorManager.registerListener( this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI ) } sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD)?.also { magneticField -> sensorManager.registerListener( this, magneticField, SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI ) } } override fun onPause() { super.onPause() // Don't receive any more updates from either sensor. sensorManager.unregisterListener(this) } // Get readings from accelerometer and magnetometer. To simplify calculations, // consider storing these readings as unit vectors. override fun onSensorChanged(event: SensorEvent) { if (event.sensor.type == Sensor.TYPE_ACCELEROMETER) { System.arraycopy(event.values, 0, accelerometerReading, 0, accelerometerReading.size) } else if (event.sensor.type == Sensor.TYPE_MAGNETIC_FIELD) { System.arraycopy(event.values, 0, magnetometerReading, 0, magnetometerReading.size) } } // Compute the three orientation angles based on the most recent readings from // the device's accelerometer and magnetometer. fun updateOrientationAngles() { // Update rotation matrix, which is needed to update orientation angles. SensorManager.getRotationMatrix( rotationMatrix, null, accelerometerReading, magnetometerReading ) // "rotationMatrix" now has up-to-date information. SensorManager.getOrientation(rotationMatrix, orientationAngles) // "orientationAngles" now has up-to-date information. } }
Java
public class SensorActivity extends Activity implements SensorEventListener { private SensorManager sensorManager; private final float[] accelerometerReading = new float[3]; private final float[] magnetometerReading = new float[3]; private final float[] rotationMatrix = new float[9]; private final float[] orientationAngles = new float[3]; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { // Do something here if sensor accuracy changes. // You must implement this callback in your code. } @Override protected void onResume() { super.onResume(); // Get updates from the accelerometer and magnetometer at a constant rate. // To make batch operations more efficient and reduce power consumption, // provide support for delaying updates to the application. // // In this example, the sensor reporting delay is small enough such that // the application receives an update before the system checks the sensor // readings again. Sensor accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); if (accelerometer != null) { sensorManager.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI); } Sensor magneticField = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD); if (magneticField != null) { sensorManager.registerListener(this, magneticField, SensorManager.SENSOR_DELAY_NORMAL, SensorManager.SENSOR_DELAY_UI); } } @Override protected void onPause() { super.onPause(); // Don't receive any more updates from either sensor. sensorManager.unregisterListener(this); } // Get readings from accelerometer and magnetometer. To simplify calculations, // consider storing these readings as unit vectors. @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { System.arraycopy(event.values, 0, accelerometerReading, 0, accelerometerReading.length); } else if (event.sensor.getType() == Sensor.TYPE_MAGNETIC_FIELD) { System.arraycopy(event.values, 0, magnetometerReading, 0, magnetometerReading.length); } } // Compute the three orientation angles based on the most recent readings from // the device's accelerometer and magnetometer. public void updateOrientationAngles() { // Update rotation matrix, which is needed to update orientation angles. SensorManager.getRotationMatrix(rotationMatrix, null, accelerometerReading, magnetometerReading); // "rotationMatrix" now has up-to-date information. SensorManager.getOrientation(rotationMatrix, orientationAngles); // "orientationAngles" now has up-to-date information. } }
Genelde veriler için veri işleme veya filtreleme sensörün çevirmeden başka ham yön açılarını da koordinasyon sistemini uygulamanızın referans çerçevesine göre düzenler.
Jeomanyetik alan sensörünü kullanma
Jeomanyetik alan sensörü dünyanın manyetik alanındaki değişiklikleri izlemenize olanak tanır. İlgili içeriği oluşturmak için kullanılan aşağıdaki kod, varsayılan jeomanyetik alan sensörünün bir örneğini nasıl alacağınızı gösterir:
Kotlin
private lateinit var sensorManager: SensorManager private var sensor: Sensor? = null ... sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD)
Java
private SensorManager sensorManager; private Sensor sensor; ... sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD);
Not: Uygulamanız Android 12 (API düzeyi 31) veya bu sensör daha yüksek sıralı olarak sınırlandırılmıştır.
Bu sensör, üç koordinat ekseninin her biri için ham alan gücü verileri (μT cinsinden) sağlar.
Genellikle bu sensörü doğrudan kullanmanız gerekmez. Bunun yerine, döndürme vektörünü
Sensör kullanarak ham dönme hareketini belirleyebilir veya ivme ölçer ve jeomanyetik alan
yöntemini getRotationMatrix()
yöntemi ile birlikte kullanarak döndürme matrisini ve eğim matrisini elde edebilirsiniz. Ardından
bu matrisleri getOrientation()
ile kullanın
ve azimut elde etmek için getInclination()
yöntemleri
jeomanyetik eğim verileri.
Not: Uygulamanızı test ederken, sensörün doğruluğunu kontrol etmek için cihazı 8-8 deseni ile sallayın.
Kalibre edilmemiş manyetometreyi kullanma
Kalibre edilmemiş manyetometre, jeomanyetik alana benzer
sensörü ile çalışması gerekir. Tek fark, manyetik alana sert demir kalibrasyonu uygulanmamasıdır. Fabrika kalibrasyonu
ve sıcaklık dengelemesi manyetik alana uygulanmaya devam ediyor. Kalibre edilmemiş manyetometre
kötü sert demir tahminlerinin ele alınmasında yararlıdır. Genel olarak, geomagneticsensor_event.values[0]
uncalibrated_magnetometer_event.values[0] -
uncalibrated_magnetometer_event.values[3]
civarında olacaktır. Yani,
calibrated_x ~= uncalibrated_x - bias_estimate_x
Not: Kalibre edilmemiş sensörler daha fazla ham sonuç sağlar ve bazı sapmaları da içerir, ancak ölçümlerine kalibrasyondur. Bazı uygulamalar, kalibre edilmemiş bu sonuçları daha akıcı ve etkili olduğu için tercih edebilir. yardımcı olur. Örneğin, bir uygulama kendi sensör füzyonunu yapmaya çalışıyorsa Hatta kalibrasyon uygulamak sonuçları bozabilir.
Kalibre edilmemiş manyetometre, manyetik alana ek olarak tahmini sert demir sapması. Aşağıdaki kodda varsayılan kalibre edilmemiş manyetometre:
Kotlin
private lateinit var sensorManager: SensorManager private var sensor: Sensor? = null ... sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED)
Java
private SensorManager sensorManager; private Sensor sensor; ... sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_MAGNETIC_FIELD_UNCALIBRATED);
Yakınlık sensörünü kullan
Yakınlık sensörü, bir nesnenin cihazdan ne kadar uzakta olduğunu belirlemenizi sağlar. Aşağıdakiler kodu, varsayılan yakınlık sensörünün bir örneğini nasıl alacağınızı gösterir:
Kotlin
private lateinit var sensorManager: SensorManager private var sensor: Sensor? = null ... sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY)
Java
private SensorManager sensorManager; private Sensor sensor; ... sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); sensor = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY);
Yakınlık sensörü genellikle bir kişinin kafasının yüzünün ne kadar uzakta olduğunu belirlemek için kullanılır (örneğin, kullanıcı bir telefon görüşmesi yaparken veya alırken). En sık yakınlık sensörleri mutlak mesafeyi cm cinsinden döndürür, ancak bazıları yalnızca yakın ve fark eder.
Not: Bazı cihaz modellerinde yakınlık sensörü Bu, ekran açıkken etkinleştirilirse ekranda yanıp sönen bir noktanın görünmesine neden olabilir beklemeye gerek yoktur.
Aşağıdaki kodda yakınlık sensörünün nasıl kullanılacağı gösterilmektedir:
Kotlin
class SensorActivity : Activity(), SensorEventListener { private lateinit var sensorManager: SensorManager private var proximity: Sensor? = null public override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.main) // Get an instance of the sensor service, and use that to get an instance of // a particular sensor. sensorManager = getSystemService(Context.SENSOR_SERVICE) as SensorManager proximity = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY) } override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) { // Do something here if sensor accuracy changes. } override fun onSensorChanged(event: SensorEvent) { val distance = event.values[0] // Do something with this sensor data. } override fun onResume() { // Register a listener for the sensor. super.onResume() proximity?.also { proximity -> sensorManager.registerListener(this, proximity, SensorManager.SENSOR_DELAY_NORMAL) } } override fun onPause() { // Be sure to unregister the sensor when the activity pauses. super.onPause() sensorManager.unregisterListener(this) } }
Java
public class SensorActivity extends Activity implements SensorEventListener { private SensorManager sensorManager; private Sensor proximity; @Override public final void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); // Get an instance of the sensor service, and use that to get an instance of // a particular sensor. sensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE); proximity = sensorManager.getDefaultSensor(Sensor.TYPE_PROXIMITY); } @Override public final void onAccuracyChanged(Sensor sensor, int accuracy) { // Do something here if sensor accuracy changes. } @Override public final void onSensorChanged(SensorEvent event) { float distance = event.values[0]; // Do something with this sensor data. } @Override protected void onResume() { // Register a listener for the sensor. super.onResume(); sensorManager.registerListener(this, proximity, SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { // Be sure to unregister the sensor when the activity pauses. super.onPause(); sensorManager.unregisterListener(this); } }
Not: Bazı yakınlık sensörleri
"yakın" veya "uzak". Bu durumda, sensör genellikle uzak durumdaki maksimum aralık değerini bildirir
yakın durumda daha küçük bir değere sahip olur. Genellikle, uzak değer bir değerdir > 5 cm'dir, ancak bu süre değişiklik gösterebilir
yardımcı olabilir. getMaximumRange()
yöntemini kullanarak bir sensörün maksimum menzilini belirleyebilirsiniz.