2013-01-07 1 views
2

주머니에있을 때가 아니라 내 손에 장치가있을 때만 장치의 움직임을 감지해야하는 작은 응용 프로그램을 만들고 있습니다.Android : SensorListener

지금 당장은 응용 프로그램을 만들었지 만 걷거나 실행할 때 센서 이벤트가 발생하고 주머니에 모바일이 있습니까?

누군가가 장치를 가지고있을 때만 변경된 센서를 불러도됩니까?

덕분에, 라 메쉬

+0

"누군가가 장치를 가지고있을 때만 센서가 변경되도록 호출 할 수 있습니까?" API에는 이와 같은 메소드가 없으며 확실하게 구분할 수 있을지 잘 모르겠습니다. 화면이 켜져있을 때만 움직임을 추적 할 수 있습니다 ... – Sam

+0

포켓에 있는지 감지하기 위해 근접 센서 또는 광 센서로 작업 해보십시오. – bricklore

답변

0

당신은 첫 번째 검사에 대한 의도 ACTION_USER_PRESENT 전화를 사용하는 경우를 사용하거나 대기 모드에 있습니다. 그런 다음 Accelerometer을 구현하여 동작을 감지 할 수 있습니다. 이 같은 Manifest.xml을

public class SensorReceiver extends BroadcastReceiver { 

     @Override 
     public void onReceive(Context context, Intent intent) { 
      String action = intent.getAction(); 

      if (action.equals(Intent.ACTION_USER_PRESENT)) { 
        // TODO notify the user is present 
      } 
     } 
} 

그리고 당신의 에 선언 : 당신의 ACTION_USER_PRESENT 검출

public class SensorsActivity extends Activity implements SensorEventListener { 
     private SensorManager sensorManager; 

     @Override 
     public void onCreate(Bundle savedInstanceState){ 

      super.onCreate(savedInstanceState); 
      setContentView(R.layout.activity_sensors); 

      sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); 

      sensorManager.registerListener(this, 
        sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), 
        SensorManager.SENSOR_DELAY_NORMAL); 
     } 

     public void onAccuracyChanged(Sensor sensor,int accuracy){ 

     } 

     public void onSensorChanged(SensorEvent event){ 
       // check sensor type 
      if(event.sensor.getType()==Sensor.TYPE_ACCELEROMETER){ 
         // TODO after accelerometer detected do something here 
      } 
     } 
} 

당신이 BroadcastReceiver을 가진해야합니다

<receiver android:name=".SensorReceiver"> 
     <intent-filter android:enabled="true" android:exported="false"> 
      <action android:name="android.intent.action.USER_PRESENT" /> 
     </intent-filter> 
</receiver> 


다음은 예입니다 희망이 도움이됩니다!

+0

좋은 생각 ... 감사합니다 :) –