2014-04-09 4 views

답변

4

모든 안드로이드 모바일에는 다양한 환경 조건을 측정하기위한 센서가 함께 제공됩니다. 근접 센서는 어떤 물체가 장치에서 떨어지는 거리를 측정합니다. 이것은 종종 장치 옆에있는 사람의 얼굴의 존재를 감지하는 데 사용됩니다.

근접 센서 중 일부는 바이너리 근거리 또는 원거리 측정 만 지원합니다. 이 경우 센서는 원거리 상태의 최대 범위 값과 근거리 상태의 더 작은 값을보고해야합니다. 우리가 3 텍스트 뷰의가 위의 예에서

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

위의 코드에 대한 레이아웃 XML

은 아래와 같습니다. 첫 번째는 장치가 근접 센서를 지원하는지 표시하고 두 번째는 센서가 지원하는 최대 범위를 표시하고 세 번째는 현재 판독 값을 표시합니다.

근접 센서가 기본 아이디어가되었습니다.