所以,我做了一个火把应用...正常火炬功能完全正常,没有任何问题。

下面介绍以下功能,可能会导致可能的ANR的说,我想通过闪烁的闪光灯发出SOS信息(莫尔斯电码)。 (其111-000-111),所以它开 - 开 - 开 - 关 - 关 - 和重复。

(慢慢读)我“开”是一小会儿,然后微微一晃,“开”再次 - 这是区分两个连续“开” S ......这就是我得到三个不同的闪烁。

麻烦的是,对于延时,我把线程睡眠。(这种方法的工作最适合我)

下面是我的示例功能,它闪烁出SOS:(我有一个SOS按钮,单独)

public void sos(View v) {

String myString = "111000111";

for (int x = 0; x < myString.length(); x++) {

if (myString.charAt(x) == '1') {

p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

c.setParameters(p);

c.startPreview();

flag = true;

} else {

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

flag = false;

}

try {

Thread.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

try {

Thread.sleep(300);

} catch (InterruptedException e) {

e.printStackTrace();

}

}

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}

上述闪烁出SOS一次。 不过,虽然这闪烁,闪烁是怎么回事,我的应用程序被冻结了。 闪烁SOS是完美的。 但它并没有任何按钮点击,甚至后退按钮响应中途停止。

我认为这是因为线程(UI)正在睡觉,因此它并不关心用户正在做)......但肯定点击注册,如果按照到Android如果没有后在规定的看着的时间(我想了几秒钟)期...该应用程序进入ANR。

所以,我需要与我定义的间隔短暂的停顿(正如上面我用300毫秒)。 但我也想知道如何让应用同时响应说按钮点击或后退按钮按下,以避免ANR的,并给予用户关闭在任何时候闪烁的能力。

这个怎么做 ?

编辑 Waza_Be的解决方案:

好吧,这里是根据Waza_Be我修改的功能。 这个问题似乎是,它等待300毫秒(在我的情况)......但我有几个postDelay功能 - 因此,我认为它实际上是排队的所有功能于一体,与300毫秒的等待期是有些重叠。 这一时期结束后,所有的代码运行起来一次,使得它毫无意义。

当我尝试这样做,闪光灯闪烁而迅速,不与微妙的停顿和闪烁效果我想要的。

public void sos(View v) {

String myString = "111000111";

Handler handler = new Handler();

for (int x = 0; x < myString.length(); x++) {

if (myString.charAt(x) == '1') {

handler.postDelayed(new Runnable() {

public void run() {

p.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);

c.setParameters(p);

c.startPreview();

}

}, 300);

} else {

handler.postDelayed(new Runnable() {

public void run() {

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}, 300);

}

handler.postDelayed(new Runnable() {

public void run() {

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}, 300);

}

p.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);

c.setParameters(p);

}

}

我需要单独暂停。 后或每TURN_ON或TURN_OFF为Flash之前说。 在每一个循环中,应该单独地等待在处理程序中运行每一段代码()。

android光传感实现摩斯密码,根据莫尔斯代码 - Android的闪烁闪光。 如何避免ANR次数由于睡觉? (火炬APP)...相关推荐

  1. android光传感实现摩斯密码,一晚掌握摩尔斯电码的快速记忆法

    在业余无线电的通信过程中,摩尔斯电码由于其神秘性引起了广大无线电业余爱好者的无限兴趣.然而,大家往往一眼看到摩尔斯电码编码规则,觉得很复杂难以记忆,索性放弃. 摩尔斯数字电码 摩尔斯数字电码 先从数字 ...

  2. android开发实例之minitwitter登录界面 代码,Android实例miniTwitter登录界面

    先上效果图: 布局分析:分成三个部分,该Activity是一个无标题的,设置无标题需要在setContentView之前设置,否则会报错: requestWindowFeature(Window.FE ...

  3. android开发实例之minitwitter登录界面 代码,Android Twitter登录按钮无法正常工作“无法完成操作”...

    我使用Twitter sdk这个Android应用程序 . 可以按下twitter按钮,但在尝试连接到Twitter后,我得到一个简短的Toast"无法完成动作" 我的代码: pu ...

  4. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-2.service)...

    第2章 Services Service是一个长期运行在后台,并不提供用户界面的应用程序组件.其他应用程序的组件可以启动一个service,并且即使用户切换到另一个应用程序,service也可以在后台 ...

  5. 从零开始--系统深入学习android(实践-让我们开始写代码-Android框架学习-7.App Widgets)...

    第7章 App Widgets App Widgets是一个应用程序的微型视图,可以嵌入到其他应用程序(如主屏幕)并且能够定期更新.你可以发布一个应用程序的App Widget,而这些视图称为窗口的用 ...

  6. [Android] Android MVP 架构下 最简单的 代码实现

    Android  MVP 架构下  最简单的 代码实现 首先看图: 上图是MVP,下图是MVC MVP和MVC的区别,在于以前的View层不仅要和model层交互,还要和controller层交互.而 ...

  7. qtdesigner怎么实现菜单栏跳转_人人都可写代码-Android零基础编程-app 入口菜单栏实操08...

    欢迎来到人人都可写代码,大家好,我是杨晓华,今天我们的课程内容是项目实操,以智者精选项目为例,编写一个Android app的入口关联菜单栏逻辑. 这是要实现的菜单栏组件展示效果,下面就是教大家如何制 ...

  8. Android日志系统分析之日志设备驱动程序代码阅读

    android日志系统中定义了设备驱动的实现代码位于kernel/common/drivers/staging/android/logger.h和kernel/common/drivers/stagi ...

  9. android 电量控件,Android实现显示电量的控件代码

    下面介绍了Android实现显示电量的控件代码,具体代码如下: 1.目录结构,本人是使用安卓死丢丢. 2.运行界面,输入框中输入数值,点击刷新,会再电池中显示出相应的电量 3.绘制自定义电池控件,首先 ...

最新文章

  1. 可能是东半球最好的 Curl 学习指南,强烈建议收藏!
  2. 【转】第一类Stirling数和第二类Stirling
  3. Java、Android静态代理与动态代理
  4. win10 + mac双系统安装常用工具
  5. win10安装misql8_Windows10安装MySQL 8.0.11
  6. 持续交付 devops_使用DevOps开始加速软件交付
  7. android uri parcel,Android ParcelFileDescriptor实现进程间通信
  8. QML 圆角进度条实现 圆角剪切
  9. 高清3D人体解剖图谱
  10. 游戏服务器开发都要学什么
  11. oracle gis费用,MapGIS 10 for Desktop 标准版_Oracle
  12. C语言 递归实现指数函数
  13. dbt(data build tool) is an open source data transformation, and using Jinji templating
  14. OV7725摄像头之OV7725芯片
  15. MFC 解压7z文件
  16. ESP8266+电能计量芯片
  17. Latex中多个表格的引用
  18. CSS通用样式2——Flex布局
  19. 2021-09-23 什么是图灵测试
  20. RIP路由环问题处理

热门文章

  1. web.xml文件头出错
  2. SQLite的使用(二):数据增删改查
  3. volatile关键字及编译器指令乱序总结
  4. 类型,对象,线程栈和托管堆在运行时的相互关系(一)。
  5. 博文视点大讲堂36期——让Oracle跑得更快 成功举办
  6. 关于宿主机没有Vmware虚拟网卡的问题分析与解决
  7. 牛客网--牛牛找工作
  8. 如何判断是linux/windows库,module或程序debug还是release(转)
  9. java 日期处理工具类_Java日期处理工具类DateUtils详解
  10. python爬去朋友圈_利用Python爬取朋友圈数据,爬到你开始怀疑人生