手机喊话应用实现思路

2023-11-14

手机要是动一下,就喊话“摇摇零线,摇摇零线”,是不是比较酷,

这里实现一下手机翻转一下,播放声音的效果,

通过sensor识别到手机的运动状况,然后播放音频,


public class MainActivity extends AppCompatActivity {
    MySensorEventListener sensorEventListener;
    private String tag = "test9";

    public class MySensorEventListener implements SensorEventListener {

        private float prevY;
        private float prevZ;

        @Override
        public void onSensorChanged(SensorEvent event) {
            float[] values = event.values;
            int type = event.sensor.getType();
            if (type == Sensor.TYPE_ACCELEROMETER) {
                float x = values[0];
                float y = values[1];
                float z = values[2];
                if (Float.compare(prevY, y) != 0 && Float.compare(prevZ, z) != 0) {
                    if (y > prevY && z > prevZ) {
                        // 顺时针翻转
                        Log.i(tag, "1====");
                        onFlip();
                    } else if (y < prevY && z < prevZ) {
                        // 逆时针翻转
                        Log.i(tag, "2====");
                        onFlip();
                        Play();
                    }
                }
            } else if (type == Sensor.TYPE_GYROSCOPE) {
                // 使用陀螺仪传感器的数据识别翻转,具体算法需要自己实现
            }
        }

        private void onFlip() {
            // 执行翻转后的操作
        }

        @Override
        public void onAccuracyChanged(Sensor sensor, int accuracy) {
            // Do nothing
        }
    }

    void Play()  {
        MediaPlayer mediaPlayer = MediaPlayer.create(this, R.raw.hello);
  //      MediaPlayer mediaPlayer = new MediaPlayer();
        try {
            Log.i(tag, "play =========== ");
  //          mediaPlayer.setDataSource("/sdcard/Recordings/910.m4a");
            mediaPlayer.start();
        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        sensorEventListener = new MySensorEventListener();
        SensorManager sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE);
        sensorManager.registerListener(sensorEventListener,
                sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_UI);


    }
}

初步的一个实现,没有使用service,直接播放声音,连续调用会出现同时播放的情况,反而有了回声的效果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

手机喊话应用实现思路 的相关文章

