使用加速度计来通知他们是否接触了手机



我是传感器的新手,触摸手机时无法通过加速度计激活声音,这样人们就可以听到他们触摸了手机。

这是代码,你能支持我看看我做错了什么吗

public class MainActivity extends Activity {

Timer lastTouchedTimer;
MediaPlayer mMediaplayer;
/**
* Called when the activity is first created.
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
SensorEventListener newListener = new SensorEventListener() {
@Override
public void onSensorChanged(SensorEvent sensorEvent) {
float x = sensorEvent.values[0];
float y = sensorEvent.values[1];
if(x > -1.1 && x < 1.1 && y > -1.1 && y < 1.1) {
if (lastTouchedTimer == null) {
lastTouchedTimer = new Timer();
} else
lastTouchedTimer.cancel();
}
lastTouchedTimer.schedule(new TimerTask() {
@Override
public void run() {
try {
AssetFileDescriptor afd = getAssets().openFd("beep.wav");
mMediaplayer = new MediaPlayer();
mMediaplayer.setDataSource(afd.getFileDescriptor(), afd.getStartOffset(), afd.getLength());
afd.close();
mMediaplayer.prepare();
mMediaplayer.start();
mMediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
//mp.setLooping(false);
mp.stop();
mp.release();
}
});
} catch(Exception e) {
e.printStackTrace();
}
}
}, 5000);
}
@Override
public void onAccuracyChanged(Sensor sensor, int i) {
//To change body of implemented methods use File | Settings | File Templates.
}
};
}
}

您需要使用SensorManager注册加速度计传感器。

在代码中添加类似的内容。

SensorManager sensorsManager = (SensorManager) context.getSystemService(Context.SENSOR_SERVICE);
Sensor accelSensor = sensorsManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
sensorsManager.registerListener(newListener, accelSensor,SensorManager.SENSOR_DELAY_FASTEST);

最新更新