2016-05-07 4 views
-1

Im utilisant Accelerometer Sensor pour détecter les mouvements du téléphone, et quand il détecte un mouvement, il envoie une notification. lorsqu'il envoie une notification je souhaite arrêter le capteur d'accéléromètre. Eh bien, je n'ai aucune idée de comment faire cela. une idée les gars? Je sais que je dois me désinscrire mais je ne sais pas comment et où j'ai besoin de l'annuler.Comment arrêter le capteur accéléromètre?

principal code d'activité

public class MainActivity extends Activity implements SensorEventListener, Listen { 

private BroadcastReceiver statusReceiver; 
Sensor accelerometer; 
SensorManager sm; 
TextView acceleration; 
SendValues sv; 

private static final String TAG = "MainActivity"; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    sm = (SensorManager) getSystemService(SENSOR_SERVICE); 
    accelerometer = sm.getDefaultSensor(Sensor.TYPE_ACCELEROMETER); 
    sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
    acceleration = (TextView) findViewById(R.id.sensorTxt); 

    statusReceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String type = intent.getStringExtra("message"); //get the type of message from MyGcmListenerService 1 - lock or 0 -Unlock 
      Log.d(TAG, "TypeMessage: " + type); 
      if (type == "1") // 1 == lock 
      { 
       stopService(); 
      } else { 
       onPause(); 
      } 
     } 

    };} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

@Override 
public void onPause() 
{ 
    super.onPause(); 
    sm.unregisterListener(this); 
} 

public void stopService() 
{ 
    sm.unregisterListener(this); 
} 

@Override 
public void onResume() 
{ 
    super.onResume(); 
    sm.registerListener(this, accelerometer, SensorManager.SENSOR_DELAY_NORMAL); 
} 

@Override 
public void onSensorChanged(SensorEvent event) { 
    acceleration.setText("X: " + event.values[0] + 
      "\nY: " + event.values[1] + 
      "\nZ: " + event.values[2]); 

    // get the phone number from the login 
    SharedPreferences sh = getSharedPreferences("BikePhone", Context.MODE_PRIVATE); 
    String phone = sh.getString(Params.PHONE, null); 

    if (event.values[0] >= 5.000 || (event.values[0] <= -5.000) || (event.values[1] >= 5.000) || (event.values[1] <= -5.000)) { 

     sv = new SendValues(phone, "1"); 

     Gson g = new Gson(); 
     String ans = g.toJson(sv, SendValues.class); 
     send(sv); 
    } 
} 

@Override 
public void onAccuracyChanged(Sensor sensor, int accuracy) { 

} 


public void send(SendValues sv) { 
    SendThreadCommunication con; 
    ServerRequest ser = new ServerRequest(); 
    ser.setResponse(this); 
    Gson gson = new Gson(); 

    String send = gson.toJson(sv, SendValues.class); 

    ser.addParamaters(Params.VALUES, send); 
    ser.addServerName(Params.SERVER_URL); 
    ser.addServletName(Params.BIKE_TO_USER); 
    con = new SendThreadCommunication(ser); 
    con.start(); 
} 

@Override 
public void good() { 
    Toast.makeText(getApplication(), "successful transfer", Toast.LENGTH_LONG).show(); 
} 

@Override 
public void notGood() { 
    Toast.makeText(getApplication(), "UNsuccssful transfer", Toast.LENGTH_LONG).show(); 
} 

@Override 
public void userGcmNotRegistered() { 
    Toast.makeText(getApplication(), "There is some problem, please register again to the App", Toast.LENGTH_LONG).show(); 
    } 

} 

Répondre