1. package com.itheima.recorder;
  2.  
  3. import android.os.Bundle;
  4. import android.app.Activity;
  5. import android.content.Intent;
  6. import android.view.Menu;
  7. import android.view.View;
  8.  
  9. public class MainActivity extends Activity {
  10.  
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. }
  16.  
  17. public void click(View v){
  18. Intent intent = new Intent(this, RecorderService.class);
  19. startService(intent);
  20. }
  21. }
  1. package com.itheima.recorder;
  2.  
  3. import java.io.IOException;
  4.  
  5. import android.app.Service;
  6. import android.content.Intent;
  7. import android.media.MediaRecorder;
  8. import android.os.IBinder;
  9. import android.telephony.PhoneStateListener;
  10. import android.telephony.TelephonyManager;
  11.  
  12. public class RecorderService extends Service {
  13. private MediaRecorder recorder;//录音api
  14. @Override
  15. public IBinder onBind(Intent intent) {
  16. return null;
  17. }
  18.  
  19. @Override
  20. public void onCreate() {
  21. super.onCreate();
  22. //拿到电话管理器
  23. TelephonyManager tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
  24. //监听电话状态
  25. //events:决定PhoneStateListener侦听什么内容
  26. tm.listen(new MyListener(), PhoneStateListener.LISTEN_CALL_STATE);
  27. }
  28.  
  29. class MyListener extends PhoneStateListener{
  30. //一旦电话状态改变,此方法调用
  31. @Override
  32. public void onCallStateChanged(int state, String incomingNumber) {
  33. super.onCallStateChanged(state, incomingNumber);
  34. switch (state) {
  35. case TelephonyManager.CALL_STATE_IDLE:
  36. System.out.println("空闲");
  37. if(recorder != null){
  38. recorder.stop();
  39. recorder.release();//使用硬件录音是用c语言占用资源是不会自动释放的需要手动释放
  40. recorder = null;
  41. }
  42. break;
  43. case TelephonyManager.CALL_STATE_RINGING:
  44. System.out.println("响铃");
  45. if(recorder == null){
  46. recorder = new MediaRecorder();
  47. recorder.setAudioSource(MediaRecorder.AudioSource.MIC);//音频来源麦克风
  48. recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
  49. recorder.setOutputFile("sdcard/luyin.3gp");//输出文件路径
  50. recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);//设置音频编码
  51. try {
  52. recorder.prepare();
  53. } catch (Exception e) {
  54. // TODO Auto-generated catch block
  55. e.printStackTrace();
  56. }
  57. }
  58. break;
  59. case TelephonyManager.CALL_STATE_OFFHOOK:
  60. System.out.println("摘机");
  61. //开始录音
  62. if(recorder != null){
  63. recorder.start();
  64. }
  65. break;
  66. }
  67. }
  68. }
  69. }
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.itheima.recorder"
  4. android:versionCode="1"
  5. android:versionName="1.0" >
  6.  
  7. <uses-sdk
  8. android:minSdkVersion="8"
  9. android:targetSdkVersion="17" />
  10. <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 读取电话状态
  11. <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 写sd卡权限
  12. <uses-permission android:name="android.permission.RECORD_AUDIO" />
  13. <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>获取开机启动
  14.  
  15. <application
  16. android:allowBackup="true"
  17. android:icon="@drawable/ic_launcher"
  18. android:label="@string/app_name"
  19. android:theme="@style/AppTheme" >
  20. <activity
  21. android:name="com.itheima.recorder.MainActivity"
  22. android:label="@string/app_name" >
  23. <intent-filter>
  24. <action android:name="android.intent.action.MAIN" />
  25.  
  26. <category android:name="android.intent.category.LAUNCHER" />
  27. </intent-filter>
  28. </activity>
  29. <service android:name="com.itheima.recorder.RecorderService"></service>
  30. <receiver android:name="com.itheima.recorder.BootReceiver">
  31. <intent-filter >
  32. <action android:name="android.intent.action.BOOT_COMPLETED"/>开机广播接收者
  33. </intent-filter>
  34. </receiver>
  35. </application>
  36.  
  37. </manifest>

