2014-04-09 43 views

cevap

4

Her android mobil, çeşitli çevre koşullarını ölçmek için sensörlerle birlikte gönderilir. Yakınlık sensörü, bazı nesnelerin cihazdan uzaklığını ölçer. Cihazın yanında bir kişinin yüzünün varlığını tespit etmek için sıklıkla kullanılır.

Bazı yakınlık sensörleri sadece bir ikili yakın veya uzak ölçümü destekler. Bu durumda, sensör maksimum aralık değerini uzak durumda ve yakın konumda daha düşük bir değerde bildirmelidir. Biz 3 TextView'un en sahip Yukarıdaki örnekte

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
<TextView 
    android:id="@+id/proximitySensor" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
<TextView 
    android:id="@+id/proximityMax" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
<TextView 
    android:id="@+id/proximityReading" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    /> 
</LinearLayout> 

:

package com.exercise.AndroidProximitySensor; 

import android.app.Activity; 
import android.content.Context; 
import android.hardware.Sensor; 
import android.hardware.SensorEvent; 
import android.hardware.SensorEventListener; 
import android.hardware.SensorManager; 
import android.os.Bundle; 
import android.widget.TextView; 

public class AndroidProximitySensorActivity extends Activity { 
    /** Called when the activity is first created. */ 

TextView ProximitySensor, ProximityMax, ProximityReading; 

SensorManager mySensorManager; 
Sensor myProximitySensor; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ProximitySensor = (TextView)findViewById(R.id.proximitySensor); 
     ProximityMax = (TextView)findViewById(R.id.proximityMax); 
     ProximityReading = (TextView)findViewById(R.id.proximityReading); 

     mySensorManager = (SensorManager)getSystemService(
      Context.SENSOR_SERVICE); 
     myProximitySensor = mySensorManager.getDefaultSensor(
      Sensor.TYPE_PROXIMITY); 

     if (myProximitySensor == null){ 
     ProximitySensor.setText("No Proximity Sensor!"); 
     }else{ 
     ProximitySensor.setText(myProximitySensor.getName()); 
     ProximityMax.setText("Maximum Range: " 
      + String.valueOf(myProximitySensor.getMaximumRange())); 
     mySensorManager.registerListener(proximitySensorEventListener, 
      myProximitySensor, 
      SensorManager.SENSOR_DELAY_NORMAL); 
     } 
    } 

    SensorEventListener proximitySensorEventListener 
    = new SensorEventListener(){ 

    @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_PROXIMITY){ 
    ProximityReading.setText("Proximity Sensor Reading:" 
     + String.valueOf(event.values[0])); 
    } 
    } 
    }; 
} 

yukarıdaki kodu için düzen xml

aşağıda verilmiştir. Birincisi cihaz yakınlık algılayıcısını destekliyorsa, ikincisi sensör tarafından desteklenen maksimum aralığı ve mevcut okumayı görüntülemek için üçüncü üniteyi görüntülüyorsa gösterilecektir.

Bu yaklaşım, yaklaşım sensörleri hakkında temel bir fikir vermiştir.