Android 播放音频的几种方式

一、采用SoundPool来播放音频

private SoundPool soundPool;
private HashMap<Integer, Integer> soundMap = new HashMap<Integer, Integer>();
 soundPool = new SoundPool(100, AudioManager.STREAM_SYSTEM, 5);
 //加载音频资源
private void loadAudioResource() {
        Log.e(TAG, "  loadAudioResource()   ");
        if (soundMap.size() > 0) {
            soundMap.clear();
        }
        soundMap.put(0, soundPool.load(this, R.raw.start1, 1));
        soundMap.put(1, soundPool.load(this, R.raw.stop, 1));
    }
//播放音频资源
public void playSound(int type) {
        Log.e(TAG,
                " playSound() type = " + type + " soundMap = "
                        + soundMap.size());
        if (type == 1) {
            soundPool.play(soundMap.get(0), 1, 1, 2, 0, 1);
        } else if (type == 2) {
            soundPool.play(soundMap.get(1), 1, 1, 2, 0, 1);
        }
    }

二、使用MediaPlayer来播放Raw文件下面的音频

private MediaPlayer mPlayer;
private AssetFileDescriptor file;
public void playFromRawFile(Context mContext, int type) {
		// 1.获取模式
		AudioManager am = (AudioManager) mContext
				.getSystemService(Context.AUDIO_SERVICE);
		final int ringerMode = am.getRingerMode();
		// 2.普通模式可以呼叫普通模式: AudioManager.RINGER_MODE_NORMAL
		// 静音模式:AudioManager.RINGER_MODE_VIBRATE
		// 震动模式:AudioManager.RINGER_MODE_SILENT
		if (ringerMode == AudioManager.RINGER_MODE_NORMAL) {
			try {
				mPlayer = new MediaPlayer();
				if (type == 1) {
					file = mContext.getResources().openRawResourceFd(
							R.raw.start);
				} else if (type == 2) {
					file = mContext.getResources()
							.openRawResourceFd(R.raw.stop);
				}
				try {
					mPlayer.setDataSource(file.getFileDescriptor(),
							file.getStartOffset(), file.getLength());
					file.close();
					if (!mPlayer.isPlaying()) {
						mPlayer.prepare();
						mPlayer.start();
						// mPlayer.setLooping(true);//循环播放
					}
				} catch (IOException e) {
					mPlayer = null;
				}
			} catch (Exception e) {
				e.printStackTrace();

			}
		}

	}

	/**
	 * 结束播放释放资源
	 */
	private void stopPlayFromRawFile() {
		if (mPlayer != null && mPlayer.isPlaying()) {
			mPlayer.stop();
			mPlayer.release();
		}
		mPlayer = null;
	}
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值