Android Service 服务的应用之电话监听器以及短信监

Android service 服务的应用之电话监听器以及短信监听器。首先建立一个项目工程文件,如下图所示:

Android service 服务的应用之电话监听器以及短信监听器

首先在MainActivity.java文件启动电话和短信的界面,代码如下

package com.xunfang.wiretap;

import com.xunfang.observer.MyObserver;
import com.xunfang.services.PhoneService;

import android.support.v7.app.ActionBarActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;


public class MainActivity extends ActionBarActivity {

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //电话
        setContentView(R.layout.activity_main);
        Intent intent = new Intent(this,PhoneService.class);
        startService(intent);
        //短信
        Uri uri = Uri.parse("conten://sms");
        getContentResolver().registerContentObserver(uri, true, new MyObserver(this,new Handler()));
       
    }
    @Override
    public void onBackPressed() {
    }
}

然后进入电话管理服务界面PhoeService.java界面。代码如下

package com.xunfang.phoneservice;

import java.io.IOException;

import android.app.Service;
import android.content.Intent;
import android.media.MediaRecorder;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class PhoneService extends Service {

// 管理电话
    private TelephonyManager tm;

private MyListener listener;

// 创建一个收音机
    private MediaRecorder mr;

@Override
    public IBinder onBind(Intent intent) {
        return null;
    }

@Override
    public void onCreate() {
        super.onCreate();
        // 实例化
        tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);

// 监听电话的状态
        listener = new MyListener();
        // 注册监听者,监听电话的状态
        tm.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
    }

private class MyListener extends PhoneStateListener {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            super.onCallStateChanged(state, incomingNumber);

switch (state) {
            case TelephonyManager.CALL_STATE_IDLE: // 空闲状态
                System.out.println("电话空闲");
                if (mr != null) {
                    // 说明录音机停止录音了
                    mr.stop();
                    mr.release();
                    mr = null;
                }
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK: // 摘机状态(通话状态)
                System.out.println("通话状态");
                // 1.创建一个收音机
                mr = new MediaRecorder();
                // 2.设置音源
                mr.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL); // ZET
                // 3.设置录制音频的格式
                mr.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
                // 4设置音频的采样率
                mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
                // 5.设置录制的文件放置的位置
                mr.setOutputFile("/mnt/sdcard/xxx.avi");
                // 6.准备录制
                try {
                    mr.prepare();
                } catch( Exception e) {
                    e.printStackTrace();
                }
                // 7.开始录制
                mr.start();

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/ceaa425d3bdcfc01a4a126b255f4447a.html