android服务之录音功能
该服务的作用是当打电话时自动录音。
布局文件
布局文件中开启录音服务
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical" android:layout_width="match_parent"android:layout_height="match_parent"><Buttonandroid:id="@+id/start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textSize="18sp"android:text="开始录音"android:onClick="click"/> </LinearLayout>
Activity
设置监听器,启动一个服务
package xidian.dy.com.chujia;import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.Toast;public class MainActivity extends AppCompatActivity {Intent service;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);}public void click(View v){Toast.makeText(this,"开启服务",Toast.LENGTH_SHORT).show();service = new Intent(this, MyService.class);startService(service);}}
服务
在服务中定义内部类来监听电话状态
package xidian.dy.com.chujia;import android.app.Service; import android.content.Intent; import android.media.MediaRecorder; import android.os.Environment; import android.os.IBinder; import android.support.annotation.Nullable; import android.telephony.PhoneStateListener; import android.telephony.TelephonyManager; import android.util.Log;import java.io.IOException;/*** Created by dy on 2016/7/12.*/ public class MyService extends Service {TelephonyManager tm;@Overridepublic void onCreate() {super.onCreate();//获取电话管理器tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);//对感兴趣的事件进行监听,传入回调函数tm.listen(new MyListener(),PhoneStateListener.LISTEN_CALL_STATE);}class MyListener extends PhoneStateListener{MediaRecorder mRecorder;//一旦电话状态改变该方法被调用 @Overridepublic void onCallStateChanged(int state, String incomingNumber) {super.onCallStateChanged(state, incomingNumber);switch (state){//电话处于空闲状态停止录音case TelephonyManager.CALL_STATE_IDLE:if(mRecorder != null){mRecorder.stop();mRecorder.release();mRecorder = null;}break;//电话处于响铃状态case TelephonyManager.CALL_STATE_RINGING:mRecorder = new MediaRecorder();mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mRecorder.setOutputFile(Environment.getExternalStorageDirectory().toString() + "/record.3gp");mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);try {mRecorder.prepare();} catch (IOException e) {Log.e(this.getClass().getName(), "prepare() failed");}break;//电话处于摘机状态case TelephonyManager.CALL_STATE_OFFHOOK:if(mRecorder != null){mRecorder.start();}break;}}}@Nullable@Overridepublic IBinder onBind(Intent intent) {return null;} }
清单文件
在清单文件中需要获取相应的权限并注册服务
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="xidian.dy.com.chujia"><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.RECORD_AUDIO" /><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"android:label="主界面"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><service android:name=".MyService" /> </application> </manifest>
转载于:https://www.cnblogs.com/xidongyu/p/5665245.html
android服务之录音功能相关推荐
- android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...
Android服务端获取json解析显示在客户端上面 Android从服务端获取json解析显示在客户端上面 首先说一下Json数据的最基本的特点,Json数据是一系列的键值对的集合,和XML数据来比 ...
- erlang-百度云推送Android服务端功能实现-erlang
百度云推送官方地址http://developer.baidu.com/wiki/index.php?title=docs/cplat/push 简单的介绍下原理: 百度云推送支持IOS和Androi ...
- Android服务一 创建启动服务
若要学习创建绑定服务,请查看下篇Android服务二 创建绑定服务 启动服务 基于Service package service;import android.app.Service; import ...
- Qt创建Android服务
Qt创建Android服务 创建Android服务 创建Android服务 从Qt 5.7开始,您可以使用Qt创建Android服务.服务是在后台运行的组件,因此它没有用户界面.执行长期操作(例如记录 ...
- Android 服务入门
前言:硬着头皮把数据库SQLite看完了,接下来就是android服务了,因为自己本身就是菜鸟,所以呢,也只是做做笔记,技术上的东西就别指望我了. 1.什么是服务呢?举个例子,百度地图,美团外卖,OF ...
- android.os.binderproxy cannot be cast to,Android服务android.os.BinderProxy错误
我一直在尝试使此android服务正常工作,但我不知道为什么会收到此错误. 05-13 12:13:36.203: ERROR/dalvikvm(7782): could not disable co ...
- android 服务自动结束,Android服务自动停止
我正在制作一个带有闹钟功能的应用程序.我正在使用这种服务,不断检查设备的当前时间与我的数据库中的时间.Android服务自动停止 我的问题是,如果应用程序从后台删除或设备是rebooted,此serv ...
- Android服务函数远程调用源码分析
在Android服务查询完整过程源码分析中介绍了客户进程向ServiceManager进程查询服务的完整过程,ServiceManager进程根据服务名称在自身维护的服务链表中查找ServiceMan ...
- Android服务查询完整过程源码分析
Android服务注册完整过程源码分析中从上到下详细分析了Android系统的服务注册过程,本文同样针对AudioService服务来介绍Android服务的查询过程. 客户端进程数据发送过程 pri ...
最新文章
- 上传图片,多图上传,预览功能,js原生无依赖
- python游戏代码五子棋_用20行Python代码实现2048小游戏,你会吗?
- JAVA 和.NET在安全功能的比较
- 使用Javaweb实现在线调查问卷系统
- 手动安装sys驱动文件_海龙工具的正确安装及卸载方法,自己动手丰衣足食
- python之sys模块详解
- java微信内h5调起支付_java微信支付--------公众号内H5调起支付
- spring教程笔记5
- 怎么在页面关闭时执行代码
- 黑群晖二合一安装不了套件_黑群晖刷机教程
- LVGL v8.1.0 lv_table 内存泄漏问题
- 谷歌浏览器屏蔽百度热点搜索
- Linux 使用系统调用进行文件读写
- 程序员如何营销自己?
- 什么是云监控,云监控工具
- 清明2013——祭父
- 微型计算机指的是重量轻,计算机与信息技术概述(答案)
- DMIPS, TOPS, FLOPS, FLOPs, GMACs, FMA
- esp32例子初始化流程
- 2019年测试行业展望