kotlin调节音量

我想使用音量控件,然后用2个button来调节音量,并显示音量条.但是理解不了文档的用法

img


胡乱尝试了下,写不通,请教下具体的使用代码

img


img

参考如下:

// 获取音频管理器
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager

// 设置要控制的音频流类型
val streamType = AudioAttributes.CONTENT_TYPE_MUSIC
setVolumeControlStream(streamType)

// 获取当前音量
val currentVolume = audioManager.getStreamVolume(streamType)

// 获取最大音量
val maxVolume = audioManager.getStreamMaxVolume(streamType)

// 计算新的音量值
val newVolume = currentVolume + 1
if (newVolume <= maxVolume) {
    // 设置新的音量
    audioManager.setStreamVolume(streamType, newVolume, 0)
}

基础不够啊,我不知道怎么写,但一眼就知道错了, AudioAttributes.USAGE_MEDIA这东西不用点进去看就知道是常量啊,常量怎么能调方法呢。

  • 这篇博客: Kotlin学习笔记八、Kotlin简单控件的使用中的 1、按钮Button: 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • Button是Android最常用的控件之一。其用法我们这里主要是关注三个方面 ,一是点击事件,二是长按事件,三是设置文本、、点击背景效果等等。
    其中点击事件和长按事件用法上跟Java差不多,主要有匿名函数方式、内部类、接口实现三种。但是设置文本和获取文本有一些变化。

    Button的点击事件的实现及注意事项:

    btnButton.setOnClickListener {
    	//因为it是一个View,因此我们要把它强制转换为Button后,再获取其文本内容或者设置文本内容
    	//这里是获取Button的文本内容
    	logging("btnButton按钮的点击操作:${(it as Button).text}")
    	//下面是设置Button的文本内容
    	(it as Button).text = "按钮Button"
    }
    

    Button的长按事件的实现及注意事项:

    btnButton.setOnLongClickListener {
    	logging("按钮btnButton的长按操作:${(it as Button).text}")
    	//这里的true是必须返回的,不能少,否则编译报错
    	true
    }
    

    我们可以看到,Kotlin里面点击事件和长按事件的舰艇大体上和Java差不多,不同的地方是:Java里面的监听是在 setClickListener之后的函数里面创建“new On*ClickListener(){}”的匿名内部类。在Kotlin里面则简单很多,在 setClickListener之后直接通过“{}”**表示监听了。省去了创建匿名内部类这一步。

    (it as Button)相当于Java里面的类型强制转换——父类强转为子类。

    其实这种方式是比较扯淡的一种方式,先要创建一个内部类实现View.OnClickListener接口,然后再把这个类的对象作为参数传给View的set******ClickListener (),而且每个按钮或者说View的点击事件的逻辑是不一样的,这样的话,你有多少个监听,就要写多少个内部类。毫无效率的重复性工作太多。当然作为一种设置监听的方式,我们不妨学学,多掌握下。具体见下面代码:

    inner class ViewOnClickListener : View.OnClickListener {
    	override fun onClick(v: View?) {
    		//TODO:
    	}
    }
    btnButton.setOnClickListener(ViewOnClickListener())
    

    当然 你也可以通过inner class ViewOnClickListener实现里面的view的id去判断出发点击事件的view是哪一个,然后if…else…或者switch去一个一个的写,免去一个点击事件一个接口实现的苦。然而这并不是好的方式。

    这个很好理解,就跟Java里面一样让Activity实现OnClickListener接口。这个没什么特别讲的。

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632