首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何停止加速度传感器?

如何停止加速度传感器?
EN

Stack Overflow用户
提问于 2016-05-07 12:05:43
回答 1查看 1.9K关注 0票数 0

我使用加速度传感器来检测手机的移动,当它检测到移动时,它会发送通知。当它发出通知时,我想要停止加速度传感器。我不知道该怎么做。伙计们有什么想法吗?我知道我需要注销,但我不知道我需要如何和在哪里注销它。

主要活动代码

代码语言:javascript
复制
  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();
    }

 }
EN

回答 1

Stack Overflow用户

发布于 2016-05-07 23:09:41

您需要使用unregisterListener (SensorEventListener侦听器)并在onPause()和onStop()中执行它。看来你们很接近了。

看看最新的文件 (因为答案中的一些信息可能被废弃),下面的链接:

(如何用android检测抖动事件?)

(震颤后停止Android加速度计)

(按一下按钮停止记录加速度计数据)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37088321

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档