016_01Service的应用--拨打电话自动录音

 1 package com.example.day16_03phonerecorder;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6
 7 public class MainActivity extends Activity {
 8
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13
14         Intent intent = new Intent(this, MyPhoneRecordService.class);
15         startService(intent);
16     }
17 }
  1 package com.example.day16_03phonerecorder;
  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.media.MediaRecorder.AudioEncoder;
  9 import android.media.MediaRecorder.AudioSource;
 10 import android.media.MediaRecorder.OutputFormat;
 11 import android.os.IBinder;
 12 import android.telephony.PhoneStateListener;
 13 import android.telephony.TelephonyManager;
 14
 15 public class MyPhoneRecordService extends Service {
 16
 17     MediaRecorder mMediaRecorder;
 18     boolean recordflag =false;
 19     @Override
 20     public IBinder onBind(Intent intent) {
 21         // TODO Auto-generated method stub
 22         return null;
 23     }
 24
 25     @Override
 26     public void onCreate() {
 27         // TODO Auto-generated method stub
 28         super.onCreate();
 29         System.out.println("MyPhoneRecordService.onCreate()");
 30     }
 31
 32     @Override
 33     public int onStartCommand(Intent intent, int flags, int startId) {
 34         // TODO Auto-generated method stub
 35         System.out.println("MyPhoneRecordService.onStartCommand()");
 36
 37         //服务里要监听电话的状态
 38         //  1,如果发现电话接通--》就是开始录音
 39         //  2.如果发现电话挂断 --》就停止录音
 40         TelephonyManager telephonyManager = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
 41         telephonyManager.listen(new MyphoneStateListener(), PhoneStateListener.LISTEN_CALL_STATE);
 42         return super.onStartCommand(intent, flags, startId);
 43     }
 44
 45     @Override
 46     public void onDestroy() {
 47         // TODO Auto-generated method stub
 48         super.onDestroy();
 49         System.out.println("MyPhoneRecordService.onDestroy()");
 50     }
 51
 52     class MyphoneStateListener extends PhoneStateListener{
 53        /*
 54        *//** Device call state: No activity. *//*
 55         public static final int CALL_STATE_IDLE = 0;
 56         *//** Device call state: Ringing. A new call arrived and is
 57          *  ringing or waiting. In the latter case, another call is
 58          *  already active. *//*
 59         public static final int CALL_STATE_RINGING = 1;
 60         *//** Device call state: Off-hook. At least one call exists
 61           * that is dialing, active, or on hold, and no calls are ringing
 62           * or waiting. *//*
 63         public static final int CALL_STATE_OFFHOOK = 2;*/
 64
 65
 66         @Override
 67         public void onCallStateChanged(int state, String incomingNumber) {
 68             // TODO Auto-generated method stub
 69             super.onCallStateChanged(state, incomingNumber);
 70             switch (state) {
 71             case 0:
 72                 if (recordflag) {
 73                     //停止录音
 74                     // 8. 停止录音
 75                     mMediaRecorder.stop();
 76                     // 9. 释放资源
 77                     mMediaRecorder.release();
 78                     recordflag=false;
 79                 }
 80                 System.out
 81                         .println("MyPhoneRecordService.MyphoneStateListener.onCallStateChanged()电话挂断");
 82                 break;
 83             case 1:
 84                 System.out
 85                         .println("MyPhoneRecordService.MyphoneStateListener.onCallStateChanged()正在响铃");
 86
 87                 break;
 88             case 2:
 89                 //开始录音
 90             // 1. 创建一个MediaRecorder对象
 91                   mMediaRecorder = new MediaRecorder();
 92             // 2. 设置音频源
 93                  mMediaRecorder.setAudioSource(AudioSource.MIC);
 94             // 3. 设置输出格式
 95                  mMediaRecorder.setOutputFormat(OutputFormat.THREE_GPP);
 96             // 4. 设置输出文件的名字
 97                  mMediaRecorder.setOutputFile(getFilesDir()+"/record.3pg");
 98             // 5. 设置音频编码
 99                  mMediaRecorder.setAudioEncoder(AudioEncoder.DEFAULT);
100             // 6. 准备以下, 马上开始录音
101                  try {
102                     mMediaRecorder.prepare();
103                 } catch (IllegalStateException e) {
104                     // TODO Auto-generated catch block
105                     e.printStackTrace();
106                 } catch (IOException e) {
107                     // TODO Auto-generated catch block
108                     e.printStackTrace();
109                 }
110             // 7. 开始录音
111                  mMediaRecorder.start(); // 录音开始了...
112                  recordflag=true;
113
114                  System.out
115                         .println("MyPhoneRecordService.MyphoneStateListener.onCallStateChanged()正在通话");
116
117                 break;
118
119             default:
120                 break;
121             }
122         }
123     }
124 }
 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3     package="com.example.day16_03phonerecorder"
 4     android:versionCode="1"
 5     android:versionName="1.0" >
 6
 7     <uses-sdk
 8         android:minSdkVersion="14"
 9         android:targetSdkVersion="19" />
