美文网首页
kotlin使用SoundPool播放mp3的简单例子

kotlin使用SoundPool播放mp3的简单例子

作者: StormerX | 来源:发表于2020-04-16 21:41 被阅读0次

SoundPool适合用来播放简短的音效,不适合播放长音频。

首先建立assets目录,复制音效文件(mp3)进去。 首界面加个按钮

点击按钮播放音频的代码如下(MainActivity):

package com.starock.testjetplayer


import android.media.AudioAttributes
import android.media.SoundPool
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*


class MainActivity : AppCompatActivity() {



    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        var mSoundPool: SoundPool? = null
        var audioAttributes: AudioAttributes? = null
        var soundId = 0

        audioAttributes = AudioAttributes.Builder()
                .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
                .setUsage(AudioAttributes.USAGE_MEDIA)
                .build()

        mSoundPool = SoundPool.Builder()
                .setMaxStreams(3)
                .setAudioAttributes(audioAttributes)
                .build()

        soundId = mSoundPool.load(assets.openFd("CLAP.mp3"), 1)



        bPlay.setOnClickListener(object : View.OnClickListener{

            override fun onClick(v: View?) {
                println("play")
                mSoundPool.play(soundId, 1F, 1F, 0, 0, 1F);
            }

        })
    }
}

SoundPool提供了如下4个load方法:
//从 resld 所对应的资源加载声音。
int load(Context context, int resld, int priority)
//加载 fd 所对应的文件的offset开始、长度为length的声音。
int load(FileDescriptor fd, long offset, long length, int priority)
//从afd 所对应的文件中加载声音。
int load(AssetFileDescriptor afd, int priority)
//从path 对应的文件去加载声音。
int load(String path, int priority)
上面4个方法在加载声音之后,都会返回该声音的ID,以后程序就可以通过该声音的ID来播放指定声音。

SoundPool提供的播放指定声音的方法:
int play(int soundID, float leftVolume, float rightVolume, int priority, int loop, float rate)
参数soundID:指定播放哪个声音;
参数leftVolume、rightVolume:指定左、右的音量:
参数priority:指定播放声音的优先级,数值越大,优先级越高;
参数loop:指定是否循环,0:不循环,-1:循环,其他值表示要重复播放的次数;
参数rate:指定播放的比率,数值可从0.5到2, 1为正常比率。

相关文章

网友评论

      本文标题:kotlin使用SoundPool播放mp3的简单例子

      本文链接:https://www.haomeiwen.com/subject/xhrjvhtx.html