美文网首页Android开发Android进阶之旅程序员
Android 传感器开发(仿知乎摇一摇反馈问题功能)

Android 传感器开发(仿知乎摇一摇反馈问题功能)

作者: Kevin是只兔子 | 来源:发表于2017-08-24 18:48 被阅读488次

最近用知乎的时候,偶然间发现摇一摇可以反馈问题,就想着做一个类似的功能,顺便梳理下关于sensor的知识。
先看看做出来的效果:

sample.gif

传感器中比较重要的几个类:
android.hardware.Sensor;
android.hardware.SensorEvent
android.hardware.SensorEventListener
okay,会这几个类就够用了,再记住一个回调方法,就能对付大多数的需求了

   @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }

    @Override
    public void onSensorChanged(SensorEvent event) {
     
    }

下面让我回顾下传感器的知识:

Android 中传感器有很多,当你打出[Sensor.]的时候就会看到下面这样

image.png

下面还有好多,如果想详细研究下所有传感器可以看看这里 直达链接

Android的三大类传感器

动作(Motion)传感器、环境(Environmental)传感器、位置(Position)传感器

1.动作传感器

加速(accelerometer)传感器、重力(gravity)传感器、陀螺仪(gyroscope)传感器、旋转向量(rotational vector )传感器

我们摇一摇功能主要用的就是动作传感器中的加速传感器,动作传感器里有一个很吊的图,只要动作传感器肯定涉及到坐标,下图形象的说明了这个坐标系。


在加速传感器中:实现我上方说的那个回调

 @Override
    public void onSensorChanged(SensorEvent event) {
         float[] values = event.values;
    }

其中这三个值就代表着X,Y,Z方向的值
values[0]: Acceleration minus Gx on the x-axis
values[1]: Acceleration minus Gy on the y-axis
values[2]: Acceleration minus Gz on the z-axis

2.环境传感器

湿度(barometer)传感器、光线(photometer)传感器、温度(thermometer)传感器

3.位置传感器

方向(orientation)传感器、磁力(magnetometer)传感器

如何实现摇一摇反馈功能

1.显示出手机中所有的传感器

先获取SensorManager对象

SensorManager sensorManager = (SensorManager).getSystemService(SENSOR_SERVICE);

列出来所有的传感器

 List<Sensor> sensors = sensorManager.getSensorList(Sensor.TYPE_ALL);

为了实现摇一摇功能,我写了一个叫shakeUtils工具类并且实现了SensorEventListener,这样我就需要实现下面两个方法

     /**
     * 传感器精度变化时回调
     */
 @Override
    public void onAccuracyChanged(Sensor sensor, int accuracy) {

    }
     /**
     * 传感器数据变化时回调
     */
    @Override
    public void onSensorChanged(SensorEvent event) {
        int sensorType = event.sensor.getType();
        float[] values = event.values;
        if (sensorType == Sensor.TYPE_ACCELEROMETER) {
            //这里可以调节摇一摇的灵敏度
            if ((Math.abs(values[0]) > 12 || Math.abs(values[1]) > 12 || Math.abs(values[2]) > 12)) {
                System.out.println("sensor value == " + " " + values[0] + " " + values[1] + " " + values[2]);
                if (null != mOnShakeListener) {
                    mOnShakeListener.onShake();
                }
            }
        }

        if (sensorType == Sensor.TYPE_AMBIENT_TEMPERATURE) {
            //todo
        }
    }

在主函数里主要这样调用shakeUtils就行了:

 shakeUtils = new ShakeUtils(this);
        shakeUtils.setOnShakeListener(new ShakeUtils.OnShakeListener() {
            @Override
            public void onShake() {
                Toast.makeText(MainActivity.this, "摇了摇", Toast.LENGTH_SHORT).show();
                confirmDialog.setOnConfirmListener(new ConfirmDialog.OnConfirmClickListener() {
                    @Override
                    public void onFeedBack() {
                        gotoFeedBackActivity();
                    }

                    @Override
                    public void onScreenShot() {
                        saveScreenShoot(rootView);

                    }
                });
                confirmDialog.show();

            }
        });
    }

有一点需要注意一下,我们SensorManager让我们能拿到设备的sensors,但是当你不用sensors的时候,当你的activity处于pause的时候,sensor不会自动关闭的,这就会导致你的电池几个小时就会将电耗尽。例子里有一个

最后还是附上源码,有需要的朋友可以拿去用,直达链接。开源让我们不断进步。

相关文章

  • Android 传感器开发(仿知乎摇一摇反馈问题功能)

    最近用知乎的时候,偶然间发现摇一摇可以反馈问题,就想着做一个类似的功能,顺便梳理下关于sensor的知识。先看看做...

  • 摇一摇:截屏、反馈(持续改进中...)

    一、背景:(知乎、BugTags) 1、知乎iOS APP上有个功能,摇一摇反馈。觉得挺好用,自己想实现一个开源的...

  • 如何让你的用户反馈更简单

    有用户问题我,什么时候推出像知乎 iOS 客户端那样面向普通用户的摇一摇反馈功能,其实通过 Bugtags 的提供...

  • 如何让你的用户反馈更简单

    有用户问题我,什么时候推出像知乎 iOS 客户端那样面向普通用户的摇一摇反馈功能,其实通过 Bugtags 的提供...

  • Android传感器开发(上)

    Android传感器简介 最近单位项目遇到了摇一摇功能,正好把以前的笔记翻出来,整合到一起,发个文章,来吧,互相伤...

  • html5之摇一摇

    描述 项目初始阶段调研了摇一摇功能,看了下设备传感器API,在此贴上调研结果,方便后续开发参考和绕坑。 实现原理 ...

  • 传感器实现仿微信摇一摇功能

    导语 如今Android手机中,硬件中内嵌了很多传感器(比如加速度传感器,重力传感器,陀螺仪传感器,方向传感器,压...

  • Android摇一摇功能

    利用加速度传感器,并注册监听器 通过回调中的x、y、z的值,做摇一摇动作的判定 结合自己的条件:如每2秒允许触发一...

  • Android,可以不再拷代码了吗?

    功能地址: 1,Android,一个函数实现支付宝 2,Android,一个函数实现摇一摇 3,Android,一...

  • Android 摇一摇功能实现

    现在有不少的应用开始实现了摇一摇功能,今天就把摇一摇的实现过程做一下记录。 用到知识点 1.加速度传感器2.补间动...

网友评论

    本文标题:Android 传感器开发(仿知乎摇一摇反馈问题功能)

    本文链接:https://www.haomeiwen.com/subject/lidjdxtx.html