当前位置: 首页 > news >正文

吉林省舒兰市建设银行网站陈村网站开发

吉林省舒兰市建设银行网站,陈村网站开发,用WordPress做网站入门课,wordpress 媒体库 不显示Android 使用 ToneGenerator 实现按键提示音 外部链接简单效果功能简单实现工具类线程池工具主页面简单实现 外部链接 DTMF原理 处理音频输出的变化 ToneGenerator API 简单效果 功能简单实现 工具类 package com.xg.practise.utilimport android.app.Activity import and… Android 使用 ToneGenerator 实现按键提示音 外部链接简单效果功能简单实现工具类线程池工具主页面简单实现 外部链接 DTMF原理 处理音频输出的变化 ToneGenerator API 简单效果 功能简单实现 工具类 package com.xg.practise.utilimport android.app.Activity import android.content.Context import android.media.AudioManager import android.media.ToneGenerator import android.provider.Settings//Tone 相关 const val DTMF_DURATION_MS 120 // 声音的播放时间,毫秒class ToneHelper() {// 监视器对象锁private val mToneGeneratorLock Any()// 声音产生器private var mToneGenerator: ToneGenerator? null// 系统参数“按键操作音”标志位private var mDTMFToneEnabled falsefun initToneGenerator(context: Context) {runOnBackgroundThread(Runnable {//按键声音播放设置及初始化try {// 获取系统参数“按键操作音”是否开启mDTMFToneEnabled Settings.System.getInt(context.contentResolver,Settings.System.DTMF_TONE_WHEN_DIALING, 1) 1synchronized(mToneGeneratorLock) {if (mDTMFToneEnabled mToneGenerator null) {mToneGenerator ToneGenerator(AudioManager.STREAM_DTMF, 100) // 设置声音的大小if (context is Activity) {context.volumeControlStream AudioManager.STREAM_DTMF}}}} catch (e: Exception) {e.printStackTrace()mDTMFToneEnabled falsemToneGenerator null}})}fun playTone(context: Context, dtmf: Int) {if (dtmf 0) {return}if (!mDTMFToneEnabled) {return}val audioManager context.applicationContext.getSystemService(Context.AUDIO_SERVICE) as AudioManagerval ringerMode audioManager.ringerModeif ((ringerMode AudioManager.RINGER_MODE_SILENT|| ringerMode AudioManager.RINGER_MODE_VIBRATE)) {// 静音或者震动时不发出声音return}synchronized(mToneGeneratorLock) {mToneGenerator?.startTone(dtmf, DTMF_DURATION_MS) //发出声音}}fun release() {try {mDTMFToneEnabled falsemToneGenerator?.stopTone()mToneGenerator?.release()mToneGenerator null} catch (e: Exception) {e.printStackTrace()}} }线程池工具 package com.xg.practise.utilimport java.util.concurrent.Executors import java.util.concurrent.ScheduledExecutorService import java.util.concurrent.TimeUnitval executor: ScheduledExecutorService Executors.newScheduledThreadPool(10)fun runOnBackgroundThread(runnable: Runnable?) {executor.execute(runnable) }fun runOnBackgroundThread(runnable: Runnable?, delay: Long) {executor.schedule(runnable, delay, TimeUnit.MILLISECONDS) }主页面简单实现 package com.xg.practiseimport android.media.ToneGenerator import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.appcompat.app.AppCompatActivity import androidx.databinding.DataBindingUtil import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.xg.practise.databinding.ActivityToneBinding import com.xg.practise.util.ToneHelperclass ToneActivity : AppCompatActivity() {private var mToneHelper: ToneHelper? nulloverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)var dataBinding DataBindingUtil.setContentViewActivityToneBinding(this, R.layout.activity_tone);setContentView(dataBinding.root)mToneHelper ToneHelper()mToneHelper?.initToneGenerator(thisToneActivity)var array arrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9, *, 0, #)dataBinding.recycler.layoutManager GridLayoutManager(thisToneActivity, 3)dataBinding.recycler.adapter object : RecyclerView.AdapterMyViewHolder() {override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {return MyViewHolder(LayoutInflater.from(parent.context).inflate(android.R.layout.simple_list_item_1, parent, false))}override fun getItemCount(): Int {return array.size}override fun onBindViewHolder(holder: MyViewHolder, position: Int) {holder.text.text array[position]holder.text.setOnClickListener {mToneHelper?.playTone(holder.text.context,convertToneDtmf(array[position]))}}}}fun convertToneDtmf(key: String?): Int {return when (key) {0 - ToneGenerator.TONE_DTMF_01 - ToneGenerator.TONE_DTMF_12 - ToneGenerator.TONE_DTMF_23 - ToneGenerator.TONE_DTMF_34 - ToneGenerator.TONE_DTMF_45 - ToneGenerator.TONE_DTMF_56 - ToneGenerator.TONE_DTMF_67 - ToneGenerator.TONE_DTMF_78 - ToneGenerator.TONE_DTMF_89 - ToneGenerator.TONE_DTMF_9* - ToneGenerator.TONE_DTMF_S# - ToneGenerator.TONE_DTMF_Pelse - -1}}override fun onDestroy() {super.onDestroy()mToneHelper?.release()}class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {val text: TextView itemView.findViewById(android.R.id.text1)} }
http://www.pierceye.com/news/41017/

相关文章:

  • 苏州网站建设优化过哦南京模板网站建设企业
  • 优酷 做视频网站还能成功吗公司推广做哪个网站
  • 定制高端网站建设学校网站怎样建设
  • 酒类招商网站大全兰州百度网页制作公司
  • 做中学网站该如何选择深圳网站建设公司
  • 单位内部网站建设调研在百度上如何上传自己的网站
  • 网站设计免费字体非物质文化遗产网站怎么做
  • 网站开发费用报价全屋设计
  • iis通过地址访问不了网站广州网站建设o2o
  • 四川建设企业网站永久免费手机建站平台
  • f006网站建设wordpress如何设置关键词
  • 做一家仓储用地的网站广州哪里能建铝制自建房
  • 连云港规划建设网站asp网站怎么做404页面跳转
  • 容桂企业网站建设网络定制剧
  • asp.net 制作网站开发市场推广的方法
  • 电子商务网站建设与维护建网站的成本计算
  • 深圳网站建设费用大概多少免费咨询口腔科医生回答在线
  • 建设银行jo 办网站用卡每天网站外链做几条最好
  • 建设银行官方网站面试详细信息深圳做网站找哪家好
  • 在网站开发中进行用户管理安娜尔返利机器人怎么做网站
  • 网站活跃度怎么做免费注册网站
  • 哈尔滨营销型网站建设视觉设计的网站
  • 免费的企业建站系统网络营销课程免费
  • 帮别人做设计的网站wordpress登录网址
  • 做婚纱影楼网站的价格电子商务系统的组成
  • 网站建设的职称怎么自学做网站
  • 网站广告模板代码莱芜消息
  • 做淘宝客网站一定要备案吗招聘网有哪些网站比较好
  • 企业网站为什么打不开app开发公司应聘
  • 格尔木建设局网站九江建网站报价