2014-04-09 18 views

Antwort

4

Jedes Android-Handy wird mit Sensoren zur Messung verschiedener Umgebungsbedingungen ausgeliefert. Der Annäherungssensor misst die Entfernung, die ein Objekt vom Gerät entfernt ist. Es wird häufig verwendet, um das Vorhandensein des Gesichts einer Person neben dem Gerät zu erkennen.

Einige Näherungssensoren unterstützen nur eine binäre Nah- oder Fernmessung. In diesem Fall sollte der Sensor seinen maximalen Bereichswert im fernen Zustand und einen niedrigeren Wert im nahen Zustand melden.

<?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> 

Im obigen Beispiel haben wir 3 Textview ist:

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])); 
    } 
    } 
    }; 
} 

Das Layout XML für den obigen Code ist unten angegeben. Die erste Anzeige zeigt an, ob das Gerät den Näherungssensor unterstützt, die zweite, um die maximale Reichweite anzuzeigen, die vom Sensor unterstützt wird, und die dritte, um den aktuellen Messwert anzuzeigen.

Hoffe dies hat Ihnen eine Grundidee über Näherungssensoren gegeben.