1、播放背景音乐
    Activity page1;
    private static MediaPlayer mp = null; // 声明 MediaPlayer引用
mp = new MediaPlayer();
try {
AssetFileDescriptor fileDescriptor = page1.getAssets().openFd(
media_mp3);// assets与 res 平级
mp.setDataSource(fileDescriptor.getFileDescriptor(),
fileDescriptor.getStartOffset(),
fileDescriptor.getLength());
mp.prepare();
} catch (Exception e) {
MyDialog e_msg = MyDialog.newInstance("错误", "录音加载错误!\r\n" + e);
e_msg.show(page1.getFragmentManager(), "");
}
mp.start();
mp.setOnCompletionListener(new OnCompletionListener() {// 播放完毕监听事件
@Override
public void onCompletion(MediaPlayer mp1) {
btn2.setText("播放");
mp.stop();
mp.release();
mp = null;
}
});


2、播放即时音乐


    SoundPool sp;  // soundpool对象
HashMap hm;  // 存放声音文件
int currStreamId;  // 当前播放音频文件ID
// 初始化声音池
@SuppressLint("UseSparseArrays") @SuppressWarnings("deprecation")
private void initSoundPool() {
// 创建 SoundPool 对象
sp = new SoundPool(4, AudioManager.STREAM_MUSIC, 0);
hm = new HashMap();
// 加载声音文件 并且设置为 ID=1(1号声音)放入 hm 中
hm.put(1, sp.load(this, R.raw.backroad, 1));// raw 位于 res 目录下
}


// 播放声音
protected void playSound(int sound, int loop) {// sound 声音 ID=1,loop 0不循环,1循环
    // 获取 AudioManager 引用
    AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE);
    // 获取当前音量
    float streamVolumeCurrent = am
    .getStreamVolume(AudioManager.STREAM_MUSIC);
    // 获取系统最大音量
    float streamVolumeMax = am
    .getStreamMaxVolume(AudioManager.STREAM_MUSIC);

    // 计算播放音量
    float volume = streamVolumeCurrent / streamVolumeMax;
   
    // 调用 SoundPool 的 play 方法播放声音文件
    currStreamId = sp.play(hm.get(sound), volume, volume, 1, loop, 1.0f);
}

sp.stop(currStreamId);



2) 如何设置要播放的文件:
MediaPlayer要播放的文件主要包括3个来源:
a. 用户在应用中事先自带的resource资源
例如:MediaPlayer.create(this, R.raw.test);
b. 存储在SD卡或其他文件路径下的媒体文件
例如:mp.setDataSource("/sdcard/test.mp3");
c. 网络上的媒体文件
例如:mp.setDataSource("http://www.citynorth.cn/music/confucius.mp3");


MediaPlayer的setDataSource一共四个方法:
setDataSource (String path) 
setDataSource (FileDescriptor fd) 
setDataSource (Context context, Uri uri) 
setDataSource (FileDescriptor fd, long offset, long length)
 
其中使用FileDescriptor时,需要将文件放到与res文件夹平级的assets文件夹里,然后使用:
AssetFileDescriptor fileDescriptor = getAssets().openFd("rain.mp3");
m_mediaPlayer.setDataSource(fileDescriptor.getFileDescriptor(),fileDescriptor.getStartOffset(), fileDescriptor.getLength());
来设置datasource


更多相关文章

  1. android 文件选择
  2. Android 实现文件的下载
  3. 一看就会Android之手机系统音量的设置
  4. 《android的SQLite与文件下载》
  5. Android Studio 与git 添加忽略文件
  6. android 入门学习笔记 上传大文件
  7. ICS4.0.3 将声音设置中的震动和响铃默认为勾选
  8. android实现文件读写功能

随机推荐

  1. Js 运行机制与字符串,数组常用 API
  2. MyCms 开源自媒体系统,系统配置字段说明
  3. 人物肩部怎么画?漫画头颈肩的画法
  4. Go语言技术交流群
  5. php递归json类实例
  6. Emmet常用语法、元素属性、布局标签
  7. 闭包/访问器属性/类与对象/解构赋值/js引
  8. rest语法|剩余参数|归并参数
  9. js中的流程控制
  10. 学绘画该怎么上色?电脑绘画上色技巧!