2015-04-13 5 views
19

I einen Empfänger geschrieben hatte Vorrichtung Bewegung zu erkennen ist, verändert oder nicht in Manifest.xml magWie erkenne ich den Bewegungssensor im Rundfunkempfänger?

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

und innen Empfänger OnReceive() Methode Code ist:

String action = intent.getAction(); 
     if (action.equals(Intent.ACTION_USER_PRESENT)) { 
      System.out.println("User is present"); 
      Intent s = new Intent(context, MainActivity.class); 
      s.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(s); 
     } else { 
      System.out.println("User is not present"); 
     } 

schließlich meine Frage ist, erkennt nicht den Sensor, wenn es bewegt wird, es erkennt, wenn mein Gerät in entsperrt, dann ruft es meine MainActivity, aber ich möchte erkennen, wenn mein Gerät Bewegung wird geändert, dann möchte ich im Empfänger erkennen. Wie kann ich das machen?.

+0

Ist Ihre CPU wach ist oder schläft? Obwohl Sie Ihre Übertragung empfangen, Sie aber keine Bewegung feststellen können, müssen Sie Ihre CPU wecken, wenn sie in den Ruhezustand versetzt wurde. Um mit [dies zu überprüfen] (https://developer.android.com/reference/android/support/v4/content/WakefulBroadcastReceiver.html) – Skynet

+0

Wenn es im Schlafmodus ist, dann wird meine Gerätebewegung nicht erkannt? – Hanuman

+0

Wenn sich Ihr Gerät im Schlafmodus befindet - leider nicht, wecken Sie Ihr Gerät mit einem teilweisen Wakelock auf. Aber stellen Sie sicher, Ressourcen freizugeben, sobald Sie mit Ihren Operationen fertig sind. Es ist kritisch für die Batterie. – Skynet

Antwort

10

Get Objekt von Sensormanager wie unten-

SensorManager sensorMan = (SensorManager)getSystemService(SENSOR_SERVICE); 

Sensor sensor = sensorMan.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 

Register Zuhörer Änderungen in Bewegung zu hören sensor-

sensorMan.registerListener(context, sensor, 
     SensorManager.SENSOR_DELAY_UI); 

Dann überschreiben onSensorChanged() Methode zum Nachweis Änderungen-

@Override 
public void onSensorChanged(SensorEvent event) { 
    if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER){ 
    //do some stuff 
    } 
    //do some other code for other Sensor type 
    } 
1

Sie können nicht und sollten das nicht tun, denn wenn der Bildschirm vom Sensor verschwindet ' Das Gerät wird in den meisten Geräten automatisch ausgeschaltet. Einige Geräte unterstützen Sensoren, die nach dem Ausschalten des Bildschirms wie Nexus 4 abhören. Aber Sie können die Empfänger erstellen, die den Bildschirm abhören und den Bildschirm abhören.

public class Bildschirm erstreckt BroadcastReceiver {

@Override 
    public void onReceive(Context context, Intent intent) { 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) { 
      screenOn(); 
     } 
     if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) { 
      screenOff(); 
     } 

    } 


    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(Intent.ACTION_SCREEN_OFF); 
    intentFilter.addAction(Intent.ACTION_SCREEN_ON); 
    mReceiver = new Screen(); 
    registerReceiver(mReceiver, intentFilter);