服务监听打电话

主代码写

package com.example.phonerecorder;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
    public void start(View v){
        //开启服务通过intent
    Intent intent = new Intent(this,Recordservice.class);   
    startService(intent);
    }
    //停止服务通过intent
public void stop(View v){
    Intent intent = new Intent(this,Recordservice.class);   
    stopService(intent);
    }
}

Recordservice类要继承Service成为一个服务类

由于是服务所以要在清单中设置

<service android:name=".Recordservice"></service>

package com.example.phonerecorder;

import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.util.Log;

public class Recordservice extends Service {

    @Override
    public IBinder onBind(Intent intent) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate() {
        Log.e("tag", "开启");
        // TODO Auto-generated method stub
        super.onCreate();
        //创建一个电话管理器的对象(通过这个对象可以监听听电话的状态)
        TelephonyManager manager = (TelephonyManager) 
                getSystemService(Context.TELEPHONY_SERVICE);//传入一个电话服务
    //调用电话管理器的listen方法:注册监听
        //参数 : 1监听器   2要监听打电话的状态
        Listener listener = new Listener();
        manager.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);
    }
    @Override
    public void onDestroy() {
        // TODO Auto-generated method stub
        super.onDestroy();
        Log.e("tag", "服务被销毁");
    }
    class Listener extends PhoneStateListener{
        //状态改变调用
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            // TODO Auto-generated method stub
            super.onCallStateChanged(state, incomingNumber);
            switch (state) {
            
            case TelephonyManager.CALL_STATE_RINGING:
                Log.e("tag","响铃"+incomingNumber+"准备一个录音机");
                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                Log.e("tag","接电话了"+incomingNumber+"开始录音");
                break;
            case TelephonyManager.CALL_STATE_IDLE:
                Log.e("tag","空闲状态"+"录音结束");
                break;
            default:
                break;
            }
            //录音需要用户的权限,在清单中添加READ_PHONE_STATE:读音状态
//          <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>  
        }
    }
}

效果图

image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 179,973评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,953评论 19 139
  • 凡人——教人掠夺 智者——教人创造 圣贤——教人发现
    慕溪2018阅读 134评论 0 0
  • 人 为什么会长痘痘? 痘痘 为什么会长在脸上? 不好看不说 还疼!!! 疼不说,还不能扣 扣了就留疤… 我生长在草...
    霏霏爱学阅读 1,670评论 0 0
  • 文/女侠 -01-前几天我一直在想,我既然不打算考研,那大三这半年可能是我这辈子最后的学生生涯了。 我质问自己,我...
    这是女侠阅读 806评论 0 0

友情链接更多精彩内容