Android 如何控制加速度计及其在安卓远程控制汽车中的应用
我想用安卓手机开一辆遥控车。 我用蓝牙耳机作为接收器。 我的手机发送双音多频音,当耳机接收到双音多频音时,手机会对其进行分析 微控制器,用于打开/关闭汽车电机 我用加速度计检测手机的运动。。。(前/左/右/后) 在每个乐章上,它都会播放特定的DTMF音调 这一切都可行,但存在一个问题: 当传感器值不断变化时,会播放大量音调 问题是:我怎样才能使音调只播放一次??(如守则所述) 代码如下:Android 如何控制加速度计及其在安卓远程控制汽车中的应用,android,bluetooth,accelerometer,dtmf,Android,Bluetooth,Accelerometer,Dtmf,我想用安卓手机开一辆遥控车。 我用蓝牙耳机作为接收器。 我的手机发送双音多频音,当耳机接收到双音多频音时,手机会对其进行分析 微控制器,用于打开/关闭汽车电机 我用加速度计检测手机的运动。。。(前/左/右/后) 在每个乐章上,它都会播放特定的DTMF音调 这一切都可行,但存在一个问题: 当传感器值不断变化时,会播放大量音调 问题是:我怎样才能使音调只播放一次??(如守则所述) 代码如下: X = (TextView)findViewById(R.id.x); Y = (TextView
X = (TextView)findViewById(R.id.x);
Y = (TextView)findViewById(R.id.y);
Z = (TextView)findViewById(R.id.z);
toneGenerator= new ToneGenerator(AudioManager.STREAM_DTMF,ToneGenerator.MAX_VOLUME);
sel = new SensorEventListener(){
public void onAccuracyChanged(Sensor sensor, int accuracy) {
}
public void onSensorChanged(SensorEvent event) {
float[] values = event.values;
float x = values[0];
float xx = Math.round(x) ;
float y = values[1];
float yy = Math.round(y) ;
float z = values[2];
float zz = Math.round(z) ;
X.setText("x:" + xx);
Y.setText("y:" + yy);
Z.setText("z:" + zz);
if (xx>-1 & xx<1 & zz>3 & zz<8 ) {
state.setText ("normal");
toneGenerator.startTone(ToneGenerator.TONE_DTMF_5);
new CountDownTimer(50, 500) {
public void onTick(long millisUntilFinished) { }
public void onFinish() {
toneGenerator.stopTone();
}}.start();
}
if (xx>-1 & xx<1 & zz>8 ) {
state.setText ("front");
toneGenerator.startTone(ToneGenerator.TONE_DTMF_2);
new CountDownTimer(50, 500) {
public void onTick(long millisUntilFinished) { }
public void onFinish() {
toneGenerator.stopTone();
}}.start();
X=(TextView)findViewById(R.id.X);
Y=(TextView)findViewById(R.id.Y);
Z=(TextView)findViewById(R.id.Z);
toneGenerator=新的toneGenerator(AudioManager.STREAM\u DTMF、toneGenerator.MAX\u VOLUME);
sel=新的SensorEventListener(){
精度更改时的公共无效(传感器,int精度){
}
SensorChanged上的公共无效(SensorEvent事件){
float[]值=event.values;
浮点x=值[0];
浮点xx=数学四舍五入(x);
浮动y=值[1];
浮点yy=数学圆(y);
浮动z=数值[2];
float zz=数学四舍五入(z);
X.setText(“X:+xx”);
Y.setText(“Y:+yy”);
Z.setText(“Z:+zz”);
如果(xx>-1&xx3&zz-1&xx8){
state.setText(“front”);
toneGenerator.StartOne(toneGenerator.TONE_DTMF_2);
新倒计时(50500){
公共void onTick(长毫秒直至完成){}
public void onFinish(){
toneGenerator.stopTone();
}}.start();
有什么建议吗?这有点困难,因为人类不能100%地站在身体的任何部位
你试过把手机放在桌子上看会发生什么吗?但是哪些值?加速计值还是指南针值?加速计的值…我从他们那里得到的值是在SensorChanged(事件)上…我将它们四舍五入以避免微小的变化,但传感器会不断更新值…即使值没有变化,它仍会播放音调。您使用哪些值?我认为使用指南针、定义“限制”和使用加速计来确定改变手机位置的速度会更容易。