手机喊话应用实现思路
手机要是动一下,就喊话“摇摇零线,摇摇零线”,是不是比较酷,
这里实现一下手机翻转一下,播放声音的效果,
通过sensor识别到手机的运动状况,然后播放音频,
public class MainActivity extends AppCompatActivity {MySensorEventListener sensorEventListener;private String tag = "test9";public class MySensorEventListener implements SensorEventListener {private float prevY;private float prevZ;@Overridepublic 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() {// 执行翻转后的操作}@Overridepublic 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();}}@Overrideprotected 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,直接播放声音,连续调用会出现同时播放的情况,反而有了回声的效果
相关文章:
手机喊话应用实现思路
手机要是动一下,就喊话“摇摇零线,摇摇零线”,是不是比较酷, 这里实现一下手机翻转一下,播放声音的效果, 通过sensor识别到手机的运动状况,然后播放音频, public class MainActivi…...
【ARM CoreLink 系列 3 -- CCI-550 控制器介绍 】
文章目录 CCI FamilyCCI-550 简介CCI-550 功能CCI-550 Interfaces Snoop filter 使用背景CCI-550 Snoop filter 上篇文章:ARM CoreLink 系列 2 – CCI-400 控制器简介 CCI Family CCI-550 简介 Arm CoreLink CCI-550 Cache Coherent Interconnect 扩展了 CoreLink…...
最长递增子序列 -- 动规
300. 最长递增子序列 注意「⼦序列」和「⼦串」的区别,⼦串⼀定是连续的,⽽⼦序列不⼀定是连续的。 class LengthOfLIS:"""300. 最长递增子序列https://leetcode.cn/problems/longest-increasing-subsequence/description/""&q…...
linux 进程管理命令
进程管理命令 查看进程命令 ps命令 显示系统上运行的进程列表 # 查看系统中所有正在运行的系统ps aux# 获取占用内存资源最多的10个进程,可以使用如下命令组合:ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head# 获取占用CPU资源最多的10个进程&am…...
第一章:计算机网络和因特网
什么是因特网 具体构成描述 互联网是一个世界范围的计算机网络,即一个互联了遍及世界数十亿计算机设备的网络,这些被连接的设备被称为主机或者端系统。端系统通过通信链路(communication link)和分组交换机(packet s…...
Android后退堆栈
修改代码 现在的ItemClick使得用户单击其中一个项目时就会跳转,现在要修改其使得在一个小屏幕设备上才会这样做,在一个大屏幕设备上运行用户选择一个训练项目时在右边的片段显示响应的信息。 希望片段处理后退的方式:假设用户在手机上运行这…...
网络原理(一)网络基础,包括IP ,网络相关的定义
网络基础,包括IP ,网络相关的定义 网络基础冲突域广播域DNSNATNAPT 网络基础 以下图片是书上的网图。 什么是IP地址? IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址。P地址是…...
Python语义分割与街景识别(2):环境搭建
前言 本文主要用于记录我在使用python做图像识别语义分割训练集的过程,由于在这一过程中踩坑排除BUG过多,因此也希望想做这部分内容的同学们可以少走些弯路。 本文是python语义分割与街景识别的第二篇,关于环境搭建的内容。这个部分是整个流…...
stm32(GD32,apm32),开优化后需要特别注意的地方
提到优化就不得不提及 volatile 使用场景 1:中断服务程序中修改的供其它程序检测的变量,需要加volatile; : 2:多任务环境下各任务间共享的标志,应该加volatile; 3:并行设备的硬件寄存器&#x…...
LLVM 与代码混淆技术
项目源码 什么是 LLVM LLVM 计划启动于2000年,开始由美国 UIUC 大学的 Chris Lattner 博士主持开展,后来 Apple 也加入其中。最初的目的是开发一套提供中间代码和编译基础设施的虚拟系统。 LLVM 命名最早源自于底层虚拟机(Low Level Virtu…...
R语言---使用runway进行机器学习模型性能的比较
R语言—使用runway进行机器学习模型性能的比较 #dataloadrm(list=ls())#librarylibrary(dcurves)library(gtsummary)library(tidyverse)library(mlr3verse)library(tidyverse)library(data.table)</...
C++斩题录|递归专题 | leetcode50. Pow(x, n)
个人主页:平行线也会相交 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 平行线也会相交 原创 收录于专栏【手撕算法系列专栏】【LeetCode】 🍔本专栏旨在提高自己算法能力的同时,记录一下自己的学习过程,希望…...
详解Redis之Lettuce实战
摘要 是 Redis 的一款高级 Java 客户端,已成为 SpringBoot 2.0 版本默认的 redis 客户端。Lettuce 后起之秀,不仅功能丰富,提供了很多新的功能特性,比如异步操作、响应式编程等,还解决了 Jedis 中线程不安全的问题。 …...
【3】单着色器文件读取
Basic.shader文件,可以发现顶点着色器和片段着色器是写在一个文件里的,这里我们将他们读取出来,而不是上一篇使用string的方式。 #shader vertex #version 330 corelayout(location 0) in vec4 position;void main() {gl_Position positio…...
祝贺埃文科技入选河南省工业企业数据安全技术支撑单位
近日,河南省工业信息安全产业发展联盟公布了河南省工业信息安全应急服务支撑单位和河南省工业企业数据安全技术支撑单位遴选结果,最终评选出19家单位作为第一届河南省工业信息安全应急服务支撑单位和河南省工业企业数据安全技术支撑单位。 埃文科技凭借自身技术优势…...
Chinese-LLaMA-Alpaca-2模型的测评
训练生成效果评测 Fastchat Chatbot Arena推出了模型在线对战平台,可浏览和评测模型回复质量。对战平台提供了胜率、Elo评分等评测指标,并且可以查看两两模型的对战胜率等结果。生成回复具有随机性,受解码超参、随机种子等因素影响ÿ…...
SLAM论文详解(5) — Bundle_Adjustment_LM(BALM)论文详解
目录 1 摘要 2 相关工作 3 BA公式和导数 A. 直接BA公式 B. 导数 C. 二阶近似 4 自适应体素化 5. 将BALM结合进LOAM 6. 实验 7. 算法应用场景解析 1 摘要 Bundle Adjustment是一种用于同时估计三维结构和传感器运动运动的优化算法。在视觉SLAM,三维重建等…...
C语言对单链表所有操作与一些相关面试题
目录 单链表的特性 单链表的所有操作 定义一个单链表 创建一个链表头 插入数据(头插法) 插入数据(尾插法) 查找节点 修改数据节点 删除节点 打印数据 销毁链表 翻转链表 打印链表长度 冒泡排序 快排 堆排 查找倒数第K个节点(双指针法) …...
高防服务器如何抵御大规模攻击
高防服务器如何抵御大规模攻击?高防服务器是一种专门设计用于抵御大规模攻击的服务器,具备出色的安全性和可靠性。在当今互联网时代,网络安全问题日益严重,DDOS攻击(分布式拒绝服务攻击)等高强度攻击已成为…...
Go 接口和多态
在讲解具体的接口之前,先看如下问题。 使用面向对象的方式,设计一个加减的计算器 代码如下: package mainimport "fmt"//父类,这是结构体 type Operate struct {num1 intnum2 int }//加法子类,这是结构体…...
VS2019集成libigl实战:从零到一的图形学开发环境搭建
1. 环境准备:从零搭建开发基础 第一次接触libigl和VS2019的组合时,我完全能理解那种手足无措的感觉。记得当时为了赶图形学课程作业,我和室友熬了三个通宵才把环境跑通。现在回头看,其实只要掌握几个关键步骤,整个过程…...
AI产品技能库实战:将专家经验注入Claude Code,打造你的虚拟产品专家
1. 项目概述:当AI助手遇上产品经理的“武林秘籍”如果你是一名产品经理、创业者,或者任何需要与产品打交道的人,最近可能已经感受到了AI助手带来的效率革命。无论是用Claude、ChatGPT还是其他工具来辅助写文档、分析数据,它们都像…...
2026 年 TanStack npm 供应链遭入侵:42 个包 84 版本受影响,多方面待解决问题待明确
总结2026 年 5 月 11 日 19:20 至 19:26 UTC 期间,攻击者通过结合“Pwn Request”模式的 pull_request_target、跨越分叉↔主库信任边界的 GitHub Actions 缓存投毒,以及从 GitHub Actions 运行器进程中提取 OIDC 令牌,在 42 个 tanstack/* n…...
Go-ldap-admin权限系统解析:基于Casbin的RBAC实现完整指南
Go-ldap-admin权限系统解析:基于Casbin的RBAC实现完整指南 【免费下载链接】go-ldap-admin 🌉 基于GoVue实现的openLDAP后台管理项目 项目地址: https://gitcode.com/gh_mirrors/go/go-ldap-admin Go-ldap-admin作为一款基于GoVue实现的现代化Ope…...
终极WebPShop插件:解锁Photoshop专业级WebP处理能力
终极WebPShop插件:解锁Photoshop专业级WebP处理能力 【免费下载链接】WebPShop Photoshop plug-in for opening and saving WebP images 项目地址: https://gitcode.com/gh_mirrors/we/WebPShop WebPShop是一款专为Adobe Photoshop设计的开源插件,…...
Selenium自动化测试常见的异常处理
在软件开发和测试领域,Selenium作为一种广泛使用的自动化测试工具,扮演着至关重要的角色。随着自动化测试的不断普及,如何在测试过程中有效捕获并处理异常,成为了每个测试工程师必须掌握的技能。本文旨在深入探讨Selenium异常处理的方法,通过丰富的案例和代码,帮助新手朋…...
管 Vibe Coding 项目,就像管公共厕所
本文整理自"AI炼金术"播客对徐文浩的访谈,探讨 AI 辅助编程(Vibe Coding)在组织落地后面临的治理挑战和应对策略。从"屎山三年一遇"到"屎山月月有"传统软件开发中,一个系统的"屎山化"通常…...
MCP协议实战:用mcp-custom-dev构建AI助手专属工具链
1. 项目概述:一个为开发者赋能的MCP自定义开发工具最近在和一些做AI应用开发的朋友聊天,发现大家普遍遇到一个痛点:虽然现在大语言模型(LLM)的API调用很方便,但想把它们真正“嵌入”到自己的业务流程里&…...
科研工作流构建指南:从文献管理到论文写作的全流程工具链实践
1. 项目概述与核心价值 如果你是一名在读的硕士、博士研究生,或者刚刚踏入科研院所、企业研发部门的新人研究员,那么“如何高效地开展研究”这个问题,大概率会持续困扰你很长一段时间。从浩如烟海的文献中精准定位方向,到设计严谨…...
ARM动态内存控制器与SDRAM地址映射技术详解
1. ARM动态内存控制器基础解析动态内存控制器(Dynamic Memory Controller,简称DMC)是现代嵌入式系统中管理SDRAM等易失性存储器的核心组件。作为处理器与存储设备之间的桥梁,DMC通过高效的地址映射技术实现两者间的数据通信。在AR…...
