在很久很久以前,手机是有红外功能的,后来随着蓝牙技术的成熟,红外逐渐被蓝牙取代,不再是标配了。

红外本身还是有些优点,比如操作简便,成本低。要想在手机上添加红外功能,就要外接一个转换模块。

现在市面上通过Headphone音频口外接MCU实现音频转红外的方案很多,拉卡拉是一个成功案例。

我们的目标是做一个具有学习功能的Android手机遥控器,通过音频转红外,控制大多家电设备。

1. 硬件设计

右声道输出稳频正弦波,为单片机提供电源

左声道作为tx数据线,phone到mcu

mic线作为rx数据线,mcu到phone

command线,接地

右声道电源供电存在问题,Android手机千差万别,手机里的音频codec模块也不尽相同,

D/A转换的放大倍数(增益)也不同,表现在有些人的手机上铃声大,有些铃声小。

这个值是在Android系统底层驱动里设置,一般无法用上层软件改变。

用galaxy nexus,nexus 4都由于放大倍数不够而导致供电不足,

而三星Galaxy S3就能提供足够的电压,一些山寨机的音量也足够大。

所以考虑更改硬件设计,加入钮扣电池,由硬件直接供电,这样比较稳妥。

2. 数据编码

自定义波形组织形式,这里提供两种频率,一种表示下一个bit不变,另一种表示下一个bit变化。

自定义一帧数据的组包形式,一般有包头,包尾,校验位和数据。

3. 核心代码

两个线程用来收发数据包

Runnable _outputGenerator = new Runnable() {

public void run() {

Thread.currentThread().setPriority(Thread.NORM_PRIORITY);

while (!_stop) {

updateOutputBuffer();

_audioTrack.write(_stereoBuffer, 0, _stereoBuffer.length);

}

}

};

Runnable _inputProcessor = new Runnable() {

public void run() {

Thread.currentThread().setPriority(Thread.MIN_PRIORITY);

while (!_stop) {

int shortsRead = _audioRecord.read(_recBuffer, 0, _recBuffer.length);

processInputBuffer(shortsRead);

}

}

};提供正弦波输出

double powerMutiplier = Math.PI * (double)_powerFrequency / (double)_sampleFrequency * 2;

_stereoBuffer[i*2+1] = (short) boundToShort(

Math.sin(powerMutiplier * _powerFrequencyPos++) * 32760);

Android万能遥控菜单选择添加,Android万能遥控器小应用相关推荐

  1. Android万能遥控菜单选择添加,将小米米家万能遥控器添加到Home Assistant

    以下方法经本人验证通过,环境如下: Home Assistant 0.91.4 米家万能遥控器固件版本:1.3.1_0014 MuMu安卓模拟器:V1.1.0.2 米家APP安卓版:V5.4.54 第 ...

  2. android 仿支付宝菜单_这个 Android 几乎放弃的设计,iOS 要用上了?

    iOS 和 Android,两个移动时代的操作系统在历经十多年发展后,成熟度之高已经很难再找出大的短板. 如今,这两个系统相似的部分,大概比它们不相似的地方还要多得多.从早期的下拉通知栏,再到现在的侧 ...

  3. android自定义侧滑菜单代码,原生Android 侧滑菜单实践(部分)

    此为第一个制作侧滑菜单的实践 . 此部分仅仅为部分实践: 仅缺menu的字符串布局,以及需要修改的MainActivity.java文件,也是需要主要修改的地方. 从使用MD设计-进行侧滑菜单的制作( ...

  4. android 动态修改菜单,如何在Android的“选项”菜单上更改MenuItem?

    如何在Android的"选项"菜单上更改MenuItem? 我的Activity上有一个选项菜单,带有mymenu.xml"开始". 选择此3000128611 ...

  5. android 层进菜单,iOS和Android规范解析——底部浮层(下)

    上次的文章(点击查看),介绍了Android MD设计规范中对于"底板(Bottom Sheets)"的定义,这次的文章来跟大家介绍一下iOS设计规范中的底部浮层. 在iOS规范中 ...

  6. android 弹出菜单环形,『Android自定义View实战』实现一个小清新的弹出式圆环菜单...

    前言 Android表现快捷菜单的形式有很多种,比如使用PopupWindow弹出来的小弹窗,类似QQ的侧拉功能菜单,以及之前讲过的弧形菜单( Android 自定义弧形旋转菜单栏--卫星菜单),这次 ...

  7. 如何在Android的主屏幕上添加设置快捷方式小部件

    You probably have some settings that you access on a regular basis. Instead of going into the Settin ...

  8. android下拉菜单——选择星座

    [img]http://dl.iteye.com/upload/attachment/0084/4434/5fd89112-ec72-3b36-835e-589293b44648.png[/img] ...

  9. Android 万能遥控 开源,快速实现WIFI红外遥控器(ESP8266 SoC模式)

    本帖最后由 黑洞 于 2017-8-7 22:07 编辑 目前很多家电带有红外遥控,如:电视.空调.风扇等等.有一个用手机控制的红外线遥控器的话现有的家电变成智能家电了,比如到家之前手机远程开空调等. ...

最新文章

  1. ASP.NET MVC – 模型简介
  2. ModuleNotFoundError: No module named ‘cx_Oracle‘
  3. Windows10 + VS2015 (Win SDK10)环境下的64位 VTK编译小结
  4. android 游戏现状,年终总结:Android十款画面最强3D游戏
  5. NetDevOps — netmiko
  6. C语言 输入一个正整数n,再输入n个字符,如果是小写字符就将其转换为大写字符,如果是大写字符就 转换为小写字符
  7. Android Widget 中ListView加载网络图片
  8. 4G通信模块在ARM平台下的应用
  9. [剑指offer]面试题第[44]题[JAVA][数字序列中某一位的数字][找规律]
  10. 国科大prml12-半监督学习
  11. 用c语言编写小于n的所有素数,关于求N以内素数的一点小问题(N小于一亿)
  12. Java中Int转byte分析
  13. hive 修改cluster by算法_spark、hive中窗口函数实现原理复盘
  14. html页面调用高德地图,html前端使用高德地图入门教程,并在地图上标记位置-Go语言中文社区...
  15. Win10自带播放器怎么倍速播放视频
  16. 将CF卡移动磁盘标识改为本地磁盘标识的软件
  17. python+OpenCv笔记(三):修改像素点、感兴趣区域、获取图像属性
  18. Sumatra PDF
  19. 2021最新爬取百度关键词时出现,百度安全验证,解决方法
  20. 码率,帧率,分辨率_详解

热门文章

  1. php gd gif动画,我可以检测使用PHP和GD的animationGIF?
  2. 车间生产能耗管控方案_如何给生产车间降温 环保空调的这些方案一定能帮到你...
  3. 359B. Permutation
  4. stm32 485和232可以用同一个串口吗_STM32的复用时钟何时开启?
  5. 用鼠标选择模型表面两点并连线
  6. Ubuntu apt-get 卸载命令
  7. Digest authentication
  8. mysql严格模式 报错_mysql严格模式
  9. arduinowifi.send怎么获取响应_ChatterBot代码解读-获取对话
  10. linux编译器项目,编译器架构 LLVM