android88 录音机的更多相关文章

  1. 【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动

    前言 本文为腾讯bugly的原创内容,非经过本文作者同意禁止转载,原文地址为:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1180 ...

  2. Swift - 制作一个录音机(声音的录制与播放)

    1,技术介绍 (1)AVFoundation.framework框架提供了AVAudioRecorder类.它可以实现录音功能. (2)而使用该框架的AVAudioPlayer类,可以实现声音的播放. ...

  3. Ubuntu下录音机程序的使用

    在Ubuntu中使用系统自带的录音机程序可以录制电脑的音频输出(比如,电脑正在播放视频的声音),或录制外部环境音频输入(比如,自己说话的声音) 1.录制电脑音频输出 在“硬件”选项中,将”选中设备的设 ...

  4. emWin录音机,含uCOS-III和FreeRTOS两个版本

    第12期:录音机配套例子:V6-921_STemWin提高篇实验_录音机(uCOS-III)V6-922_STemWin提高篇实验_录音机(FreeRTOS) 例程下载地址: http://forum ...

  5. Python调用Windows API函数编写录音机和音乐播放器

    功能描述: 1)使用tkinter设计程序界面: 2)调用Windows API函数实现录音机和音乐播放器. . 参考代码: ​ 运行界面: ​

  6. Qt录音机

    近期做项目, 须要一个麦克风音量监听的功能: 找了好多这方面的资料, 不知道为什么 总之非常少, 在此总结一下, 发贴一枚.. \ watermark/2/text/aHR0cDovL2Jsb2cuY ...

  7. iOS开发系列--音频播放、录音、视频播放、拍照、视频录制

    --iOS多媒体 概览 随着移动互联网的发展,如今的手机早已不是打电话.发短信那么简单了,播放音乐.视频.录音.拍照等都是很常用的功能.在iOS中对于多媒体的支持是非常强大的,无论是音视频播放.录制, ...

  8. HTML5网页录音和压缩,边猜边做..(附源码)

    宣传一下自己的qq群: (暗号:C#交流) 欢迎喜欢C#,热爱C#,正在学习C#,准备学习C#的朋友来这里互相学习交流,共同进步 群刚建,人不多,但是都是真正热爱C#的 我也是热爱C#的 希望大家可以 ...

  9. Android Weekly Notes Issue #220

    Android Weekly Issue #220 August 28th, 2016 Android Weekly Issue #220 ARTICLES & TUTORIALS Manag ...

随机推荐

  1. powerdesigner简单使用

    ---- 1) --- 新建流程图:新建模型,选择activity的那个就可以了. ----

  2. Java开发所需架包官方下载

    1.连接MySQL数据库所需架包点击进入官网下载 2.连接Oracle数据库所需架包点击进入官网下载 3.JUnit测试所需架包点击进入官网下载或者点击进入官网下载 4.Struts所需架包点击进入官 ...

  3. 调试UnhandledExceptionFilter

    kernel32!UnhandledExceptionFilter通过判断当前进程是否附加了调试器,如果附加,就把异常交给调试器,如果没有,就把异常交给进程的UnhandledExceptionFil ...

  4. HDU 2122

    思路:prime,考虑重边!!! #include<stdio.h> #include<string.h> int map[1001][1001],dist[1001]; in ...

  5. eclipse简单注释规范

    设置注释模板的入口: Window->Preference->Java->Code Style->Code Template Types/*** @ClassName: ${t ...

  6. html总结----------------------看这个就够了

    HTML是我们学习Javaweb的第一步 很好地掌握门课是非常有必要的!下面就是我在听资深老师讲课的笔记!个人觉得非常不错!希望可以帮助到那些在学习javaweb路上的 朋友们!从今天 陆续的整理这门 ...

  7. [POJ1969]Count on Canton

    NOIP1999普及组 Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 9333   Accepted: 5469 Descr ...

  8. [NOIP2011]瑞士轮

    noip2011普及组第3题. 题目背景 在双人对决的竞技性比赛,如乒乓球.羽毛球.国际象棋中,最常见的赛制是淘汰赛和循环赛.前者的特点是比赛场数少,每场都紧张刺激,但偶然性较高.后者的特点是较为公平 ...

  9. IIS7 性能(内存、CPU、当前请求耗时)监测

    程序上线了,但运行过程中如果发现很CPU.内存异常,某些操作耗时,如何在生产环境中监测并查明原因呢,有以下几种工具(方式): 1.NProfiler,这是一个商业软件,有试用周期,可以监测包括Winf ...

  10. 【CSS】Beginner4:Text

    1.alter the size and shape of the text 2.font-family:Arial, Verdana,"Times New Roman",helv ...