随机推荐

  • 山东大学项目实训开发日志——基于vue+springboot的医院耗材管理系统(4)

    经过了几周的努力 前端的页面设计 由我负责的部分 已经基本完成 按照之前的规划 分为首页 订单管理 库存管理 入库管理 出库管理 退货管理 移库管理 报表管理 资质管理 系统管理10个部分 每部分都有专门的页面和操作 在此贴一个移库管理中的
  • 【GPT-4 & ChatGPT】第 2 章 :深入了解GPT-4 和 ChatGPT API

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • CARLA仿真软件(一)【软件简介及Windows下的安装】

    CARLA基本介绍 CARLA是一个开源的自动驾驶模拟器 它是从头开始构建的 用作模块化和灵活的API 以解决自动驾驶问题中涉及的一系列任务 CARLA的主要目标之一是帮助自动驾驶研发民主化 它是一种易于用户使用和定制的工具 为此 模拟器必
  • 使用阿里云OSS对象存储搭建个人图床

    原文链接 使用阿里云OSS对象存储搭建个人图床 文章目录 一 购买阿里云OSS对象存储 二 创建Bucket 三 获取AccessKey等相关信息 一 购买阿里云OSS对象存储 1 登录阿里云后 搜索OSS 然后点击 立即购买 2 阿里云O
  • IOU、GIOU、DIOU、CIOU、EIOU、Focal EIOU、alpha IOU损失函数分析及Pytorch实现

    IOU Loss 算法作用 Iou的就是交并比 预测框和真实框相交区域面积和合并区域面积的比值 计算公式如下 Iou作为损失函数的时候只要将其对数值输出就好了 def Iou loss preds bbox eps 1e 6 reducti
  • Qt之QProgressBar

    简述 QProgressBar部件提供了一个水平或垂直进度条 进度条用于给用户操作一个进度指示 并向它们说明应用程序仍在运行 简述 详细描述 读取方向 进度方向 效果 源码 文本显示 效果 源码 繁忙指示 效果 源码 QSS 详细描述 可以
  • C++ STL使用

    文章目录 C STL使用 一 什么是STL 二 STL内容介绍 2 1 STL中六大组件 2 2 容器 2 3 迭代器 2 4 算法 2 4 1 算法分类 2 5 仿函数 2 5 1 仿函数 functor 在编程语言中的应用 2 5 2
  • QT5生成.exe文件时,出现缺少QT5core.dll文件解决方法

    在 http qt project org downloads 下载Qt SDK安装需要Qt版本 在QtCreator下 程序可以正常运行 但是当关闭QtCreator后 在DeBug目录下再运行相应的 exe程序时 会提示缺少Qt5Cor
  • 管理工作中的“七种浪费”

    管理工作中的 七种浪费 丰田生产方式中所归纳的 七种 浪费 主要发生在生产现场 但是产生这些浪费的深层次的原因是什么 如果仅仅关注现场存在的问题 而不解决被现象所掩盖的本质问题 无疑是舍本逐末 即使表面上轰轰烈烈 但实际效果也很有限 为了能
  • 刷脸支付在支付前后商家可以做无限延展

    人脸识别的技术传输则需要很强大的流量支撑 才能将人脸复杂的各类生物体特征数据传输到中控电脑里 而5G的超快速度 解决了这一棘手的问题 使得将刷脸支付应用到移动载体上 得到了实现 刷脸支付更大的想象空间在于它的引流能力和交互营销 刷脸支付是一
  • 墙内搭建Android开发环境

    本文首发在我的个人博客 https jlice top p 6s1gi 欢迎大家前去参观 么么哒 提到搭建Android开发环境 一般给出的方案是在Eclipse输入 https dl ssl google com android ecli
  • QT多线程基础

    文章目录 简介 相关名词 QT 运行方式 基础使用方法 void QObject moveToThread QThread targetThread 退出线程过程 wait 等待子线程的结束 实例 QT锁QMutex QMutexLocke
  • 对于TIS,TRP的天线有源测试参数分析

    TRP Total Radiated Power 全向辐射功率 TIS Total Isotropic Sensitivity 全向 辐射 灵敏度 通过对整个辐射球面的发射功率进行积分并取平均得到 它反映手机整机的发射功率情况 跟手机在传导
  • 【100天精通python】Day40:GUI界面编程_PyQt 从入门到实战(完)_网络编程与打包发布

    目录 8 网络编程 8 1 使用PyQt 网络模块进行网络通信 服务器端示例 客户端示例 8 2 处理网络请求和响应 9 打包和发布 9 1 创建可执行文件或安装程序 9 2 解决依赖问题 9 3 发布 PyQt 应用到不同平台 9 3 1
  • http://localhost:8050无法访问Splash主页

    早上起来 发现splash服务已经起来了 http localhost 8050怎么也打不开 后来各种百度 发现有篇文章里说 原因是服务的IP为192 168 99 100 回去看了一把 果然是 也可以用命令docker machine i
  • iPhone - 如何找到最顶层的视图控制器

    UIViewController topViewController return self topViewControllerWithRootViewController UIApplication sharedApplication k
  • org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean

    当遇到这个错误的时候 可能是因为 spring注解的时候两个bean的注解名相同或冲突 如果有其他的问题 可发表评论一同讨论 谢谢
  • 已解决WARNING: There was an error checking the latest version of pip.

    成功解决 pip提示升级 WARNING There was an error checking the latest version of pip 文章目录 报错问题 报错翻译 报错原因 解决方法 千人全栈VIP答疑群联系博主帮忙解决报错
  • Base64是什么、应用场景、开源库(libb64)使用

    1 Base64是什么 1 1 概念 Base64是一种 将二进制转为64个可打印字符 的编码方式 Base64是网络上最常见的用于传输8Bit字节码的编码方式 一种基于64个可打印字符来表示二进制数据的方法 Base64编码原理是从二进制
  • 手机喊话应用实现思路

    手机要是动一下 就喊话 摇摇零线 摇摇零线 是不是比较酷 这里实现一下手机翻转一下 播放声音的效果 通过sensor识别到手机的运动状况 然后播放音频 public class MainActivity extends AppCompatA