kotlin

Does Android have keyboard listener to detect which key is pressed?

点点圈 提交于 2020-08-17 11:09:31
问题 I want to recognize which key on the keyboard is pressed in Android. I have searched a lot but I haven't reached to correct answer yet. Some posts in StackOverflow that I have seen them but they don't answer me are here: How to listen the keypress in the soft keyboard? Android - Get keyboard key press how to find which key is pressed in android? 回答1: You can use the TextWatcher api provided by Android. Here a code snippet from one of the answer: field1.addTextChangedListener(new TextWatcher()

如何使用华为机器学习服务和Kotlin实现语音合成

跟風遠走 提交于 2020-08-17 10:36:53
1. 引言   你曾遇到过这种情况吗?一本小说太长,要花很长时间阅读,但如果有app能自动为你阅读,就会省时很多。因此,将文本转换成语音的工具应运而生。华为机器学习服务(HUAWEI ML Kit)具备语音合成(Text To Speech, TTS)功能,能让app快速实现从文本到语音的转换。TTS可以将文本转换成人声。这也可以通过默认方法实现,但这些方法不能提供自然或真实的声音。TTS服务全球通用,利用深度神经网络对文本进行处理,从而创造出自然的声音,同时也支持多种音色,以增强人声效果。TTS使用了云服务,字符数限制在500个以内,并使用UTF-8编码。   目前支持的音色如下: 英文-男声 英文-女声 中文-男声 中文-女声 英文+中文-男声 英文+中文-女声 2. 结果展示   视频展示了使用该服务后得到的结果。   视频链接: https://developer.huawei.com/consumer/cn/forum/topicview?fid=18&tid=0201314285827100291 3.集成步骤    步骤1: 在Android Studio中新建项目。    步骤2: 在app.gradle文件中添加依赖。   implementation 'com.huawei.hms:ml-computer-voice-tts:1.0.4.300'    步骤3:

Use microphone in webrtc & media recorder simultaneously in Android?

北战南征 提交于 2020-08-17 10:09:23
问题 I am using webrtc for video calling in android. I am simultaneously screen recording after call is connected in sender end. I am getting this error log in sender end. Receiver end voice is not hearing when screen recording is started using MediaRecorder. I think webrtc is not streaming audio to receiver end when media recorder is started using microphone. Error AudioRecord: start() status -38 2020-06-25 13:37:18.948 3276-5257/com.obs.booking E/WebRtcAudioRecord: WebRtcAudioRecord: Start

Use microphone in webrtc & media recorder simultaneously in Android?

元气小坏坏 提交于 2020-08-17 10:06:33
问题 I am using webrtc for video calling in android. I am simultaneously screen recording after call is connected in sender end. I am getting this error log in sender end. Receiver end voice is not hearing when screen recording is started using MediaRecorder. I think webrtc is not streaming audio to receiver end when media recorder is started using microphone. Error AudioRecord: start() status -38 2020-06-25 13:37:18.948 3276-5257/com.obs.booking E/WebRtcAudioRecord: WebRtcAudioRecord: Start

Use microphone in webrtc & media recorder simultaneously in Android?

丶灬走出姿态 提交于 2020-08-17 10:06:31
问题 I am using webrtc for video calling in android. I am simultaneously screen recording after call is connected in sender end. I am getting this error log in sender end. Receiver end voice is not hearing when screen recording is started using MediaRecorder. I think webrtc is not streaming audio to receiver end when media recorder is started using microphone. Error AudioRecord: start() status -38 2020-06-25 13:37:18.948 3276-5257/com.obs.booking E/WebRtcAudioRecord: WebRtcAudioRecord: Start

放弃dagger?Anrdoi依赖注入框架koin

Deadly 提交于 2020-08-17 03:37:54
Koin 是什么 Koin 是为 Kotlin 开发者提供的一个实用型轻量级依赖注入框架,采用纯 Kotlin 语言编写而成,仅使用功能解析,无代理、无代码生成、无反射。 官网地址 优势 依赖注入好处 增加开发效率、省去重复的简单体力劳动 首先new一个实例的过程是一个重复的简单体力劳动,依赖注入可以把new一个实例的工作做了,因此我们把主要精力集中在关键业务上、同时也能增加开发效率上。 代码更具可读性 省去写单例的方法 解耦 假如不用依赖注入的话,一个类的new代码是非常可能充斥在app的多个类中的,假如该类的构造函数发生变化,那这些涉及到的类都得进行修改。 和dagger相比 编译生成的代码少 编译时间少 上手简单 使用方法 1.添加依赖 // Add Jcenter to your repositories if needed repositories { jcenter() } dependencies { // Koin for Android compile "org.koin:koin-android:$koin_version" } 2.比如创建一个HelloRepository来提供一些数据: interface HelloRepository { fun giveHello(): String } class HelloRepositoryImpl() :

Spring Boot 2.x 快速集成Kafka

不羁的心 提交于 2020-08-17 00:17:59
1 Kafka Kafka是一个开源分布式的流处理平台,一种高吞吐量的分布式发布订阅消息系统,它可以处理消费者在网站中的所有动作流数据。Kafka由Scala和Java编写,2012年成为Apache基金会下顶级项目。 2 Kafka优点 低延迟:Kafka支持低延迟消息传递,速度极快,能达到200w写/秒 高性能:Kafka对于消息的分布,订阅都有高吞吐量。即使存储了TB级的信息,依然能够保证稳定的性能 可靠性:Kafka是分布式,分区,复制和容错的,保证零停机和零数据丢失 可扩展:用户可以从但个代理Broker开始作POC,然后慢慢扩展到由三个Broker组成的小型开发集群,接着扩展到数十个甚至数百个Broker集群进入生产阶段,可以在集群联机时进行扩展,而不会影响整个系统的可用性 多个生产者:无论这些客户使用相同Topic还是多个Topic,Kafka都能无缝处理多个生产者,使得系统可以非常容易聚合来自许多前端系统的数据并使其保持一致 多个消费者:Kafka具有多个消费者设计,可以读取任何但个消息流而不会相互干扰。多个Kafka消费者可以组成一个消费组进行操作并共享消息流,从而确保每一条消息只被整个消费组处理一次 基于磁盘的保留:Kafka使用分布式提交日志,消息能够快速持久化到磁盘上。消息持久化意味着如果消费者落后

Kotlin 作为 Android 开发语言相比传统 Java 有什么优势?

自作多情 提交于 2020-08-17 00:04:05
Kotlin 语言相对 Java 有很多优势,比如官网介绍的简洁、安全,例子见 Kotlin 中文站 首页,部分示例解析见下文。Kotlin 具有现代(也有称下一代的)静态编程语言的很多特点,如类型推断、多范式支持、可空性表达、扩展函数、DSL 支持等。另外对于安卓开发还提供了 Kotlin 安卓扩展和 Anko 库,参见 Kotlin 用于 Android 。 作者:灰蓝天际 链接: https://www.zhihu.com/question/37288009/answer/180025936 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 来源: oschina 链接: https://my.oschina.net/u/3855429/blog/4355726

如何解决代码中if…else 过多的问题

谁都会走 提交于 2020-08-16 17:34:33
前言 if...else 是所有高级编程语言都有的必备功能。但现实中的代码往往存在着过多的 if...else。虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的。今天我们就来看看如何“干掉”代码中的 if...else,还代码以清爽。 问题一:if...else 过多 问题表现 if...else 过多的代码可以抽象为下面这段代码。其中只列出5个逻辑分支,但实际工作中,能见到一个方法包含10个、20个甚至更多的逻辑分支的情况。另外,if...else 过多通常会伴随着另两个问题:逻辑表达式复杂和 if...else 嵌套过深。对于后两个问题,本文将在下面两节介绍。本节先来讨论 if...else 过多的情况。 1 if (condition1) { 2 3 } else if (condition2) { 4 5 } else if (condition3) { 6 7 } else if (condition4) { 8 9 } else { 10 11 } 通常,if...else 过多的方法,通常可读性和可扩展性都不好

【Kotlin学习之旅】Kotlin的Elvis运算

[亡魂溺海] 提交于 2020-08-16 09:11:04
Elvis运算是一个小技巧,其实就是if else 的简化写法。 一、示例程序 下面来一个示例对比代码,如下所示: fun elvisTest ( ) { var b : String ? = "oyp" var len1 = if ( b != null ) b . length else - 1 //输出3 println ( len1 ) b = null var len2 = b ? . length ?: - 1 // 输出 -1 println ( len2 ) } len1 使用的是传统的if分支进行判断,当b不为null的时候返回b.length,否则返回-1 二、Elvis运算符 2.1 Elvis介绍 len2 使用的是 ?: 运算符,该运算符就是 Elvis , 它的含义是,如果 ?: 左边的表达式不为null,则返回左边表达式的值,否则返回 ?: 右边表达式的值。 由此可见, ?: 其实就是 if分支的简化写法。 2.2 Elvis分析 Elvis 操作符与安全调用符 ?. 配合使用时,一定要考虑到安全调用符前后是否为空,否则就会带来流程控制混乱的问题。对于刚才例子中的表达式: val v = a ? . b ?: c 因为 ?. 的优先级比 ?: 高, 首先计算 a?.b,按照安全调用符的规则,如果 a == null 则结果为 null,执行 c,