0

近接センサーが覆われているときだけ音を鳴らすアプリを作ろうとしていますが、センサーが覆われていないときに再び音を鳴らします。

覆われているときだけ音を鳴らし、覆われていないときは音を鳴らさないようにするにはどうすればよいでしょうか。

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();
                    }
                });
            }
        }
4

1 に答える 1

0

メソッドが呼び出された回数をカウントする int カウントを追加し、int が奇数の場合にのみメソッドを呼び出すことができるという if ステートメントを追加し、メソッドが呼び出されるたびに無効にしました。

static int count = 0;

count++;

if (count % 2 != 0) {}
于 2015-11-22T15:54:20.237 に答える