Android学习-第49天

今天的任务为创建SoundPool,加载音频文件以及播放音频,代码如下:

BeatBox.java:

package com.bignerdranch.android.beatbox;

import android.content.Context;
import android.content.res.AssetFileDescriptor;
import android.content.res.AssetManager;
import android.media.AudioManager;
import android.media.SoundPool;
import android.util.Log;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class BeatBox {
    private static final String TAG="BeatBox";

    private static final String SOUNDS_FOLDER="sample_sounds";
    private static final int MAX_SOUNDS=5;

    private AssetManager mAssets;
    private List<Sound> mSounds=new ArrayList<>();
    private SoundPool mSoundPool;

    public BeatBox(Context context){
        mAssets=context.getAssets();
        mSoundPool=new SoundPool(MAX_SOUNDS, AudioManager.STREAM_MUSIC,0);
        loadSounds();
    }

    public void play(Sound sound){
        Integer soundId=sound.getSoundId();
        if (soundId==null){
            return;
        }
        mSoundPool.play(soundId,1.0f,1.0f,1,0,1.0f);
    }

    private void loadSounds() {
        String[] soundNames;
        try {
            soundNames=mAssets.list(SOUNDS_FOLDER);
            Log.i(TAG,"Found"+ soundNames.length+"sounds");
        }catch (IOException ioe){
            Log.e(TAG,"Could not list assets",ioe);
            return;
        }

        for (String filename : soundNames){
            try {
                String assetPath = SOUNDS_FOLDER + "/" + filename;
                Sound sound = new Sound(assetPath);
                load(sound);
                mSounds.add(sound);
            }catch (IOException ioe){
                Log.e(TAG,"Could not load sound"+filename,ioe);
            }
        }
    }

    private void load(Sound sound) throws IOException{
        AssetFileDescriptor afd=mAssets.openFd(sound.getAssetPath());
        int soundId=mSoundPool.load(afd,1);
        sound.setSoundId(soundId);
    }

    public List<Sound> getSounds() {
        return mSounds;
    }
}
 

Sound.java:

package com.bignerdranch.android.beatbox;

public class Sound {
    private String mAssetPath;
    private String mName;
    private Integer mSoundId;

    public Sound(String assetPath){
        mAssetPath=assetPath;
        String[] components=assetPath.split("/");
        String filename=components[components.length-1];
        mName=filename.replace(".wav","");
    }

    public String getAssetPath() {
        return mAssetPath;
    }

    public String getName() {
        return mName;
    }

    public Integer getSoundId(){
        return mSoundId;
    }

    public void setSoundId(Integer soundId){
        mSoundId=soundId;
    }
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
nside君的MySQL网络培训班课程特点: 业界最权威的MySQL数据库培训师姜承尧老师(也就是Inside君本人啦)亲授.姜承尧老师出版了《MySQL技术内幕:InnoDB存储引擎》、《MySQL内核:InnoDB存储引擎》等Mysql书籍。 课程紧密结合互联网公司实践,学员能够领略到BAT、网易等大公司的数据库架构与应用案例 课纲结合最新的MySQL 5.6、5.7版本,使得学员学到的都是最新的内容 充分掌握课程内容的学员年薪至少在25W起,第1期的学员已经证明了培训的价值 优秀学员可以获得姜老师的BAT等大型互联网公司的内推 面试技巧与简历模板(新增),帮助学员拿到更好的offer MySQL 安装与引擎 day001-MySQL 5.7介绍和安装 day002-MySQL 5.7安装多实例 day003-MySQL升级 参数 连接 权限 day004-MySQL权限拾 遗Role模拟 Workbench 体系结构 day005-slow_log generic_log audit 存储引擎一 day006-存储引擎二 多实例安装上 day007-MySQL 多实例下 SSL MySQL 数据类型和SQL查询 开发 day008-MySQL 数据类型 day009-精通JSON类型 day010-Employees 临时表的创建 外键约束 day011-SQL语法之SELECT day012-子查询 INSERT UPDATE DELETE REPLACE day013-作业讲解一 Rank 视图 UNION 触发器上 day014-触发器下 存储过程 自定义函数 MySQL 执行计划与优化器 day015-索引 B+树 上 day016-索引 B+树 下 Explain 1 day017-Explain 2 MySQL innodb引擎优化 day018-磁盘 day019-磁盘测试 day020-InnoDB_1 表空间 General day021-InnoDB_2 SpaceID.PageNumber 压缩表) day022-InnoDB_3 透明表空间压缩 索引组织表 day023-InnoDB_4 页(2) 行记录 day024-InnoDB_5 – heap_number Buffer Poo day025-InnoDB_6 Buffer Pool与压缩页 CheckPoint LSN day026-InnoDB_7 doublewrite ChangeBuffer AHI FNP MySQL 索引与innodb锁机制 day027-Secondary Index day028-join算法锁_1 day029-锁_2 day030-锁_3 day031-锁_4 day032-锁_5 day032-锁5标清 day033-锁_6 事物_1 day033-锁_6 事物1标清 day034-事物_2 MySQL 性能衡量 day035-redo_binlog_xa day036-undo_sysbench day036-undosysbench标清 day037-tpcc_mysqlslap MySQL 备份与恢复 day038-purge死锁举例_MySQL backup备份_1 day039-MySQL backup备份恢复_2 MySQL 复制技术与高可用 day040-MySQL 备份恢复backup_3_replication_1 day041-backup_4-replication_2 day042-replication_3 day043-replication_4-GTID 1 day044-replication_5-GTID 2

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值