Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 更改按钮颜色的接近传感器_Android - Fatal编程技术网

Android 更改按钮颜色的接近传感器

Android 更改按钮颜色的接近传感器,android,Android,我正在尝试制作一个应用程序,使按钮的颜色随着接近传感器的变化而变化 我不知道如何在sensorchanged部分更改它。我必须导入颜色并实现不同的颜色状态吗?我有点困惑 这是我的密码: public class MainProxmityActivity extends Activity implements SensorEventListener { Button proximidade; SensorManager Sm; Sensor ProxSensor; @Override prot

我正在尝试制作一个应用程序,使按钮的颜色随着接近传感器的变化而变化

我不知道如何在sensorchanged部分更改它。我必须导入颜色并实现不同的颜色状态吗?我有点困惑

这是我的密码:

public class MainProxmityActivity extends Activity implements SensorEventListener {

Button proximidade;
SensorManager Sm;
Sensor ProxSensor;

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

    Sm = (SensorManager) getSystemService (SENSOR_SERVICE);
    ProxSensor = Sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
    proximidade = (Button) findViewById(R.id.btn_proximidade);

    Sm.registerListener(this, ProxSensor, SensorManager.SENSOR_DELAY_NORMAL);

}

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

@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
    // TODO Auto-generated method stub

}

@Override
public void onSensorChanged(SensorEvent event) {
    // TODO Auto-generated method stub
    proximidade.setBackgroundColor(getTitleColor("bd4c31"));
}

}

希望问题清楚。

Android设备有一组传感器,因此onSensorChanged()代码通常有一个switch语句来选择感兴趣的传感器。特别是,接近传感器返回表示接近的浮点值(例如,如果传感器的最大范围为5.0,<1.0表示“接近”)。试着这样做:

int mColor;
public void onSensorChanged(SensorEvent event) {
    switch (event.sensor.getType()) {
    case Sensor.TYPE_PROXIMITY:
        if (event.values[0] < 1.0f) {
            if (mColor != Color.GREEN) {
                mColor = Color.GREEN;
                proximidade.setBackgroundColor(Color.GREEN);
            }
        }
        else {
            if (mColor != Color.WHITE) {
                mColor = Color.WHITE;
                proximidade.setBackgroundColor(Color.WHITE);
            }
        }
        break;
    }
}
mSensorManager.registerListener(mViewWithSensorListener, s, SensorManager.SENSOR_DELAY_NORMAL)
mSensorManager.unregisterListener(mViewWithSensorListener);
在onStop()代码中,还可以使用以下方法将侦听器注销到接近传感器:

int mColor;
public void onSensorChanged(SensorEvent event) {
    switch (event.sensor.getType()) {
    case Sensor.TYPE_PROXIMITY:
        if (event.values[0] < 1.0f) {
            if (mColor != Color.GREEN) {
                mColor = Color.GREEN;
                proximidade.setBackgroundColor(Color.GREEN);
            }
        }
        else {
            if (mColor != Color.WHITE) {
                mColor = Color.WHITE;
                proximidade.setBackgroundColor(Color.WHITE);
            }
        }
        break;
    }
}
mSensorManager.registerListener(mViewWithSensorListener, s, SensorManager.SENSOR_DELAY_NORMAL)
mSensorManager.unregisterListener(mViewWithSensorListener);

嗨@gregS谢谢你对我的帮助。非常感激。我有一个问题与您所说的onStart()和onStop()代码有关。这是否分别与onSensorChanged()和onAccuracyChanged()有关?我试着按照你说的去做,但似乎不起作用,尽管没有错误。下面是代码:public void onAccuracyChanged(Sensor-Sensor,int-accurity){Sm.unregisterListener(mViewWithSensorListener);}public void onSensorChanged(SensorEvent事件){Sm.registerListener(mViewWithSensorListener,这是您注册和取消注册侦听器的方式吗?因为您设备的接近传感器的精度不会改变,所以没有必要为其覆盖onAccuracyChanged()。另一方面,onAccuracyChanged()经常用于位置传感器。我希望这会有帮助。嘿,gregS。thanx,感谢你花时间回答我。看,你给我的代码中的“事件”有一个错误。你能解释一下为什么会发生这种情况吗?嘿!我让它工作了。我意识到我的三星Galaxy Tab GT P1000没有接近传感器。我已经在手机上试用过了Galaxy mini和它的工作。Thanx为小费人。收到!