android 播放声音

最近项目需要加一个播放的声音,网上找了一下,并且刚开始始终没有效果,所以记录一下走过的坑,以免忘记!

产品需求是在动画执行完毕的时候,就播放声音,所以我在动画完成的监听中,执行了如下代码,

textView.animate().translationY(-100).alpha(0).setDuration(700).setListener(new Animator.AnimatorListener() {

			@Override public void onAnimationStart(Animator animation) {}

			@Override public void onAnimationEnd(Animator animation) {
				idLlAddAssetsAnim.removeView(textView);
				playSound();
					
			}

			@Override public void onAnimationCancel(Animator animation) {}

			@Override public void onAnimationRepeat(Animator animation) {}
		}).setInterpolator(new DecelerateInterpolator()).start();
private SoundPool	soundPool;
private int		soundId;
private void initSound() {
		// maxStreams:允许同时播放的流的最大值,决定了Android为其开设多大的缓冲区。
		// streamType:音频流的类型描述,一般使用Audiomanager.STREAM_MUSIC。
		// srcQuality:采样率转化质量,默认为0
		soundPool = new SoundPool(2, AudioManager.STREAM_MUSIC, 0);
		// context:上下文。resId是声音id,一般在res下新建文件夹raw,然后将.mp3文件放到raw下。
		// priority:优先级
		soundId = soundPool.load(getApplication(), R.raw.tanqianyinxiao, 1);
	}
private void playSound() {
		// soundID:是要播放的资源id
		// leftVolume:左声道音量控制
		// rightVolume:右声道音量控制
		// priority:优先级,0为最低优先级
		// loop:0:不循环,-1:循环
		// rate:播放速率(1.0是正常,取值在0.5-2.0)
		soundPool.play(soundId, 0.8f, 0.8f, 1, 0, 1);
	}

但是始终没有声音出来,网上反复查找别人文章,发现大家都是这样写的。

咋整?于是把playSound()方法移动到runOnUiThread()里面执行,效果出来了。说明onAnimationEnd方法是子线程?

另外调试的时候有些技巧,如果不播放声音,先看下设置里的显示和声音是否都开了,有些手机需要播放声音的权限。

另外换一个mp3的文件进行播放,看是否是mp3的原因。

第二种方法播放声音,mp3放在assets文件夹下。

private AssetManager assetManager;

	private MediaPlayer playRing() {
		MediaPlayer player = null;
		try {
			player = new MediaPlayer();
			assetManager = getAssets();
			AssetFileDescriptor fileDescriptor = assetManager.openFd("tanqianyinxiao.mp3");
			player.setDataSource(fileDescriptor.getFileDescriptor(), fileDescriptor.getStartOffset(), fileDescriptor.getStartOffset());
			player.prepare();
			player.start();

		} catch (IOException e) {
			e.printStackTrace();
		}
		return player;
	}


猜你喜欢

转载自blog.csdn.net/u010648159/article/details/80251761
今日推荐