我正在尝试制作一个应用程序,它只在接近传感器被覆盖时播放声音,但是当传感器未覆盖时,它会再次播放声音。
如何让它只在被覆盖时播放声音,而在未覆盖时不播放任何声音?
public class MainActivity extends ActionBarActivity {
SensorManager sm;
Sensor ProximitySensor;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
.add(R.id.container, new PlaceholderFragment())
.commit();
}
sm = (SensorManager)getSystemService(Context.SENSOR_SERVICE);
ProximitySensor = sm.getDefaultSensor(Sensor.TYPE_PROXIMITY);
sm.registerListener(proximitySensorEventListener,
ProximitySensor,
SensorManager.SENSOR_DELAY_FASTEST);
}
SensorEventListener proximitySensorEventListener = new SensorEventListener() {
@Override
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
@Override
public void onSensorChanged(SensorEvent event) {
if (event.sensor.getType() == Sensor.TYPE_PROXIMITY) {
call();
}
}
};
private void call() {
ImageView im = (ImageView) findViewById(R.id.nfcoff);
ImageView imm = (ImageView) findViewById(R.id.buz);
if (im.getVisibility() == View.INVISIBLE && imm.getVisibility() == View.VISIBLE) {
mp = MediaPlayer.create(this, R.raw.ovnoise);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
} else
if (im.getVisibility() == View.INVISIBLE && imm.getVisibility() == View.INVISIBLE) {
mp = MediaPlayer.create(this, R.raw.ovbus);
mp.start();
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
}
}发布于 2015-11-22 23:54:20
我添加了一个int count来计算该方法被调用的次数,并添加了一个if语句,声明该方法只有在int为奇数时才能被调用,这使得该方法每隔一次被调用都是无效的。
static int count = 0;
count++;
if (count % 2 != 0) {}https://stackoverflow.com/questions/33843486
复制相似问题