参考如下:
// 获取音频管理器
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这东西不用点进去看就知道是常量啊,常量怎么能调方法呢。
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接口。这个没什么特别讲的。