16000个的32位的数据用来表示音频振幅。采样率和位深度越高,数字化音频越精准。采样率和位深度也决定了音频文件的大小。Android在WAV文件内支持PCM音频数据。WAV是PC上的一个长期存在的标准音频格式。通过Intent使用内建的音频播放器
正如使用摄像头,在一个应用程序里提供播放音频文件的能力,最容易的方法就是
使用内建的“音乐”程序的功能。这个程序有个用户熟悉的界面,能播放所有Android支持的格式,并且能通过一个intent,被触发去播放一个指定的文件。普通的android.content.Intent.ACTION_VIEWintent,其数据设置为一个音频文件的Uri,并指定其MIME类型,这样Android会自动选择一个合适的应用程序来播放。这个程序应该是内建的音乐播放程序,但用户可能被提供其他的选项,如果他/她安装了其他的音频播放软件。
1.Intent intent=newIntent(android.content.Intent.ACTION_VIEW);
2.intent.setDataAndType(audioFileUri,"audio/mp3");
3.startActivity(intent);
注解:MIME全称是MultipurposeInternet Mail Extension(s多用途互联网邮件扩展)。它起初专门用来帮助电子邮件客户端发送和接收附件。但它的使用范围从电子邮件极大地扩展到其他的通讯协议,包括HTTP,标准万维网服务。Android使用MIME类型来解析intent,并且用它来决定应该选择哪个应用程序来处理intent.
每个文件类型都有特定的(有时候不止一个)MIME类型。MIME类型通过至少由2部分组成,由斜杠分开的字符来指定。第一部分是更通用的类型,比如“audio”.第二部分是更具体的类型,比如"mpeg".一个通用的类型"audio"和一个更具体的类型"mpeg"将产生一个“audio/mpeg"MIME类型字符,这个MIME类型通常用于MP3文件。
Android音频实例分析
这里有个通过一个intent触发内建的音频播放程序的完整例子。
1.packagecom.apress.proandroidmedia.ch5.intentaudioplayer;
2.import java.io.File;
3.import android.app.Activity;
4.import android.content.Intent;
5.import android.net.Uri;
6.import android.os.Bundle;
7.import android.os.Environment;
8.import android.view.View;
9.importandroid.view.View.OnClickListener;
10.import android.widget.Button;
我们的activity在触发音频播放之前会一直监听一个Botton是否被按下。
1.public class AudioPlayer extendsActivity implements OnClickListener{
2.Button playButton;
3.@Override
4.public void onCreate(BundlesavedInstanceState){
5.super.onCreate(savedInstanceState);
6.setContentView(R.layout.main);
我们将content view设置为我们的XML后,我们能得到一个Button的引用,并将我们的activity(this)设为OnClickListener.
1.playButton=(Button)this.findViewById(R.id.Button01);
2.playButton.setOnClickListener(this);
3.}
当我们的Button被点击,OnClick方法会被调用。在这个方法里,我们用一个普通的android.content.Intent.ACTION_VIEW来构建intent,然后创建一个文件对象,这个对象是SD卡上已经存在的音频文件的索引。这种情况下,这个音频文件被手动放置到SD卡的“Music"目录下,这个目录通常放置和音乐相关的音频文件。
1.public void onClick(View v){
2.Intent intent=newIntent(android.content.Intent.ACTION_VIEW);
3.Filesdcard=Environment.getExternalStorageDirectory();
4.File audioFile=newFile(sdcard.getPath()+"/Music/goodmorningandroid.mp3");
接下来,我们设置intent的数据为来源于音频文件的Uri并将其类型设置为MIME类型,audio/mp3.最后传递我们的intent给startActivity来触发内建的音乐播放程序。
1.intent.setDataAndType(Uri.fromFile(audioFile),"audio/mp3");
2.startActivity(intent);
3.}
下面是一个简单的XML布局文件,其中Button的文本为"Play Audio",前面所述的
activity会用到这个Button.
1.< xmlversion="1.0"encoding="utf-8" >
2.3.android:orientation="vertical"
4.android:layout_width="fill_parent"
5.android:layout_height="fill_parent"
6.>
7.8.android:layout_width="wrap_content"android:layout_height="wrap_content"
>
9.
Android支持的视频格式
先简要说明下Android支持的视频格式,如下:
由于硬件的不同,不同的手机支持的编解码方式有些不一样,在T-Mobile G1实际设备中增加了对WMA,WMV,H.264 AVC格式解码的支持。Android支持的音/视频编码方式仅包括:AMR-NB,H.263,输出的视频格式也只*.3gp或者*.mp4,这点在以后的开发中需要注意。对Android的编解码有了一些了解后,我们再去研究下如何在Android上来播放/录制视频,打开Android SDK中关于媒体方面的说明,摘要其主要部分如下:
首先注意的就是:MediaPlayer,MediaRecoder,主要是用来播放视频与录制视频的类。