使用MediaPlayer为组件的各种状态播放声音效果(Button点击,Listview上下拉)
2013-11-13 16:57
447 查看
源码下载:http://download.csdn.net/detail/heng615975867/6546069
播放声音效果的类:
private void playSound(int resId) {// Stop current player, if there's one playingif (null != mCurrentMediaPlayer) {mCurrentMediaPlayer.stop();mCurrentMediaPlayer.release();}mCurrentMediaPlayer = MediaPlayer.create(mContext, resId);if (null != mCurrentMediaPlayer)
{mCurrentMediaPlayer.start();}}}
使用方式:
MediaPlayer类播放res/raw的音频资源的另一个更好的方法:
播放声音效果的类:
/******************************************************************************* * Copyright 2011, 2012 Chris Banes. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *******************************************************************************/ package com.handmark.pulltorefresh.library.extras; import java.util.HashMap; import android.content.Context; import android.media.MediaPlayer; import android.view.View; import com.handmark.pulltorefresh.library.PullToRefreshBase; import com.handmark.pulltorefresh.library.PullToRefreshBase.Mode; import com.handmark.pulltorefresh.library.PullToRefreshBase.State; public class SoundPullEventListener<V extends View> implements PullToRefreshBase.OnPullEventListener<V> { private final Context mContext; private final HashMap<State, Integer> mSoundMap; private MediaPlayer mCurrentMediaPlayer; /** * Constructor * * @param context - Context */ public SoundPullEventListener(Context context) { mContext = context; mSoundMap = new HashMap<State, Integer>(); } @Override public final void onPullEvent(PullToRefreshBase<V> refreshView, State event, Mode direction) { Integer soundResIdObj = mSoundMap.get(event); if (null != soundResIdObj) { playSound(soundResIdObj.intValue()); } } /** * Set the Sounds to be played when a Pull Event happens. You specify which * sound plays for which events by calling this method multiple times for * each event. * <p/> * If you've already set a sound for a certain event, and add another sound * for that event, only the new sound will be played. * * @param event - The event for which the sound will be played. * @param resId - Resource Id of the sound file to be played (e.g. * <var>R.raw.pull_sound</var>) */ public void addSoundEvent(State event, int resId) { mSoundMap.put(event, resId); } /** * Clears all of the previously set sounds and events. */ public void clearSounds() { mSoundMap.clear(); } /** * Gets the current (or last) MediaPlayer instance. */ public MediaPlayer getCurrentMediaPlayer() { return mCurrentMediaPlayer; } //主要是MediaPlayer类播放res/raw的音频资源
private void playSound(int resId) {// Stop current player, if there's one playingif (null != mCurrentMediaPlayer) {mCurrentMediaPlayer.stop();mCurrentMediaPlayer.release();}mCurrentMediaPlayer = MediaPlayer.create(mContext, resId);if (null != mCurrentMediaPlayer)
{mCurrentMediaPlayer.start();}}}
使用方式:
private State mState = State.RESET; sound.setState(mState);
MediaPlayer类播放res/raw的音频资源的另一个更好的方法:
private void initBeepSound() { if (playBeep && mediaPlayer == null) { // The volume on STREAM_SYSTEM is not adjustable, and users found it // too loud, // so we now play on the music stream. setVolumeControlStream(AudioManager.STREAM_MUSIC); mediaPlayer = new MediaPlayer(); mediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); AssetFileDescriptor file = getResources().openRawResourceFd( R.raw.beep); AssetFileDescriptor file1 = getResources().openRawResourceFd( R.raw.voicemail); try { mediaPlayer.setDataSource(file.getFileDescriptor(), file.getStartOffset(), file.getLength()); file.close(); mediaPlayer.setVolume(BEEP_VOLUME, BEEP_VOLUME); mediaPlayer.prepare(); } catch (IOException e) { mediaPlayer = null; } } }
相关文章推荐
- Android列表组件ListView使用详解之取消子项的点击效果
- 动态设置Button、ImageView等组件在不同状态下的背景/前景显示效果。 扩展下的话可以前景/背景的显示效果可以使用网络图片。
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
- android listview 中加 button、imagebutton等之后失去点击效果的解决办法
- ListView之ViewHolder&下拉加载&item点击保存状态
- DrawerLayout的使用 侧滑加载Listview,首页使用Fragment和处理点击触摸冲突、穿透事件和监听菜单滑动状态的改变的详细介绍
- Android 文字和按钮Button点击效果的(selector使用)直接用
- Android基础:listview的item点击事件会使里面的Button也出现按压的效果
- Android基础:listview的item点击事件会使里面的Button也出现按压的效果
- 点击侧滑任何一个 菜单项,请求网络数据展示在主界面的xlistview中且实现下拉刷新效果和上拉加载的分页加载数据效果
- 【Cocos2dx】使用CCControlButton创建按钮、按钮点击事件,点击事件中的组件获取,setPosition的坐标问题
- Android新手入手教程 -1.使用MediaPlayer播放声音
- Android使用的webcview中带有音乐播放控件,在关闭或分享时处于界面不可见状态下,声音仍在播放的问题解决
- RecyclerView使用详解一代替ListView(点击事件,添加头布局,上拉刷新下拉加载)
- 使用xml文件建立Button,EditText以及文字的点击效果Selector
- 在listView中,添加Button、则复写(Override)的onItemClick将失效,没有点击效果。
- Shape使用和button 的点击效果
- 【整理】Android中使用XML自定义组件各种状态下的背景图片
- unity_NGUI系统学习(四)_Atlas图集的创建和使用_Button触发状态还可以用图片做背景效果设定