Android - Sensörler

Android cihazların çoğu, hareketi, yönü ve çeşitli çevresel koşulları ölçen yerleşik sensörlere sahiptir. Android platformu, üç geniş sensör kategorisini destekler.

  • Hareket sensörleri
  • Çevresel sensörler
  • Konum sensörleri

Sensörlerin bir kısmı donanım tabanlı, bir kısmı da yazılım tabanlı sensörlerdir. Sensör ne olursa olsun, android bu sensörlerden ham verileri almamıza ve uygulamamızda kullanmamıza izin verir. Bunun için android bize bazı dersler veriyor.

Android, uygulamamızdaki sensörleri kullanmak için SensorManager ve Sensor sınıfları sağlar. Sensörleri kullanmak için yapmanız gereken ilk şey, SensorManager sınıfının nesnesini somutlaştırmaktır. Aşağıdaki gibi elde edilebilir.

SensorManager sMgr;
sMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);

Yapmanız gereken sonraki şey, SensorManager sınıfının getDefaultSensor () yöntemini çağırarak Sensor sınıfının nesnesini somutlaştırmaktır. Söz dizimi aşağıda verilmiştir -

Sensor light;
light = sMgr.getDefaultSensor(Sensor.TYPE_LIGHT);

Bu sensör bildirildikten sonra, dinleyicisini kaydetmeniz ve onAccuracyChanged ve onSensorChanged olan iki yöntemi geçersiz kılmanız gerekir. Söz dizimi aşağıdaki gibidir -

sMgr.registerListener(this, light,SensorManager.SENSOR_DELAY_NORMAL);
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}

public void onSensorChanged(SensorEvent event) {
}

Desteklenen sensörlerin listesi alınıyor

GetSensorList yöntemini arayarak cihazınız tarafından desteklenen sensörlerin bir listesini alabilirsiniz; bu, adlarını ve sürüm numaralarını içeren sensörlerin bir listesini ve çok daha fazla bilgiyi döndürür. Daha sonra bilgileri almak için listeyi yineleyebilirsiniz. Söz dizimi aşağıda verilmiştir -

sMgr = (SensorManager)this.getSystemService(SENSOR_SERVICE);
List<Sensor> list = sMgr.getSensorList(Sensor.TYPE_ALL);
for(Sensor sensor: list){
}

Bu yöntemlerin dışında, sensör çerçevesini yönetmek için SensorManager sınıfı tarafından sağlanan başka yöntemler de vardır. Bu yöntemler aşağıda listelenmiştir -

Sr.No Yöntem ve açıklama
1

getDefaultSensor(int type)

Bu yöntem, belirli bir tür için varsayılan sensörü alır.

2

getInclination(float[] I)

Bu yöntem, jeomanyetik eğim açısını eğim matrisinden radyan cinsinden hesaplar.

3

registerListener(SensorListener listener, int sensors, int rate)

Bu yöntem, sensör için bir dinleyici kaydeder

4

unregisterListener(SensorEventListener listener, Sensor sensor)

Bu yöntem, kayıtlı olduğu sensörler için bir dinleyicinin kaydını siler.

5

getOrientation(float[] R, float[] values)

Bu yöntem, cihazın yönünü döndürme matrisine göre hesaplar.

6

getAltitude(float p0, float p)

Bu yöntem, Rakımı, atmosfer basıncından ve deniz seviyesindeki basınçtan metre cinsinden hesaplar.

Misal

İşte SensorManager sınıfının kullanımını gösteren bir örnek. Cihazınızdaki sensörlerin listesini görüntülemenizi sağlayan temel bir uygulama oluşturur.

Bu örneği denemek için, bunu gerçek bir cihazda veya bir emülatörde çalıştırabilirsiniz.

Adımlar Açıklama
1 Com.example.sairamkrishna.myapplication paketi altında Android uygulaması oluşturmak için Android stüdyosunu kullanacaksınız.
2 Gerekli kodu eklemek için src / MainActivity.java dosyasını değiştirin.
3 İlgili XML bileşenlerini eklemek için res / layout / activity_main'i değiştirin.
4 Uygulamayı çalıştırın ve çalışan bir android cihaz seçin ve üzerine uygulamayı yükleyin ve sonuçları doğrulayın.

