14天学会安卓开发 作者:神秘的N (英文名corder_raine)
联系方式:369428455(反馈)
交流群 :284552167(示例,原文档下载)
版权为作者所有,如有转载请注明出处
目录



第十三天.Android多媒体开发... 126 13.1 播放音乐... 126 13.1.1 多媒体架构... 126 13.1.2 Open Core框架... 127 13.1.3 调用层次关系... 127 13.1.4 音乐播放... 127 13.2 播放视频... 128 13.2.1 播放视频... 128 13.2.2 音乐/视频播放案例... 128 13.3 录制音频... 129 13.3.1 实现录音功能... 129 13.3.2 音视频采集... 129 13.4 拍摄照片... 130 13.4.1 录音/拍照案例... 130 13.5 铃声设置... 130 13.5.1 铃声设置:设置各种铃声... 130 13.5.2 铃声设置:回调函数... 130 13.5.3 铃声设置:main.xml 131 13.5.4 铃声设置:AndroidManifest.xml 132


第十三天.Android多媒体开发
13.1播放音乐

13.1.1多媒体架构 Ø 基于第三方Packet Video公司的Open Core platform实现 Ø 支持几乎所有通用的音频、视频、静态图像格式,包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等。 Ø 通过Open Core程序员可以方便快速的开发出想要的多媒体应用程序,例如:音视频的采集,回放,视频会议,实时的流媒体播放等应用。 Ø Android提供了MediaPlayer和MediaRecorder等上层的Media API给开发人员使用。 Ø Open Core的代码在Android代码的External/Opencore目录中。 13.1.2 Open Core框架 13.1.3调用层次关系

13.1.4音乐播放
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 MediaPlayer mediaPlayer = newMediaPlayer(); if (mediaPlayer.isPlaying()) { mediaPlayer.reset(); //重置为初始状态 } mediaPlayer.setDataSource( "/sdcard/good.mp3" ); mediaPlayer.prepare(); //缓冲 mediaPlayer.start(); //开始或恢复播放 mediaPlayer.pause(); //暂停播放 mediaPlayer.start(); //恢复播放 mediaPlayer.stop(); //停止播放 mediaPlayer.release(); //释放资源 mediaPlayer.setOnCompletionListener(newMediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer arg0) { //播放完毕调用 mediaPlayer.release(); } }); mediaPlayer.setOnErrorListener(newMediaPlayer.OnErrorListener() { // 错误处理事件 public boolean onError(MediaPlayer player, int arg1, int arg2) { mediaPlayer.release(); returnfalse; } });


13.2播放视频

13.2.1播放视频
01 02 03 04 05 06 07 08 09 10 11 /* 创建VideoView对象 */ final VideoView videoView = (VideoView)findViewById(R.id.VideoView01); /*设置视频路径*/ videoView.setVideoPath("/sdcard/test.mp4"); /* 设置模式-播放进度条 */ videoView.setMediaController(new MediaController(Activity01.this)); videoView.requestFocus(); /* 开始播放 */ videoView.start(); /* 暂停 */ videoView.pause();

13.2.2音乐/视频播放案例 Ø 音乐播放案例 u MediaPlayerDemo u 视频播放案例 u VideoViewDemo

13.3录制音频

13.3.1实现录音功能 第一步:在功能清单文件AndroidManifest.xml中添加录音与写sdcard权限:
1 2 < uses-permission android:name = "android.permission.RECORD_AUDIO" /> < uses-permission android:name = "android.permission.WRITE_EXTERNAL_STORAGE" />




第二步:编写音频刻录代码:
01 02 03 04 05 06 07 08 09 10 11 MediaRecorder recorder = newMediaRecorder(); recorder.setAudioSource(MediaRecorder.AudioSource.MIC); //从麦克风采集声音 recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); //内容输出格式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //音频编码方式 recorder.setOutputFile( "/sdcard/lxt008.amr" ); recorder.prepare(); //预期准备 recorder.start(); //开始刻录 ... recorder.stop(); //停止刻录 recorder.reset(); //重设 recorder.release(); //刻录完成一定要释放资源


13.3.2音视频采集 第一步:在功能清单文件AndroidManifest.xml中添加照相机权限:

1 2 < uses-permission android:name = "android.permission.RECORD_AUDIO" /> < uses-permission android:name = "android.permission.CAMERA" />


第二步:编写拍照代码:
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); //获取窗口服务 Display display =wm.getDefaultDisplay(); //获取屏幕信息 recorder = new MediaRecorder(); recorder.setVideoSource(MediaRecorder.VideoSource.CAMERA); //从照相机采集视频 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); recorder.setVideoSize(display.getWidth(),display.getHeight()); //大小为屏幕的宽和高 recorder.setVideoFrameRate( 3 ); //每秒3帧 recorder.setVideoEncoder(MediaRecorder.VideoEncoder.H263); //设置视频编码方式 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); recorder.setOutputFile( "/sdcard/lxt008.3gp" ); recorder.prepare(); //预期准备 recorder.start(); //开始刻录 ... recorder.stop(); //停止刻录 recorder.reset(); //重设 recorder.release(); //刻录完成一定要释放资源