10     <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
11     <uses-permission android:name="android.permission.RECORD_AUDIO"/>
12
13     <application
14         android:allowBackup="true"
15         android:icon="@drawable/ic_launcher"
16         android:label="@string/app_name"
17         android:theme="@style/AppTheme" >
18         <activity
19             android:name=".MainActivity"
20             android:label="@string/app_name" >
21             <intent-filter>
22                 <action android:name="android.intent.action.MAIN" />
23
24                 <category android:name="android.intent.category.LAUNCHER" />
25             </intent-filter>
26         </activity>
27         <service  android:name=".MyPhoneRecordService"></service>
28     </application>
29
30 </manifest>

录音文件保存在/data/data/com.example.day16_03phonerecorder 下

时间: 2024-12-11 16:29:34

016_01Service的应用--拨打电话自动录音的相关文章

程序员也需要下点成本啊!!IOS input渲染 和android不同,以及自动添加拨打电话功能导致的问题

前几天公众号做完了给领导审查,因为这个公众号是在之前的1.0基础上开发的,所以没有在意兼容性问题[其实是忽略了IOS=.=原谅我的无知] 结果出问题了,有几个问题: 1. input渲染效果和andriod下不同 2. 长串数字会被渲染成电话号码 3.四位小数被渲染成超链接 1.input Android下设置没有圆角.无渐变,文字居中显示,完全没问题啊 到了IOS就变成这个鸟样子了!!这是什么鬼啊?? 原来iPhone上的safari解析input[type="submit"]和in

Android4.4KK下遮盖p-sensor拨打电话无法自动灭屏的问题分析

一.问题现象 先遮盖P-Sensor,然后拨打电话,90%的情况下屏幕无法自动关闭背光显示.关闭Settings->Display->Brightness->Auto,然后再执行以上操作则100%能够正常关闭背光显示. Platform:MT6732 Android版本:4.4KK BuildType:user 系统软件版本:SWA1H+UM 系统RAM:1GB 参考机行为:参考机1正常,参考机2正常 二.MTK平台Android的Sensor流程框架 整个流程框架主要分为6个部分: 1

手把手教你Android来去电通话自动录音的方法

我们在使用Android手机打电话时,有时可能会需要对来去电通话自动录音,本文就详细讲解实现Android来去电通话自动录音的方法,大家按照文中的方法编写程序就可以完成此功能. 来去电自动录音的关键在于如何监听手机电话状态的转变: 1)来电的状态的转换如下(红色标记是我们要用到的状态) 空闲(IDEL)——> 响铃(RINGING)——> 接听(ACTIVE)——> 挂断(经历DISCONNECTING——DISCONNECTED)——> 空闲(IDEL) 或者  空闲(IDEL)

html5 跳到拨打电话功能

在做一个微信的微网站中的一个便民服务电话功能的应用,用到移动web页面中列出的电话号码,点击需要实现调用通讯录,网页一键拨号的拨打电话功能. 如果需要在移动浏览器中实现拨打电话,发送email,美国服务器,调用sns等功能,移动手机WEB页面(HTML5)Javascript提供的接口是一个好办法. 采用url链接的方式,实现在Safari ios,香港服务器,Android 浏览器,webos 浏览器,塞班浏览器,IE,Operamini等主流浏览器,进行拨打电话功能. 1.最常用WEB页面J

html拨打电话

<%@ Page Language="C#" AutoEventWireup="true" Inherits="Jiubang.Wap.Page" Debug="true" ContentType="text/html; charset=UTF-8" %> <%@ Import Namespace="Jiubang.Wap"%> <%@ Import Nam

手机端网页拨打电话和发送短信技巧

1.设置<meta>标签 <meta name="format-detection" content="telephone=no">当该 HTML 页面在手机上浏览时,该标签用于指定是否将网页内容中的手机号码显示为拨号的超链接.在 iPhone 上默认值是:<meta name="format-detection" content="telephone=yes"/>如果你不希望手机自动将网页

Android 电话自动接听和挂断详解

1.通过aidl及反射实现挂断电话 具体分三步: (1)ITelephony.aidl ,必须新建com.android.internal.telephony包并放入ITelephony.aidl文件(构建后在gen下有ITelephony.java文件,这是aidl生成的接口),文件内容如下: package com.android.internal.telephony; interface ITelephony{ boolean endCall(); void answerRingingCa

手机网站 拨打电话

点击链接后,自动跳转到拨号界面,显示号码,并提示拨打 <a href="tel:18088888888">电话咨询</a> <a href="sms:18000000000">短信咨询</a> 4.使用wtai协议进行拨打电话. <a href="wtai://wp/mc;18888888888">拨打电话</a>   <a href="wtai://wp/a

Swift - 实现拨打电话

要实现打电话功能,最简单最直接的方式便是:直接跳到拨号界面 (注意:这个需要真机调试,模拟器无效果) 1 2 //自动打开拨号页面并自动拨打电话 UIApplication.sharedApplication().openURL(NSURL(string :"tel://123456")!)