Aşağıda, değiştirilen içeriğin içeriği yer almaktadır. MainActivity.java.

package com.example.sairamkrishna.myapplication;

import android.app.Activity;
import android.hardware.SensorManager;
import android.os.Bundle;

import android.util.Log;

import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

import android.widget.TextView;

import java.util.List;
import android.hardware.Sensor;
import android.hardware.SensorManager;

public class MainActivity extends Activity {
   TextView tv1=null;
   private SensorManager mSensorManager;
   @Override
   
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      
      tv1 = (TextView) findViewById(R.id.textView2);
      tv1.setVisibility(View.GONE);
      
      mSensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
      List<Sensor> mList= mSensorManager.getSensorList(Sensor.TYPE_ALL);
      
      for (int i = 1; i < mList.size(); i++) {
         tv1.setVisibility(View.VISIBLE);
         tv1.append("\n" + mList.get(i).getName() + "\n" + mList.get(i).getVendor() + "\n" + mList.get(i).getVersion());
      }
   }
	
   @Override
   public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate the menu; this adds items to the action bar if it is present.
      getMenuInflater().inflate(R.menu.menu_main, menu);
      return true;
   }
   
   @Override
   public boolean onOptionsItemSelected(MenuItem item) {
      // Handle action bar item clicks here. The action bar will
      // automatically handle clicks on the Home/Up button, so long
      // as you specify a parent activity in AndroidManifest.xml.
      
      int id = item.getItemId();
      
      //noinspection SimplifiableIfStatement
      if (id == R.id.action_settings) {
         return true;
      }
      return super.onOptionsItemSelected(item);
   }
}

Xml'nin değiştirilmiş içeriği aşağıdadır activity_main.xml.

Aşağıdaki kodda abc tutorialspoint.com logosunu gösterir
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
   android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin"
   tools:context=".MainActivity"
   android:transitionGroup="true">
   
   <TextView android:text="Sensor " android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/textview"
      android:textSize="35dp"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point"
      android:id="@+id/textView"
      android:layout_below="@+id/textview"
      android:layout_centerHorizontal="true"
      android:textColor="#ff7aff24"
      android:textSize="35dp" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:theme="@style/Base.TextAppearance.AppCompat" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="New Text"
      android:id="@+id/textView2"
      android:layout_below="@+id/imageView"
      android:layout_alignParentBottom="true"
      android:layout_alignParentRight="true"
      android:layout_alignParentEnd="true"
      android:layout_alignParentLeft="true"
      android:layout_alignParentStart="true" />

</RelativeLayout>

Aşağıdakilerin içeriği res/values/string.xml.

<resources>
   <string name="app_name">My Application</string>
   <string name="hello_world">Hello world!</string>
   <string name="action_settings">Settings</string>
</resources>

Aşağıdakilerin içeriği AndroidManifest.xml dosya.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.sairamkrishna.myapplication" >
   <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>

Yeni değiştirdiğimiz uygulamamızı çalıştırmayı deneyelim. Senin yarattığını varsayıyorumAVDortam kurulumu yapılırken. Uygulamayı Android stüdyosundan çalıştırmak için, projenizin etkinlik dosyalarından birini açın

ve araç çubuğundan Çalıştır simgesine tıklayın . Android stüdyo, uygulamayı AVD'nize yükler ve başlatır ve kurulumunuz ve uygulamanızla ilgili her şey yolundaysa, aşağıdaki Emulator penceresini görüntüler -

Şimdi cihazınızın ekranına bakacak olursanız, cihazınız tarafından desteklenen sensörlerin listesini, isimlerini, versiyonlarını ve diğer bilgileri göreceksiniz.

Bu uygulamayı farklı cihazlarda çalıştırırsanız, çıktı farklı olacaktır çünkü çıktı cihazınız tarafından desteklenen sensörlerin sayısına bağlıdır.