- 浏览: 175304 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (140)
- java (138)
- 佳能500d (1)
- 佳能 (1)
- Oracle数据库文档构造器--Oraschemadoc (1)
- EJB调用的原理分析 (1)
- 使用css3画"静音"icon (1)
- 张小庆,在路上(16)-给弟弟找工作 (1)
- Android短信编解码方式 (1)
- lua web 开发 (1)
- zk安装 (1)
- 菜单多国语言化遇到的问题 (1)
- 【转】纯文本配置还是注册表 (1)
- C++ delete删除动态分配的内存 (1)
- eclipse下修改项目名导致tomcat内发布名不一致的解决方法 (1)
- Lucene实现各种常见文档的全文检索 (1)
- 项目风险之人员流动风险 (1)
- 时空数据模型简介 (1)
- XSLT学习笔记 (1)
- 依然是计划 如果没有计划似乎就没有了动力 (1)
- How to Succeed in A Professional Career (1)
- 编程环境应该和讨论社区完美的进行结合 (1)
- C#坦克大战实现 (1)
- 电脑用户密码忘记了怎么办? (1)
- java.lang.NoClassDefFoundError: org/dom4j/DocumentException (1)
- 关于成立北京Android爱好者俱乐部的声明 (1)
- Android开发之初探音频的播放 (1)
- Struts标签循环List (1)
- CAP原理 (1)
- javabean的自动生成 (1)
- 打开CMD一闪就关的解决方案 (1)
- 我是项目经理,我的项目管理日记【20111202】 (1)
- Html5游戏开发入门笔记--<躲砖块> (1)
- mysql中查看和设置系统字符编码 (1)
- PhoneGap-Accelerometer (1)
- [Jetty]Jetty工作原理 (1)
- Ibatis+Spring整合实例Demo+源码 (1)
最新评论
-
u012985907:
dsdsdsdsd
FLASH上传与拍照 -头像-avatart -
a379933101:
?????????????????????????????
android listview 连续调用 getview问题分析及解决 -
151tmac:
拜托下次粘贴的时候,粘贴为纯文本
android listview 连续调用 getview问题分析及解决 -
liudezhong135:
...
Spring3MVC 在JSP中使用@ModelAttribute -
香飘飘2011:
要是不知道层次级别,如何退回到根目录呢
FTP退回到根目录
<h1>Android开发之初探音频的播放</h1>
/*
* Android开发之初探音频的播放
* 北京Android俱乐部群:167839253
* Created on: 2011-8-23
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
<h2>音频的播放</h2>
Android平台中关于音频的播放有两种方式,一种是SoundPool,一种是MediaPlayer。SoundPool适合短促但是对反应速度要求较高的情况。但是MediaPlay则适合较长但是对时间要求不高的情况。
音频文件一般都放在res的raw目录下。
对于SoundPool的说明:SoundPool初始化的过程是异步的,也就是说,当对SoundPool初始化时,系统会自动启动一个后台线程来完成初始化工作。因此并不会影响前台其他程序的运行。但也带来一个问题,调用初始化操作后不能立即播放,需要等待一点时间,否则可能会出错。另外,SoundPool可以同时播放多个音频文件,但是MediaPlayer同意时间却只能播放一个。
源码如下所示:
<textarea readonly name="code" class="java">/*
* Android开发之初探音频的播放
* MyMeidaTest01.java
* Created on: 2011-8-23
* Author: blueeagle
* Email: liujiaxiang@gmail.com
*/
package com.blueeagle;
import java.util.HashMap;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.media.MediaPlayer;
import android.media.SoundPool;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MyMeidaTest01 extends Activity {
Button button1;
Button button2;
Button button3;
Button button4;
TextView myTextView;
MediaPlayer myMediaplayer;
SoundPool mySoundpool;
HashMap<Integer,Integer> soundPoolMap;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
initSounds();
initUI();
}
public void playSound(int sound , int loop){
//SoundPool的播放方法
AudioManager mgr = (AudioManager)this.getSystemService(Context.AUDIO_SERVICE);
float streamVolumeCurrent = mgr.getStreamVolume(AudioManager.STREAM_MUSIC);
float streamVolumeMax = mgr.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
float volume = streamVolumeCurrent/streamVolumeMax;
mySoundpool.play(soundPoolMap.get(sound), volume, volume, 1, loop, 1f);
}
private void initUI() {
// TODO Auto-generated method stub
myTextView = (TextView)findViewById(R.id.mytextview);
button1 = (Button)findViewById(R.id.button1);
button2 = (Button)findViewById(R.id.button2);
button3 = (Button)findViewById(R.id.button3);
button4 = (Button)findViewById(R.id.button4);
button1.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myTextView.setText("使用MediaPlayer播放声音");
if(!myMediaplayer.isPlaying())
myMediaplayer.start();
}
});
button2.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myTextView.setText("暂停MediaPlayer播放声音");
if(myMediaplayer.isPlaying())
myMediaplayer.pause();
}
});
button3.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myTextView.setText("使用SoundPool播放声音");
playSound(1,0);
}
});
button4.setOnClickListener(new Button.OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
myTextView.setText("暂停SoundPool播放声音");
mySoundpool.pause(1);
}
});
}
private void initSounds() {
// TODO Auto-generated method stub
myMediaplayer = MediaPlayer.create(this, R.raw.music);
mySoundpool = new SoundPool(4,AudioManager.STREAM_MUSIC,100);
soundPoolMap = new HashMap<Integer,Integer>();
soundPoolMap.put(1,mySoundpool.load(this,R.raw.kick,1));
//初始化声音操作,使用SoundPool时,一般将声音放进一个HashMap中,便于声音的管理和操作。
}
}
</textarea><br>
XML布局文件如下:
<textarea readonly name="code" class="html"><?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:id="@+id/mytextview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="没有播放任何声音"
/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="使用Media播放声音"
/>
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="暂停Media播放声音"
/>
<Button
android:id="@+id/button3"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="使用SoundPool播放声音"
/>
<Button
android:id="@+id/button4"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="暂停SoundPool播放声音"
/>
</LinearLayout>
</textarea><br>
发表评论
-
Ibatis+Spring整合实例Demo+源码
2012-02-08 12:58 1399<span style="color: ... -
[Jetty]Jetty工作原理
2012-02-07 17:29 992http://www.ibm.com/develo ... -
PhoneGap-Accelerometer
2012-02-07 14:23 1200采集设备在x、y、z方向上的动作。 acce ... -
mysql中查看和设置系统字符编码
2012-02-04 14:28 1705--查看数据库的字符集 show variables ... -
Html5游戏开发入门笔记--<躲砖块>
2012-02-03 12:04 1166学习了html5中的canvas画布元素,自己写了一个 ... -
我是项目经理,我的项目管理日记【20111202】
2012-02-03 10:19 987其实前段时间项目 ... -
打开CMD一闪就关的解决方案
2012-02-02 12:14 1384转:http://blog.163.com/cumt_ ... -
javabean的自动生成
2012-02-02 11:59 1397在jcreator pro中自动生成 在j ... -
CAP原理
2012-02-01 09:00 1146作者:NinGoo 原文链接:ht ... -
Struts标签循环List
2012-01-31 14:18 960<pre name="code&quo ... -
关于成立北京Android爱好者俱乐部的声明
2012-01-11 14:33 859<blockquote dir="lt ... -
java.lang.NoClassDefFoundError: org/dom4j/DocumentException
2011-12-28 13:03 15090<span style="font-f ... -
电脑用户密码忘记了怎么办?
2011-12-28 12:14 978<span style="fon ... -
C#坦克大战实现
2011-12-20 13:29 1115记得在大学学java ... -
编程环境应该和讨论社区完美的进行结合
2011-12-19 11:54 758在学习.NET过程中,经常会遇到很多问题,有的时候会找 ... -
How to Succeed in A Professional Career
2011-12-19 10:29 728(From Microsoft)<br>& ... -
依然是计划 如果没有计划似乎就没有了动力
2011-12-15 10:39 875</span></span>& ... -
XSLT学习笔记
2011-12-14 14:04 663<p class="MsoNorma ... -
时空数据模型简介
2011-12-14 13:59 1477<p class="MsoNo ... -
项目风险之人员流动风险
2011-12-13 12:29 1176<p class="MsoNorma ...
相关推荐
6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper应用 6.6 数据共享...
ArcGIS Runtime SDK for Android开发介绍,来自Esri 中国技术人员的培训材料。
Android开发常用技术初探.pdf
工程里包含了海康威视android sdk(网络库+播放库) 官网上只有android 播放库下载,没有...可以参考我的博文:海康威视远程监控Android端APP开发初探 http://blog.csdn.net/lihong08/article/details/9355691
掌握使用Eclipse开发Android应用程序的方法 掌握Android虚拟设备的创建方法 了解R.java文件的用途和生成方法 了解AndroidManifest.xml文件的用途 了解Android的程序结构 了解使用命令行创建Android应用程序方法
初探Android初探Android
Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明 Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
学习Android有一段时间了,虽然前段时间对软件测试有了一些了解,不过接触android的单元测试却是头一次。这几天在物流大赛上也用了不少时间,所以对于android的单元测试没有太深入的研究,所以先写个基本入门吧!...
1.初探Android 2.Android开发环境搭建与编译 3.Android编译过程分析 4.android.mk初识 5.Android.mk学习1 6.Android.mk学习2 7.Android.mk学习3 8.Android启动课程大纲 9.Android启动模式 10.init启动分析 11.走入...
《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言 第一部分 准备篇 第1章 Android开发简介 1.1 Android基本概念 1.1.1 Android简介 1.1.2 Android的系统构架 1.1.3 ...
移动学习应用开发初探Android篇.pdf
6.1 Android数据存储初探 6.2 数据存储之Shared Preferences 6.3 数据存储之Files 6.4 数据存储之Network 6.5 Android数据库编程 6.5.1 SQLite简介 6.5.2 SQLite编程详解 6.5.3 SQLiteOpenHelper...
Android fragment懒加载初探
《Android手机开发》教学内容初探.pdf
基于Scrum的Android教学改革初探.pdf
《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...
《Android开发技术》实践教学分层模式初探.pdf