13.4拍摄照片

13.4.1录音/拍照案例
Ø 录音案例
u RecordAudioDemo
u
Ø 拍照案例
u CameraDemo

13.5铃声设置

13.5.1铃声设置:设置各种铃声
01 02 03 04 05 06 07 08 09 10 11 //打开系统铃声设置 Intent intent = newIntent(RingtoneManager.ACTION_RINGTONE_PICKER); //设置铃声类型和title intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_RINGTONE); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE,“设置来电铃声"); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_ALARM); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置闹铃铃声" ); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE,RingtoneManager.TYPE_NOTIFICATION); intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TITLE, "设置通知铃声" ); //当设置完成之后返回到当前的Activity startActivityForResult(intent,ButtonAlarm);


13.5.2铃声设置:回调函数
1 2 3 4 5 6 7 8 9 /* 当设置铃声之后的回调函数 */ protected void onActivityResult(intrequestCode, int resultCode, Intent data){ //得到我们选择的铃声 Uri pickedUri =data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI); //将我们选择的铃声设置成为默认 RingtoneManager.setActualDefaultRingtoneUri(Activity01. this ,RingtoneManager.TYPE_RINGTONE, pickedUri); Uri pickedUri =RingtoneManager.setActualDefaultRingtoneUri(Activity01. this ,RingtoneManager.TYPE_ALARM, pickedUri); RingtoneManager.setActualDefaultRingtoneUri(Activity01. this ,RingtoneManager.TYPE_NOTIFICATION, pickedUri); }


13.5.3铃声设置:main.xml




01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 < 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/TextView01" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = "选择下面按钮来设置铃声" /> < Button android:id = "@+id/ButtonRingtone" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = "设置来电铃声" /> < Button android:id = "@+id/ButtonAlarm" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = "设置闹钟铃声" /> < Button android:id = "@+id/ButtonNotification" android:layout_width = "fill_parent" android:layout_height = "wrap_content" android:text = "设置通知铃声" /> </ LinearLayout >


13.5.4铃声设置:AndroidManifest.xml

01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 < manifest xmlns:android = "http://schemas.android.com/apk/res/android" [/align] package = "com.yarin.android.Examples_07_08" android:versionCode = "1" android:versionName = "1.0" > < application android:icon = "@drawable/icon" android:label = "@string/app_name" > < activity android:name = ".Activity01" android:label = "@string/app_name" > < intent-filter > < action android:name = "android.intent.action.MAIN" /> < category android:name = "android.intent.category.LAUNCHER" /> </ intent-filter > </ activity > </ application > < uses-permission android:name = "android.permission.INTERNET" /> < uses-permission android:name = "android.permission.MOUNT_UNMOUNT_FILESYSTEMS" /> < uses-sdk android:minSdkVersion = "7" /> </ manifest >









**研究案例RingtoneManagerDemo

更多相关文章

  1. Android4.4.2 获取NTP时间,并设置系统时间
  2. Android(安卓)6.0耳机hook按键接听和挂断电话;音乐中短按下一首,
  3. 教你如何开关Android的APN网络
  4. Android:充电状态、轮询、电池状态、Notification
  5. Android中常用基本控件的使用方法和步骤(.txt)
  6. Android(安卓)Studio 快捷键
  7. 安卓TextView的常用属性
  8. Android进阶(二十七)Android原生扰人烦的布局
  9. android TextView 属性

随机推荐

  1. Android中的Data Binding初探 (三)
  2. 线程中的消息机制
  3. ImageView的属性大全
  4. 带着问题学习 Android(安卓)Handler 消息
  5. android TextView 属性
  6. Android(安卓)Message机制及其应用
  7. Android(安卓)之 硬件加速
  8. android studio修改配置文件(.android .g
  9. 图解Android(安卓)- Android(安卓)GUI 系
  10. android使用键盘钩子实现按键劫持