zoukankan      html  css  js  c++  java
  • 播放音频

    本文旨在实践Android中播放声音的两种常见方法;

    项目地址:https://github.com/avnewu/sounddemo

    一.

    播放短暂的声音如爆炸声警告音等;

    使用SoundPool类,声音文件调入内存中,播放响应快,但是占用内存;

            AudioManager manager = (AudioManager) getSystemService(AUDIO_SERVICE);
            float maxvolume = manager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
            float currentVolume = manager.getStreamVolume(AudioManager.STREAM_MUSIC);
            final float volume = currentVolume / maxvolume;
            sound1Btn.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View v)
                {
                    soundPool.play(soundid, volume, volume, 1, 0, 1);
                }
            });

    二.

    播放时间较长的背景音乐,文件存储在SD卡上;

    使用MediaPlayer类,比前者麻烦一点,遵循生命周期,

    1.实例化MediaPlayer;

    2.设置音频资源;

    3.为播放音频做准备;

    4.播放;

                    try
                    {
                        mediaPlayer.setDataSource("/sdcard/dl.mid");
                    } catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                    try
                    {
                        mediaPlayer.prepare();
                    } catch (Exception e)
                    {
                        e.printStackTrace();
                    }
                    if (isPlaying)
                    {
                        mediaPlayer.pause();
                        sound2Btn.setText("Play a music on SDcard");
                        isPlaying = false;
                    } else
                    {
                        mediaPlayer.start();
                        mediaPlayer.setLooping(true);
                        sound2Btn.setText("Click again to pause ");
                        isPlaying = true;
                    }
    作者:小文字
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
  • 相关阅读:
    es6 常用方法
    vue HTTP 请求(vue-resource)
    vue 常用语法糖
    js中slice,SubString和SubStr的区别
    浅谈JavaScript中forEach与each
    vue 新版本 webpack 代理 跨域设置
    js 动态添加class封装(es6语法)
    jsonp promise 封装
    location.origin兼容IE
    给zTree的treeNode添加class
  • 原文地址:https://www.cnblogs.com/avenwu/p/2667905.html
Copyright © 2011-2022 走看看