- 浏览: 178741 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 1428<span style="color: ... -
[Jetty]Jetty工作原理
2012-02-07 17:29 1009http://www.ibm.com/develo ... -
PhoneGap-Accelerometer
2012-02-07 14:23 1228采集设备在x、y、z方向上的动作。 acce ... -
mysql中查看和设置系统字符编码
2012-02-04 14:28 1732--查看数据库的字符集 show variables ... -
Html5游戏开发入门笔记--<躲砖块>
2012-02-03 12:04 1185学习了html5中的canvas画布元素,自己写了一个 ... -
我是项目经理,我的项目管理日记【20111202】
2012-02-03 10:19 1016其实前段时间项目 ... -
打开CMD一闪就关的解决方案
2012-02-02 12:14 1418转:http://blog.163.com/cumt_ ... -
javabean的自动生成
2012-02-02 11:59 1430在jcreator pro中自动生成 在j ... -
CAP原理
2012-02-01 09:00 1180作者:NinGoo 原文链接:ht ... -
Struts标签循环List
2012-01-31 14:18 985<pre name="code&quo ... -
关于成立北京Android爱好者俱乐部的声明
2012-01-11 14:33 886<blockquote dir="lt ... -
java.lang.NoClassDefFoundError: org/dom4j/DocumentException
2011-12-28 13:03 15156<span style="font-f ... -
电脑用户密码忘记了怎么办?
2011-12-28 12:14 1006<span style="fon ... -
C#坦克大战实现
2011-12-20 13:29 1146记得在大学学java ... -
编程环境应该和讨论社区完美的进行结合
2011-12-19 11:54 787在学习.NET过程中,经常会遇到很多问题,有的时候会找 ... -
How to Succeed in A Professional Career
2011-12-19 10:29 764(From Microsoft)<br>& ... -
依然是计划 如果没有计划似乎就没有了动力
2011-12-15 10:39 898</span></span>& ... -
XSLT学习笔记
2011-12-14 14:04 691<p class="MsoNorma ... -
时空数据模型简介
2011-12-14 13:59 1510<p class="MsoNo ... -
项目风险之人员流动风险
2011-12-13 12:29 1212<p class="MsoNorma ...
相关推荐
《Android开发常用技术初探》 在移动互联网的飞速发展中,Android系统占据了智能手机市场的主要份额,成为开发者和用户关注的焦点。Android以其开源、灵活的特性吸引了众多开发者,不断推动着应用程序的创新和发展...
【Android开发与实践详解】 Android开发是移动应用开发领域中的重要组成部分,主要使用Eclipse集成开发环境(IDE)进行。本章将深入探讨如何利用Eclipse创建Android应用程序,理解Android虚拟设备(AVD)的创建,...
通过这样的教学内容设计,学生不仅可以掌握Android开发的基本原理,还能提升实际项目开发和团队协作的能力,为将来在Android平台上的创新和应用开发打下坚实的基础。在当前软件技术日新月异的时代,熟悉并精通...
#### Android开发入门:初探与实践 ##### Android开发简介 Android不仅是一个移动平台,更是集成了移动、无线、计算机及通信技术的综合性平台。借助于Android Eclipse插件,开发者能够在Eclipse环境中高效构建...
在Android系统中,服务...综上所述,"Android中的服务初探"这篇博客可能涵盖了服务的基本概念、生命周期、启动与绑定方式,以及在实际开发中的应用和优化策略,对于理解和使用Android服务是非常有价值的参考资料。
《OFDM水声通信在Android系统下实现初探》这篇硕士论文主要探讨了如何在Android平台上实现OFDM(正交频分复用)技术应用于水声通信。OFDM技术因其高频率利用率、抗多径干扰能力和高速传输能力,近年来在水声通信领域...
### Android开发资料知识点总结 #### 一、Android开发概述 **1.1 Android基本概念** - **1.1.1 Android简介**: Android是由Google公司主导研发的基于Linux内核的操作系统,主要用于移动设备如智能手机和平板电脑...
根据给定的文件信息,我们可以深入探讨Android开发的关键知识点,这些知识对于理解Android框架、应用开发流程以及构建高效的应用程序至关重要。 ### Android的发展 自2009年以来,Android操作系统经历了显著的发展...
《Android 13 开发详解:初探与实践》 Android 13 是谷歌推出的最新一代移动操作系统,针对开发者和用户都带来了诸多改进和优化。本文将深入探讨 Android 13 的关键特性,帮助开发者更好地理解和利用这个平台,提升...
《Android游戏开发初探:基于开源篮球小游戏"Xiaoyouxi"》 在移动设备领域,Android系统占据了举足轻重的地位,而Android游戏开发也因此成为许多编程爱好者和开发者热衷的领域。今天我们将深入探讨一个开源的...
《ZombieBird:Android平台上的Flappy Bird克隆与游戏开发初探》 在移动设备上,游戏开发已经成为一个热门领域,尤其是对于Android平台。ZombieBird项目就是一个很好的实例,它是一个基于Android Studio的Flappy ...
### Android应用开发初探——基于S3C6410平台 #### 一、引言 随着移动互联网的快速发展,Android作为最受欢迎的操作系统之一,在全球范围内拥有庞大的用户基础。对于开发者而言,掌握Android应用程序开发的基本原理...
libGdx是一个强大的开源跨平台游戏开发框架,它支持Android、iOS、Windows、Linux以及HTML5等多种平台。libGdx为开发者提供了丰富的功能,包括图形渲染、音频处理、物理引擎、输入管理等,其中粒子系统是其在视觉...
本文将深入探讨这个项目,以及其背后蕴含的Android开发基础和Java语言的应用。 "MusicPlayerLite",这个名字本身就暗示了它的功能——一个轻量级的音乐播放器。对于任何初学者来说,创建一个能够播放本地音乐的应用...
《安卓游戏开发初探:基于"android-cannon-fire"的实践》 在移动应用领域,Android游戏开发一直是热门话题,而“android-cannon-fire”项目则为初学者提供了一个宝贵的起点。这个项目,名为“炮火”,是用Java语言...
《HelloKitty:Android开发初探》 HelloKitty,这个名字在许多人的心中唤起的是一个可爱、甜美的卡通形象,而在IT领域,它代表了Android应用开发的一个里程碑——"Hello Kitty"是许多开发者学习Android编程时创建的...
《Cocos2d-x 游戏开发初探:基于"Cocos2d-xGameTest"的实践解析》 Cocos2d-x 是一款广泛应用于移动平台的游戏开发引擎,因其开源、跨平台、性能优异等特点,深受开发者喜爱。"Cocos2d-xGameTest"是一个基于这个强大...
《水果捕手:libGDX游戏开发初探》 在编程世界中,游戏开发一直是一项充满挑战和乐趣的任务。Java作为广泛应用的编程语言,不仅在企业级应用领域有着广泛的应用,同样在游戏开发中也有其一席之地。本文将深入探讨一...
《JimMaze:基于libgdx的2D游戏开发初探》 JimMaze是一款以Java语言编写,专为Android平台设计的2D游戏。它充分利用了libgdx这一跨平台的游戏开发框架,使得游戏不仅能在Android设备上运行,还可以在其他支持libgdx...